{"version":3,"sources":["webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/node_modules/resolve-pathname/index.js","webpack:///./node_modules/react-router/node_modules/value-equal/index.js","webpack:///./node_modules/react-router/node_modules/history/es/LocationUtils.js","webpack:///./node_modules/react-router/node_modules/history/es/PathUtils.js","webpack:///./node_modules/react-router/node_modules/history/es/DOMUtils.js","webpack:///./node_modules/react-router/node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/react-router/node_modules/history/es/createHashHistory.js","webpack:///./node_modules/react-router/node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/react-router/es/generatePath.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./app/javascript/mastodon/features/ui/components/column_loading.js","webpack:///./app/javascript/mastodon/features/ui/components/bundle_column_error.js","webpack:///./app/javascript/mastodon/features/ui/util/react_router_helpers.js","webpack:///./app/javascript/mastodon/features/ui/components/upload_area.js","webpack:///./app/javascript/mastodon/features/ui/components/drawer_loading.js","webpack:///./app/javascript/mastodon/components/server_banner.js","webpack:///./app/javascript/mastodon/features/ui/components/compose_panel.js","webpack:///./app/javascript/mastodon/components/logo.js","webpack:///./app/javascript/mastodon/features/ui/components/disabled_account_banner.js","webpack:///./app/javascript/mastodon/features/ui/components/follow_requests_column_link.js","webpack:///./app/javascript/mastodon/features/ui/components/list_panel.js","webpack:///./app/javascript/mastodon/features/ui/components/notifications_counter_icon.js","webpack:///./app/javascript/mastodon/features/ui/components/sign_in_banner.js","webpack:///./app/javascript/mastodon/features/account/components/featured_tags.js","webpack:///./app/javascript/mastodon/features/account/containers/featured_tags_container.js","webpack:///./app/javascript/mastodon/features/account/navigation.js","webpack:///./app/javascript/mastodon/components/navigation_portal.js","webpack:///./app/javascript/mastodon/features/ui/components/navigation_panel.js","webpack:///./app/javascript/mastodon/features/ui/components/columns_area.js","webpack:///./app/javascript/mastodon/features/ui/containers/columns_area_container.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/components/header.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/index.js","webpack:///./app/javascript/mastodon/actions/onboarding.js","webpack:///./app/javascript/mastodon/features/ui/components/header.js","webpack:///./app/javascript/mastodon/features/ui/index.js","webpack:///./app/javascript/mastodon/components/error_boundary.js","webpack:///./app/javascript/mastodon/containers/mastodon.js","webpack:///./app/javascript/mastodon/main.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/react-router/node_modules/history/node_modules/warning/browser.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-js/stacktrace.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./app/javascript/mastodon/performance.js"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_React$Component","Router","_temp","_this","this","_len","args","Array","_key","apply","concat","state","match","computeMatch","props","history","location","pathname","subClass","superClass","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","_inherits","getChildContext","router","context","route","path","url","params","isExact","componentWillMount","_this2","_props","children","Children","count","unlisten","listen","setState","componentWillReceiveProps","nextProps","componentWillUnmount","render","only","Component","propTypes","object","isRequired","node","contextTypes","childContextTypes","BrowserRouter","createElement","isAbsolute","charAt","spliceOne","list","index","k","n","pop","to","from","undefined","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","last","up","part","unshift","result","join","substr","_typeof","Symbol","iterator","obj","valueEqual","a","b","isArray","every","item","aType","aValue","valueOf","bValue","aKeys","keys","bKeys","currentLocation","search","hash","hashIndex","indexOf","searchIndex","parsePath","decodeURI","e","URIError","window","document","patternCache","cacheCount","pattern","cacheKey","cache","compiledGenerator","compile","generator","pretty","Redirect","isStatic","staticContext","perform","componentDidMount","componentDidUpdate","prevProps","prevTo","nextTo","computeTo","_ref","computedMatch","push","replace","bool","string","oneOfType","defaultProps","shape","func","ColumnLoading","ImmutablePureComponent","title","icon","multiColumn","focusable","placeholder","className","PropTypes","GIF","React","PureComponent","hovering","handleMouseEnter","animate","handleMouseLeave","src","staticSrc","alt","role","onMouseEnter","onMouseLeave","autoPlayGif","CopyButton","copied","handleClick","navigator","clipboard","writeText","timeout","setTimeout","clearTimeout","onClick","id","defaultMessage","BundleColumnError","injectIntl","handleRetry","onRetry","errorType","stacktrace","body","bindToDocument","Link","classNames","Helmet","name","content","WrappedSwitch","Switch","map","child","cloneElement","WrappedRoute","hasError","renderComponent","component","componentParams","fetchComponent","loading","renderLoading","error","renderError","componentDidCatch","StackTrace","fromError","then","stackframes","toString","frame","catch","err","console","rest","Route","UploadArea","handleKeyUp","keyCode","active","preventDefault","stopPropagation","onClose","addEventListener","removeEventListener","defaultStyle","backgroundOpacity","backgroundScale","style","spring","stiffness","damping","visibility","opacity","transform","DrawerLoading","messages","defineMessages","aboutActiveUsers","ServerBanner","connect","server","getIn","dispatch","fetchServer","intl","isLoading","get","values","domain","mastodon","href","blurhash","width","size","formatMessage","ComposePanel","onFocus","changeComposing","onBlur","mountCompose","unmountCompose","signedIn","identity","openInRoute","Fragment","singleColumn","Logo","viewBox","xlinkHref","logoutMessage","logoutConfirm","DisabledAccountBanner","disabledAcct","disabledAccountId","movedToAcct","movedToAccountId","onLogout","openModal","message","confirm","closeWhenConfirm","onConfirm","logOut","handleLogOutClick","disabledAccountLink","disabledAccount","movedToAccount","includes","type","text","FollowRequestsColumnLink","ImmutableList","fetchFollowRequests","transparent","getOrderedLists","createSelector","lists","toList","filter","sort","localeCompare","take","ListPanel","withRouter","fetchLists","isEmpty","strict","ImmutablePropTypes","IconWithBadge","SignInBanner","useDispatch","openClosedRegistrationsModal","useCallback","signupButton","registrationsOpen","lastStatusAt","empty","FeaturedTags","account","featuredTags","dangerouslySetInnerHTML","__html","featuredTag","uses","withGraph","description","date","formatDate","month","day","tagged","getAccount","makeGetAccount","accountId","AccountNavigation","acct","normalizeForLookup","DefaultNavigation","showTrends","NavigationPortal","exact","home","notifications","explore","local","federated","direct","favourites","bookmarks","preferences","followsAndFollowers","about","NavigationPanel","timelinePreview","componentMap","Compose","HomeTimeline","Notifications","PublicTimeline","CommunityTimeline","HashtagTimeline","DirectTimeline","FavouritedStatuses","BookmarkedStatuses","ListTimeline","Directory","ColumnsArea","mediaQuery","matchMedia","renderComposePanel","matches","handleLayoutChange","handleWheel","_interruptScrollAnimation","setRef","columnId","supportsPassiveEvents","passive","addListener","isRtlLayout","getElementsByTagName","classList","contains","componentWillUpdate","removeListener","handleLayouteChange","handleChildrenContentChange","modifier","scrollRight","scrollWidth","innerWidth","columns","isModalOpen","ref","column","toJS","other","SpecificComponent","modalType","forwardRef","close","Header","statusId","PictureInPicture","handleClose","removePictureInPicture","currentTime","player","volume","muted","autoPlay","inline","alwaysVisible","poster","backgroundColor","foregroundColor","accentColor","INTRODUCTION_VERSION","Account","me","beforeUnload","keyMap","help","new","forceNew","toggleComposeSpoilers","focusColumn","reply","favourite","boost","mention","open","openProfile","moveDown","moveUp","back","goToHome","goToNotifications","goToLocal","goToFederated","goToDirect","goToStart","goToFavourites","goToPinned","goToProfile","goToBlocked","goToMuted","goToRequests","toggleHidden","toggleSensitive","openMedia","SwitchingColumnsArea","c","mobile","toggle","redirect","singleUserMode","owner","initialState","accounts","username","GettingStarted","KeyboardShortcuts","About","PrivacyPolicy","PinnedStatuses","FollowRecommendations","Explore","AccountTimeline","withReplies","Followers","Following","AccountGallery","Status","Reblogs","Favourites","FollowRequests","Blocks","DomainBlocks","Mutes","Lists","UI","layout","isComposing","hasComposingText","trim","hasMediaAttachments","canUploadMore","some","x","dropdownMenuIsOpen","firstLaunch","draggingOver","handleBeforeUnload","synchronouslySubmitMarkers","returnValue","handleWindowFocus","focusApp","submitMarkers","immediate","handleWindowBlur","unfocusApp","handleDragEnter","dragTargets","dataTransfer","types","handleDragOver","dataTransferIsText","dropEffect","handleDrop","files","uploadCompose","handleDragLeave","el","closeUploadModal","handleServiceWorkerPostMessage","data","warn","clearHeight","trailing","handleResize","layoutFromWindow","cancel","changeLayout","handleHotkeyNew","element","querySelector","focus","handleHotkeySearch","handleHotkeyForceNew","resetCompose","handleHotkeyToggleComposeSpoilers","changeComposeSpoilerness","handleHotkeyFocusColumn","container","status","scrollTop","offsetTop","scrollIntoView","handleHotkeyBack","goBack","setHotkeysRef","hotkeys","handleHotkeyToggleHelp","handleHotkeyGoToHome","handleHotkeyGoToNotifications","handleHotkeyGoToLocal","handleHotkeyGoToFederated","handleHotkeyGoToDirect","handleHotkeyGoToStart","handleHotkeyGoToFavourites","handleHotkeyGoToPinned","handleHotkeyGoToProfile","handleHotkeyGoToBlocked","handleHotkeyGoToMuted","handleHotkeyGoToRequests","handleDragEnd","serviceWorker","changeSetting","saveSettings","fetchMarkers","expandHomeTimeline","expandNotifications","__mousetrap__","stopCallback","tagName","handlers","attach","focused","pointerEvents","ErrorBoundary","errorMessage","stackTrace","mappedStackTrace","componentStack","handleCopyStackTrace","textarea","contents","textContent","position","appendChild","select","execCommand","removeChild","info","stack","sf","likelyBrowserAddonIssue","version","source_url","rel","localeData","getLocale","addLocaleData","siteTitle","store","configureStore","hydrateAction","hydrateStore","fetchCustomEmojis","Mastodon","meta","disabled_account_id","accessToken","access_token","permissions","disconnect","connectUserStream","shouldUpdateScroll","prevRouterProps","mastodonModalKey","locale","defaultTitle","titleTemplate","perf","require","main","start","ready","async","mountNode","getElementById","JSON","parse","getAttribute","ReactDOM","setupBrowserNotifications","Workbox","wb","registration","register","registerPushNotifications","stop","exports","getArg","aArgs","aName","aDefaultValue","Error","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","host","port","urlGenerate","aParsedUrl","normalize","aPath","parts","splice","aRoot","aPathUrl","aRootUrl","joined","relative","level","lastIndexOf","slice","supportsNullProto","s","isProtoString","charCodeAt","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","module","_isNumber","isNaN","parseFloat","isFinite","_capitalize","str","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","arrayProps","objectProps","StackFrame","getArgs","setArgs","v","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","exec","Boolean","j","Number","String","ErrorStackParser","StackGenerator","StackTraceGPS","_options","stackframe","sourceCache","_generateError","_merge","first","second","forEach","prop","_isShapedLikeParsableError","_filtered","opts","generateArtificially","getSync","backtrace","gps","Promise","resolve","all","resolveOriginal","pinpoint","bind","stackFrames","instrument","fn","callback","errback","thisArg","__stacktraceOriginalFn","instrumented","deinstrument","report","errorMsg","requestOptions","reject","req","XMLHttpRequest","onerror","onreadystatechange","readyState","responseText","setRequestHeader","headers","header","reportPayload","send","stringify","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","file","eachMapping","mapping","newMapping","generated","line","original","addMapping","sources","sourceFile","sourceContentFor","setSourceContent","_validateMapping","has","add","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","toArray","len","encode","_generateSourcesContent","aSources","aSourceRoot","toJSON","names","sourcesContent","base64","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","_array","_set","fromArray","aArray","aAllowDuplicates","set","getOwnPropertyNames","sStr","isDuplicate","idx","at","aIdx","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","maxStackSize","curr","callee","test","RegExp","$1","caller","SourceMap","_xdr","_atob","b64str","atob","_parseJson","_findFunctionName","syntaxes","code","maxLines","Math","min","commentPos","m","_ensureSupportedEnvironment","defineProperty","_ensureStackFrameIsLegit","_findSourceMappingURL","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_extractLocationInfoFromSourceMapSource","sourceMapConsumer","loc","mappedSource","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","method","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","SourceMapConsumer","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","SourceNode","intToCharMap","number","charCode","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","lastColumn","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","bias","generatedPosition","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","floor","swap","ary","y","doQuickSort","comparator","r","low","high","round","random","pivot","q","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","chunk","prepend","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","process"],"mappings":"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","file":"js/153-c1b3066c820d0c5de2e2.chunk.js","sourcesContent":["var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n function Router() {\n var _temp, _this, _ret;\n _classCallCheck(this, Router);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n Router.prototype.render = function render() {\n var children = this.props.children;\n return children ? React.Children.only(children) : null;\n };\n return Router;\n}(React.Component);\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\nexport default Router;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n function BrowserRouter() {\n var _temp, _this, _ret;\n _classCallCheck(this, BrowserRouter);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n BrowserRouter.prototype.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n return BrowserRouter;\n}(React.Component);\nexport default BrowserRouter;","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n if (!fromParts.length) return '/';\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nfunction valueEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n if (aType !== bType) return false;\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n return false;\n}\nexport default valueEqual;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n if (key) location.key = key;\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n return location;\n};\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n return path;\n};","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n invariant(canUseDOM, 'Browser history needs a DOM');\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n };\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n var transitionManager = createTransitionManager();\n var setState = function setState(nextState) {\n _extends(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n };\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n var forceNextPop = false;\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n window.location.href = href;\n }\n });\n };\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n window.location.replace(href);\n }\n });\n };\n var go = function go(n) {\n globalHistory.go(n);\n };\n var goBack = function goBack() {\n return go(-1);\n };\n var goForward = function goForward() {\n return go(1);\n };\n var listenerCount = 0;\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n var isBlocked = false;\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n };\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n};\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\nvar HashChangeEvent = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n invariant(canUseDOM, 'Hash history needs a DOM');\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n };\n var transitionManager = createTransitionManager();\n var setState = function setState(nextState) {\n _extends(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n var forceNextPop = false;\n var ignorePath = null;\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n };\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n setState();\n }\n });\n };\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n };\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n globalHistory.go(n);\n };\n var goBack = function goBack() {\n return go(-1);\n };\n var goForward = function goForward() {\n return go(1);\n };\n var listenerCount = 0;\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n var isBlocked = false;\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n };\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n};\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n var setState = function setState(nextState) {\n _extends(history, nextState);\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n };\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n var goBack = function goBack() {\n return go(-1);\n };\n var goForward = function goForward() {\n return go(1);\n };\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n};\nexport default createMemoryHistory;","import pathToRegexp from \"path-to-regexp\";\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n if (cache[pattern]) return cache[pattern];\n var compiledGenerator = pathToRegexp.compile(pattern);\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, {\n pretty: true\n });\n};\nexport default generatePath;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n function Redirect() {\n _classCallCheck(this, Redirect);\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n if (this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n this.perform();\n };\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n return to;\n };\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n var to = this.computeTo(this.props);\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n Redirect.prototype.render = function render() {\n return null;\n };\n return Redirect;\n}(React.Component);\nRedirect.propTypes = {\n computedMatch: PropTypes.object,\n // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\nexport default Redirect;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../components/column';\nimport ColumnHeader from '../../../components/column_header';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class ColumnLoading extends ImmutablePureComponent {\n\n static propTypes = {\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n icon: PropTypes.string,\n multiColumn: PropTypes.bool,\n };\n\n static defaultProps = {\n title: '',\n icon: '',\n };\n\n render() {\n let { title, icon, multiColumn } = this.props;\n\n return (\n \n \n
\n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport Column from 'mastodon/components/column';\nimport Button from 'mastodon/components/button';\nimport { Helmet } from 'react-helmet';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { autoPlayGif } from 'mastodon/initial_state';\n\nclass GIF extends React.PureComponent {\n\n static propTypes = {\n src: PropTypes.string.isRequired,\n staticSrc: PropTypes.string.isRequired,\n className: PropTypes.string,\n animate: PropTypes.bool,\n };\n\n static defaultProps = {\n animate: autoPlayGif,\n };\n\n state = {\n hovering: false,\n };\n\n handleMouseEnter = () => {\n const { animate } = this.props;\n\n if (!animate) {\n this.setState({ hovering: true });\n }\n }\n\n handleMouseLeave = () => {\n const { animate } = this.props;\n\n if (!animate) {\n this.setState({ hovering: false });\n }\n }\n\n render () {\n const { src, staticSrc, className, animate } = this.props;\n const { hovering } = this.state;\n\n return (\n \n );\n }\n\n}\n\nclass CopyButton extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n state = {\n copied: false,\n };\n\n handleClick = () => {\n const { value } = this.props;\n navigator.clipboard.writeText(value);\n this.setState({ copied: true });\n this.timeout = setTimeout(() => this.setState({ copied: false }), 700);\n }\n\n componentWillUnmount () {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n render () {\n const { children } = this.props;\n const { copied } = this.state;\n\n return (\n \n );\n }\n\n}\n\nexport default @injectIntl\nclass BundleColumnError extends React.PureComponent {\n\n static propTypes = {\n errorType: PropTypes.oneOf(['routing', 'network', 'error']),\n onRetry: PropTypes.func,\n intl: PropTypes.object.isRequired,\n multiColumn: PropTypes.bool,\n stacktrace: PropTypes.string,\n };\n\n static defaultProps = {\n errorType: 'routing',\n };\n\n handleRetry = () => {\n const { onRetry } = this.props;\n\n if (onRetry) {\n onRetry();\n }\n }\n\n render () {\n const { errorType, multiColumn, stacktrace } = this.props;\n\n let title, body;\n\n switch(errorType) {\n case 'routing':\n title = ;\n body = ;\n break;\n case 'network':\n title = ;\n body = ;\n break;\n case 'error':\n title = ;\n body = ;\n break;\n }\n\n return (\n \n
\n \n\n
\n

{title}

\n

{body}

\n\n
\n {errorType === 'network' && }\n {errorType === 'error' && }\n \n
\n
\n
\n\n \n \n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Route } from 'react-router-dom';\nimport StackTrace from 'stacktrace-js';\nimport ColumnLoading from '../components/column_loading';\nimport BundleColumnError from '../components/bundle_column_error';\nimport BundleContainer from '../containers/bundle_container';\n\n// Small wrapper to pass multiColumn to the route components\nexport class WrappedSwitch extends React.PureComponent {\n\n render () {\n const { multiColumn, children } = this.props;\n\n return (\n \n {React.Children.map(children, child => React.cloneElement(child, { multiColumn }))}\n \n );\n }\n\n}\n\nWrappedSwitch.propTypes = {\n multiColumn: PropTypes.bool,\n children: PropTypes.node,\n};\n\n// Small Wrapper to extract the params from the route and pass\n// them to the rendered component, together with the content to\n// be rendered inside (the children)\nexport class WrappedRoute extends React.Component {\n\n static propTypes = {\n component: PropTypes.func.isRequired,\n content: PropTypes.node,\n multiColumn: PropTypes.bool,\n componentParams: PropTypes.object,\n };\n\n static defaultProps = {\n componentParams: {},\n };\n\n static getDerivedStateFromError () {\n return {\n hasError: true,\n };\n };\n\n state = {\n hasError: false,\n stacktrace: '',\n };\n\n componentDidCatch (error) {\n StackTrace.fromError(error).then(stackframes => {\n this.setState({ stacktrace: error.toString() + '\\n' + stackframes.map(frame => frame.toString()).join('\\n') });\n }).catch(err => {\n console.error(err);\n });\n }\n\n renderComponent = ({ match }) => {\n const { component, content, multiColumn, componentParams } = this.props;\n const { hasError, stacktrace } = this.state;\n\n if (hasError) {\n return (\n \n );\n }\n\n return (\n \n {Component => {content}}\n \n );\n }\n\n renderLoading = () => {\n const { multiColumn } = this.props;\n\n return ;\n }\n\n renderError = (props) => {\n return ;\n }\n\n render () {\n const { component: Component, content, ...rest } = this.props;\n\n return ;\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadArea extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n onClose: PropTypes.func,\n };\n\n handleKeyUp = (e) => {\n const keyCode = e.keyCode;\n if (this.props.active) {\n switch(keyCode) {\n case 27:\n e.preventDefault();\n e.stopPropagation();\n this.props.onClose();\n break;\n }\n }\n }\n\n componentDidMount () {\n window.addEventListener('keyup', this.handleKeyUp, false);\n }\n\n componentWillUnmount () {\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n render () {\n const { active } = this.props;\n\n return (\n \n {({ backgroundOpacity, backgroundScale }) => (\n
\n
\n
\n
\n
\n
\n )}\n \n );\n }\n\n}\n","import React from 'react';\n\nconst DrawerLoading = () => (\n
\n
\n
\n
\n
\n);\n\nexport default DrawerLoading;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { fetchServer } from 'mastodon/actions/server';\nimport ShortNumber from 'mastodon/components/short_number';\nimport Skeleton from 'mastodon/components/skeleton';\nimport Account from 'mastodon/containers/account_container';\nimport { domain } from 'mastodon/initial_state';\nimport Image from 'mastodon/components/image';\nimport { Link } from 'react-router-dom';\n\nconst messages = defineMessages({\n aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' },\n});\n\nconst mapStateToProps = state => ({\n server: state.getIn(['server', 'server']),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass ServerBanner extends React.PureComponent {\n\n static propTypes = {\n server: PropTypes.object,\n dispatch: PropTypes.func,\n intl: PropTypes.object,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchServer());\n }\n\n render () {\n const { server, intl } = this.props;\n const isLoading = server.get('isLoading');\n\n return (\n
\n
\n {domain}, mastodon: Mastodon }} />\n
\n\n \n\n
\n {isLoading ? (\n <>\n \n
\n \n
\n \n \n ) : server.get('description')}\n
\n\n
\n
\n

\n\n \n
\n\n
\n

\n\n {isLoading ? (\n <>\n \n
\n \n \n ) : (\n <>\n \n
\n \n \n )}\n
\n
\n\n
\n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport SearchContainer from 'mastodon/features/compose/containers/search_container';\nimport ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container';\nimport NavigationContainer from 'mastodon/features/compose/containers/navigation_container';\nimport LinkFooter from './link_footer';\nimport ServerBanner from 'mastodon/components/server_banner';\nimport { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose';\n\nexport default @connect()\nclass ComposePanel extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n };\n\n onFocus = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(true));\n }\n\n onBlur = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(false));\n }\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(mountCompose());\n }\n\n componentWillUnmount () {\n const { dispatch } = this.props;\n dispatch(unmountCompose());\n }\n\n render() {\n const { signedIn } = this.context.identity;\n\n return (\n
\n \n\n {!signedIn && (\n \n \n
\n \n )}\n\n {signedIn && (\n \n \n \n \n )}\n\n \n
\n );\n }\n\n}\n","import React from 'react';\n\nconst Logo = () => (\n \n Mastodon\n \n \n);\n\nexport default Logo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\nimport { logOut } from 'mastodon/utils/log_out';\n\nconst messages = defineMessages({\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = (state) => ({\n disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']),\n movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined,\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onLogout () {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n closeWhenConfirm: false,\n onConfirm: () => logOut(),\n }));\n },\n});\n\nexport default @injectIntl\n@connect(mapStateToProps, mapDispatchToProps)\nclass DisabledAccountBanner extends React.PureComponent {\n\n static propTypes = {\n disabledAcct: PropTypes.string.isRequired,\n movedToAcct: PropTypes.string,\n onLogout: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleLogOutClick = e => {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.onLogout();\n\n return false;\n }\n\n render () {\n const { disabledAcct, movedToAcct } = this.props;\n\n const disabledAccountLink = (\n \n {disabledAcct}@{domain}\n \n );\n\n return (\n
\n

\n {movedToAcct ? (\n {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@${domain}`},\n }}\n />\n ) : (\n \n )}\n

\n \n \n \n \n
\n );\n }\n\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fetchFollowRequests } from 'mastodon/actions/accounts';\nimport { connect } from 'react-redux';\nimport ColumnLink from 'mastodon/features/ui/components/column_link';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\nimport { List as ImmutableList } from 'immutable';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n});\n\nconst mapStateToProps = state => ({\n count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,\n});\n\nexport default @injectIntl\n@connect(mapStateToProps)\nclass FollowRequestsColumnLink extends React.Component {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n count: PropTypes.number.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n\n dispatch(fetchFollowRequests());\n }\n\n render () {\n const { count, intl } = this.props;\n\n if (count === 0) {\n return null;\n }\n\n return (\n }\n text={intl.formatMessage(messages.text)}\n />\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createSelector } from 'reselect';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { fetchLists } from 'mastodon/actions/lists';\nimport ColumnLink from './column_link';\n\nconst getOrderedLists = createSelector([state => state.get('lists')], lists => {\n if (!lists) {\n return lists;\n }\n\n return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title'))).take(4);\n});\n\nconst mapStateToProps = state => ({\n lists: getOrderedLists(state),\n});\n\nexport default @withRouter\n@connect(mapStateToProps)\nclass ListPanel extends ImmutablePureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n lists: ImmutablePropTypes.list,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchLists());\n }\n\n render () {\n const { lists } = this.props;\n\n if (!lists || lists.isEmpty()) {\n return null;\n }\n\n return (\n
\n
\n\n {lists.map(list => (\n \n ))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\n\nconst mapStateToProps = state => ({\n count: state.getIn(['notifications', 'unread']),\n id: 'bell',\n});\n\nexport default connect(mapStateToProps)(IconWithBadge);\n","import React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { registrationsOpen } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst SignInBanner = () => {\n const dispatch = useDispatch();\n\n const openClosedRegistrationsModal = useCallback(\n () => dispatch(openModal('CLOSED_REGISTRATIONS')),\n [dispatch],\n );\n\n let signupButton;\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n return (\n
\n

\n \n {signupButton}\n
\n );\n};\n\nexport default SignInBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport Hashtag from 'mastodon/components/hashtag';\n\nconst messages = defineMessages({\n lastStatusAt: { id: 'account.featured_tags.last_status_at', defaultMessage: 'Last post on {date}' },\n empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' },\n});\n\nexport default @injectIntl\nclass FeaturedTags extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n featuredTags: ImmutablePropTypes.list,\n tagged: PropTypes.string,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, featuredTags, intl } = this.props;\n\n if (!account || account.get('suspended') || featuredTags.isEmpty()) {\n return null;\n }\n\n return (\n
\n

}} />

\n\n {featuredTags.take(3).map(featuredTag => (\n 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)}\n />\n ))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport FeaturedTags from '../components/featured_tags';\nimport { makeGetAccount } from 'mastodon/selectors';\nimport { List as ImmutableList } from 'immutable';\n\nconst mapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n return (state, { accountId }) => ({\n account: getAccount(state, accountId),\n featuredTags: state.getIn(['user_lists', 'featured_tags', accountId, 'items'], ImmutableList()),\n });\n};\n\nexport default connect(mapStateToProps)(FeaturedTags);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport FeaturedTags from 'mastodon/features/account/containers/featured_tags_container';\nimport { normalizeForLookup } from 'mastodon/reducers/accounts_map';\n\nconst mapStateToProps = (state, { match: { params: { acct } } }) => {\n const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]);\n\n if (!accountId) {\n return {\n isLoading: true,\n };\n }\n\n return {\n accountId,\n isLoading: false,\n };\n};\n\nexport default @connect(mapStateToProps)\nclass AccountNavigation extends React.PureComponent {\n\n static propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n acct: PropTypes.string,\n tagged: PropTypes.string,\n }).isRequired,\n }).isRequired,\n\n accountId: PropTypes.string,\n isLoading: PropTypes.bool,\n };\n\n render () {\n const { accountId, isLoading, match: { params: { tagged } } } = this.props;\n\n if (isLoading) {\n return null;\n }\n\n return (\n <>\n
\n \n \n );\n }\n\n}\n","import React from 'react';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { showTrends } from 'mastodon/initial_state';\nimport Trends from 'mastodon/features/getting_started/containers/trends_container';\nimport AccountNavigation from 'mastodon/features/account/navigation';\n\nconst DefaultNavigation = () => (\n <>\n {showTrends && (\n <>\n
\n \n \n )}\n \n);\n\nexport default @withRouter\nclass NavigationPortal extends React.PureComponent {\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport Logo from 'mastodon/components/logo';\nimport { timelinePreview, showTrends } from 'mastodon/initial_state';\nimport ColumnLink from './column_link';\nimport DisabledAccountBanner from './disabled_account_banner';\nimport FollowRequestsColumnLink from './follow_requests_column_link';\nimport ListPanel from './list_panel';\nimport NotificationsCounterIcon from './notifications_counter_icon';\nimport SignInBanner from './sign_in_banner';\nimport NavigationPortal from 'mastodon/components/navigation_portal';\n\nconst messages = defineMessages({\n home: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n explore: { id: 'explore.title', defaultMessage: 'Explore' },\n local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' },\n federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' },\n direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\n bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' },\n about: { id: 'navigation_bar.about', defaultMessage: 'About' },\n search: { id: 'navigation_bar.search', defaultMessage: 'Search' },\n});\n\nexport default @injectIntl\nclass NavigationPanel extends React.Component {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { intl } = this.props;\n const { signedIn, disabledAccountId } = this.context.identity;\n\n return (\n
\n
\n \n
\n
\n\n {signedIn && (\n \n \n } text={intl.formatMessage(messages.notifications)} />\n \n \n )}\n\n {showTrends ? (\n \n ) : (\n \n )}\n\n {(signedIn || timelinePreview) && (\n <>\n \n \n \n )}\n\n {!signedIn && (\n
\n
\n { disabledAccountId ? : }\n
\n )}\n\n {signedIn && (\n \n \n \n \n \n\n \n\n
\n\n \n
\n )}\n\n
\n
\n \n
\n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport BundleContainer from '../containers/bundle_container';\nimport ColumnLoading from './column_loading';\nimport DrawerLoading from './drawer_loading';\nimport BundleColumnError from './bundle_column_error';\nimport {\n Compose,\n Notifications,\n HomeTimeline,\n CommunityTimeline,\n PublicTimeline,\n HashtagTimeline,\n DirectTimeline,\n FavouritedStatuses,\n BookmarkedStatuses,\n ListTimeline,\n Directory,\n} from '../../ui/util/async-components';\nimport ComposePanel from './compose_panel';\nimport NavigationPanel from './navigation_panel';\nimport { supportsPassiveEvents } from 'detect-passive-events';\nimport { scrollRight } from '../../../scroll';\n\nconst componentMap = {\n 'COMPOSE': Compose,\n 'HOME': HomeTimeline,\n 'NOTIFICATIONS': Notifications,\n 'PUBLIC': PublicTimeline,\n 'REMOTE': PublicTimeline,\n 'COMMUNITY': CommunityTimeline,\n 'HASHTAG': HashtagTimeline,\n 'DIRECT': DirectTimeline,\n 'FAVOURITES': FavouritedStatuses,\n 'BOOKMARKS': BookmarkedStatuses,\n 'LIST': ListTimeline,\n 'DIRECTORY': Directory,\n};\n\nexport default class ColumnsArea extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n columns: ImmutablePropTypes.list.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n singleColumn: PropTypes.bool,\n children: PropTypes.node,\n };\n\n // Corresponds to (max-width: $no-gap-breakpoint + 285px - 1px) in SCSS\n mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 1174px)');\n\n state = {\n renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches),\n }\n\n componentDidMount() {\n if (!this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.addEventListener) {\n this.mediaQuery.addEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.addListener(this.handleLayoutChange);\n }\n this.setState({ renderComposePanel: !this.mediaQuery.matches });\n }\n\n this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl');\n }\n\n componentWillUpdate(nextProps) {\n if (this.props.singleColumn !== nextProps.singleColumn && nextProps.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n }\n\n componentWillUnmount () {\n if (!this.props.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.removeEventListener) {\n this.mediaQuery.removeEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.removeListener(this.handleLayouteChange);\n }\n }\n }\n\n handleChildrenContentChange() {\n if (!this.props.singleColumn) {\n const modifier = this.isRtlLayout ? -1 : 1;\n this._interruptScrollAnimation = scrollRight(this.node, (this.node.scrollWidth - window.innerWidth) * modifier);\n }\n }\n\n handleLayoutChange = (e) => {\n this.setState({ renderComposePanel: !e.matches });\n }\n\n handleWheel = () => {\n if (typeof this._interruptScrollAnimation !== 'function') {\n return;\n }\n\n this._interruptScrollAnimation();\n }\n\n setRef = (node) => {\n this.node = node;\n }\n\n renderLoading = columnId => () => {\n return columnId === 'COMPOSE' ? : ;\n }\n\n renderError = (props) => {\n return ;\n }\n\n render () {\n const { columns, children, singleColumn, isModalOpen } = this.props;\n const { renderComposePanel } = this.state;\n\n if (singleColumn) {\n return (\n
\n
\n
\n {renderComposePanel && }\n
\n
\n\n
\n
\n
{children}
\n
\n\n
\n
\n \n
\n
\n
\n );\n }\n\n return (\n
\n {columns.map(column => {\n const params = column.get('params', null) === null ? null : column.get('params').toJS();\n const other = params && params.other ? params.other : {};\n\n return (\n \n {SpecificComponent => }\n \n );\n })}\n\n {React.Children.map(children, child => React.cloneElement(child, { multiColumn: true }))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport ColumnsArea from '../components/columns_area';\n\nconst mapStateToProps = state => ({\n columns: state.getIn(['settings', 'columns']),\n isModalOpen: !!state.get('modal').modalType,\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ColumnsArea);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport IconButton from 'mastodon/components/icon_button';\nimport { Link } from 'react-router-dom';\nimport Avatar from 'mastodon/components/avatar';\nimport DisplayName from 'mastodon/components/display_name';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n close: { id: 'lightbox.close', defaultMessage: 'Close' },\n});\n\nconst mapStateToProps = (state, { accountId }) => ({\n account: state.getIn(['accounts', accountId]),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n accountId: PropTypes.string.isRequired,\n statusId: PropTypes.string.isRequired,\n account: ImmutablePropTypes.map.isRequired,\n onClose: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, statusId, onClose, intl } = this.props;\n\n return (\n
\n \n \n \n \n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Video from 'mastodon/features/video';\nimport Audio from 'mastodon/features/audio';\nimport { removePictureInPicture } from 'mastodon/actions/picture_in_picture';\nimport Header from './components/header';\nimport Footer from './components/footer';\n\nconst mapStateToProps = state => ({\n ...state.get('picture_in_picture'),\n});\n\nexport default @connect(mapStateToProps)\nclass PictureInPicture extends React.Component {\n\n static propTypes = {\n statusId: PropTypes.string,\n accountId: PropTypes.string,\n type: PropTypes.string,\n src: PropTypes.string,\n muted: PropTypes.bool,\n volume: PropTypes.number,\n currentTime: PropTypes.number,\n poster: PropTypes.string,\n backgroundColor: PropTypes.string,\n foregroundColor: PropTypes.string,\n accentColor: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n };\n\n handleClose = () => {\n const { dispatch } = this.props;\n dispatch(removePictureInPicture());\n }\n\n render () {\n const { type, src, currentTime, accountId, statusId } = this.props;\n\n if (!currentTime) {\n return null;\n }\n\n let player;\n\n if (type === 'video') {\n player = (\n \n );\n } else if (type === 'audio') {\n player = (\n \n );\n }\n\n return (\n
\n
\n\n {player}\n\n
\n
\n );\n }\n\n}\n","import { changeSetting, saveSettings } from './settings';\n\nexport const INTRODUCTION_VERSION = 20181216044202;\n\nexport const closeOnboarding = () => dispatch => {\n dispatch(changeSetting(['introductionVersion'], INTRODUCTION_VERSION));\n dispatch(saveSettings());\n};\n","import React from 'react';\nimport Logo from 'mastodon/components/logo';\nimport { Link, withRouter } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\nimport { registrationsOpen, me } from 'mastodon/initial_state';\nimport Avatar from 'mastodon/components/avatar';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nconst Account = connect(state => ({\n account: state.getIn(['accounts', me]),\n}))(({ account }) => (\n \n \n \n));\n\nexport default @withRouter\nclass Header extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n location: PropTypes.object,\n };\n\n render () {\n const { signedIn } = this.context.identity;\n const { location } = this.props;\n\n let content;\n\n if (signedIn) {\n content = (\n <>\n {location.pathname !== '/publish' && }\n \n \n );\n } else {\n content = (\n <>\n \n \n \n );\n }\n\n return (\n
\n \n\n
\n {content}\n
\n
\n );\n }\n\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport { HotKeys } from 'react-hotkeys';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { Redirect, Route, withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport NotificationsContainer from './containers/notifications_container';\nimport LoadingBarContainer from './containers/loading_bar_container';\nimport ModalContainer from './containers/modal_container';\nimport { layoutFromWindow } from 'mastodon/is_mobile';\nimport { debounce } from 'lodash';\nimport { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';\nimport { expandHomeTimeline } from '../../actions/timelines';\nimport { expandNotifications } from '../../actions/notifications';\nimport { fetchServer } from '../../actions/server';\nimport { clearHeight } from '../../actions/height_cache';\nimport { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';\nimport { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';\nimport { WrappedSwitch, WrappedRoute } from './util/react_router_helpers';\nimport BundleColumnError from './components/bundle_column_error';\nimport UploadArea from './components/upload_area';\nimport ColumnsAreaContainer from './containers/columns_area_container';\nimport PictureInPicture from 'mastodon/features/picture_in_picture';\nimport {\n Compose,\n Status,\n GettingStarted,\n KeyboardShortcuts,\n PublicTimeline,\n CommunityTimeline,\n AccountTimeline,\n AccountGallery,\n HomeTimeline,\n Followers,\n Following,\n Reblogs,\n Favourites,\n DirectTimeline,\n HashtagTimeline,\n Notifications,\n FollowRequests,\n FavouritedStatuses,\n BookmarkedStatuses,\n ListTimeline,\n Blocks,\n DomainBlocks,\n Mutes,\n PinnedStatuses,\n Lists,\n Directory,\n Explore,\n FollowRecommendations,\n About,\n PrivacyPolicy,\n} from './util/async-components';\nimport initialState, { me, owner, singleUserMode, showTrends } from '../../initial_state';\nimport { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';\nimport Header from './components/header';\n\n// Dummy import, to make sure that ends up in the application bundle.\n// Without this it ends up in ~8 very commonly used bundles.\nimport '../../components/status';\n\nconst messages = defineMessages({\n beforeUnload: { id: 'ui.beforeunload', defaultMessage: 'Your draft will be lost if you leave Mastodon.' },\n});\n\nconst mapStateToProps = state => ({\n layout: state.getIn(['meta', 'layout']),\n isComposing: state.getIn(['compose', 'is_composing']),\n hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,\n hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,\n canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,\n dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,\n firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,\n username: state.getIn(['accounts', me, 'username']),\n});\n\nconst keyMap = {\n help: '?',\n new: 'n',\n search: 's',\n forceNew: 'option+n',\n toggleComposeSpoilers: 'option+x',\n focusColumn: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],\n reply: 'r',\n favourite: 'f',\n boost: 'b',\n mention: 'm',\n open: ['enter', 'o'],\n openProfile: 'p',\n moveDown: ['down', 'j'],\n moveUp: ['up', 'k'],\n back: 'backspace',\n goToHome: 'g h',\n goToNotifications: 'g n',\n goToLocal: 'g l',\n goToFederated: 'g t',\n goToDirect: 'g d',\n goToStart: 'g s',\n goToFavourites: 'g f',\n goToPinned: 'g p',\n goToProfile: 'g u',\n goToBlocked: 'g b',\n goToMuted: 'g m',\n goToRequests: 'g r',\n toggleHidden: 'x',\n toggleSensitive: 'h',\n openMedia: 'e',\n};\n\nclass SwitchingColumnsArea extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n children: PropTypes.node,\n location: PropTypes.object,\n mobile: PropTypes.bool,\n };\n\n componentWillMount () {\n if (this.props.mobile) {\n document.body.classList.toggle('layout-single-column', true);\n document.body.classList.toggle('layout-multiple-columns', false);\n } else {\n document.body.classList.toggle('layout-single-column', false);\n document.body.classList.toggle('layout-multiple-columns', true);\n }\n }\n\n componentDidUpdate (prevProps) {\n if (![this.props.location.pathname, '/'].includes(prevProps.location.pathname)) {\n this.node.handleChildrenContentChange();\n }\n\n if (prevProps.mobile !== this.props.mobile) {\n document.body.classList.toggle('layout-single-column', this.props.mobile);\n document.body.classList.toggle('layout-multiple-columns', !this.props.mobile);\n }\n }\n\n setRef = c => {\n if (c) {\n this.node = c;\n }\n }\n\n render () {\n const { children, mobile } = this.props;\n const { signedIn } = this.context.identity;\n\n let redirect;\n\n if (signedIn) {\n if (mobile) {\n redirect = ;\n } else {\n redirect = ;\n }\n } else if (singleUserMode && owner && initialState?.accounts[owner]) {\n redirect = ;\n } else if (showTrends) {\n redirect = ;\n } else {\n redirect = ;\n }\n\n return (\n \n \n {redirect}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n {/* Legacy routes, cannot be easily factored with other routes because they share a param name */}\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n );\n }\n\n}\n\nexport default @connect(mapStateToProps)\n@injectIntl\n@withRouter\nclass UI extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n children: PropTypes.node,\n isComposing: PropTypes.bool,\n hasComposingText: PropTypes.bool,\n hasMediaAttachments: PropTypes.bool,\n canUploadMore: PropTypes.bool,\n location: PropTypes.object,\n intl: PropTypes.object.isRequired,\n dropdownMenuIsOpen: PropTypes.bool,\n layout: PropTypes.string.isRequired,\n firstLaunch: PropTypes.bool,\n username: PropTypes.string,\n };\n\n state = {\n draggingOver: false,\n };\n\n handleBeforeUnload = e => {\n const { intl, dispatch, isComposing, hasComposingText, hasMediaAttachments } = this.props;\n\n dispatch(synchronouslySubmitMarkers());\n\n if (isComposing && (hasComposingText || hasMediaAttachments)) {\n e.preventDefault();\n // Setting returnValue to any string causes confirmation dialog.\n // Many browsers no longer display this text to users,\n // but we set user-friendly message for other browsers, e.g. Edge.\n e.returnValue = intl.formatMessage(messages.beforeUnload);\n }\n }\n\n handleWindowFocus = () => {\n this.props.dispatch(focusApp());\n this.props.dispatch(submitMarkers({ immediate: true }));\n }\n\n handleWindowBlur = () => {\n this.props.dispatch(unfocusApp());\n }\n\n handleDragEnter = (e) => {\n e.preventDefault();\n\n if (!this.dragTargets) {\n this.dragTargets = [];\n }\n\n if (this.dragTargets.indexOf(e.target) === -1) {\n this.dragTargets.push(e.target);\n }\n\n if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) {\n this.setState({ draggingOver: true });\n }\n }\n\n handleDragOver = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return false;\n\n e.preventDefault();\n e.stopPropagation();\n\n try {\n e.dataTransfer.dropEffect = 'copy';\n } catch (err) {\n\n }\n\n return false;\n }\n\n handleDrop = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return;\n\n e.preventDefault();\n\n this.setState({ draggingOver: false });\n this.dragTargets = [];\n\n if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) {\n this.props.dispatch(uploadCompose(e.dataTransfer.files));\n }\n }\n\n handleDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n this.dragTargets = this.dragTargets.filter(el => el !== e.target && this.node.contains(el));\n\n if (this.dragTargets.length > 0) {\n return;\n }\n\n this.setState({ draggingOver: false });\n }\n\n dataTransferIsText = (dataTransfer) => {\n return (dataTransfer && Array.from(dataTransfer.types).filter((type) => type === 'text/plain').length === 1);\n }\n\n closeUploadModal = () => {\n this.setState({ draggingOver: false });\n }\n\n handleServiceWorkerPostMessage = ({ data }) => {\n if (data.type === 'navigate') {\n this.context.router.history.push(data.path);\n } else {\n console.warn('Unknown message type:', data.type);\n }\n }\n\n handleLayoutChange = debounce(() => {\n this.props.dispatch(clearHeight()); // The cached heights are no longer accurate, invalidate\n }, 500, {\n trailing: true,\n });\n\n handleResize = () => {\n const layout = layoutFromWindow();\n\n if (layout !== this.props.layout) {\n this.handleLayoutChange.cancel();\n this.props.dispatch(changeLayout(layout));\n } else {\n this.handleLayoutChange();\n }\n }\n\n componentDidMount () {\n const { signedIn } = this.context.identity;\n\n window.addEventListener('focus', this.handleWindowFocus, false);\n window.addEventListener('blur', this.handleWindowBlur, false);\n window.addEventListener('beforeunload', this.handleBeforeUnload, false);\n window.addEventListener('resize', this.handleResize, { passive: true });\n\n document.addEventListener('dragenter', this.handleDragEnter, false);\n document.addEventListener('dragover', this.handleDragOver, false);\n document.addEventListener('drop', this.handleDrop, false);\n document.addEventListener('dragleave', this.handleDragLeave, false);\n document.addEventListener('dragend', this.handleDragEnd, false);\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerPostMessage);\n }\n\n // On first launch, redirect to the follow recommendations page\n if (signedIn && this.props.firstLaunch) {\n this.context.router.history.replace('/start');\n this.props.dispatch(closeOnboarding());\n }\n\n if (signedIn) {\n this.props.dispatch(fetchMarkers());\n this.props.dispatch(expandHomeTimeline());\n this.props.dispatch(expandNotifications());\n\n setTimeout(() => this.props.dispatch(fetchServer()), 3000);\n }\n\n this.hotkeys.__mousetrap__.stopCallback = (e, element) => {\n return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName);\n };\n }\n\n componentWillUnmount () {\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('beforeunload', this.handleBeforeUnload);\n window.removeEventListener('resize', this.handleResize);\n\n document.removeEventListener('dragenter', this.handleDragEnter);\n document.removeEventListener('dragover', this.handleDragOver);\n document.removeEventListener('drop', this.handleDrop);\n document.removeEventListener('dragleave', this.handleDragLeave);\n document.removeEventListener('dragend', this.handleDragEnd);\n }\n\n setRef = c => {\n this.node = c;\n }\n\n handleHotkeyNew = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.compose-form__autosuggest-wrapper textarea');\n\n if (element) {\n element.focus();\n }\n }\n\n handleHotkeySearch = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.search__input');\n\n if (element) {\n element.focus();\n }\n }\n\n handleHotkeyForceNew = e => {\n this.handleHotkeyNew(e);\n this.props.dispatch(resetCompose());\n }\n\n handleHotkeyToggleComposeSpoilers = e => {\n e.preventDefault();\n this.props.dispatch(changeComposeSpoilerness());\n }\n\n handleHotkeyFocusColumn = e => {\n const index = (e.key * 1) + 1; // First child is drawer, skip that\n const column = this.node.querySelector(`.column:nth-child(${index})`);\n if (!column) return;\n const container = column.querySelector('.scrollable');\n\n if (container) {\n const status = container.querySelector('.focusable');\n\n if (status) {\n if (container.scrollTop > status.offsetTop) {\n status.scrollIntoView(true);\n }\n status.focus();\n }\n }\n }\n\n handleHotkeyBack = () => {\n if (window.history && window.history.length === 1) {\n this.context.router.history.push('/');\n } else {\n this.context.router.history.goBack();\n }\n }\n\n setHotkeysRef = c => {\n this.hotkeys = c;\n }\n\n handleHotkeyToggleHelp = () => {\n if (this.props.location.pathname === '/keyboard-shortcuts') {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/keyboard-shortcuts');\n }\n }\n\n handleHotkeyGoToHome = () => {\n this.context.router.history.push('/home');\n }\n\n handleHotkeyGoToNotifications = () => {\n this.context.router.history.push('/notifications');\n }\n\n handleHotkeyGoToLocal = () => {\n this.context.router.history.push('/public/local');\n }\n\n handleHotkeyGoToFederated = () => {\n this.context.router.history.push('/public');\n }\n\n handleHotkeyGoToDirect = () => {\n this.context.router.history.push('/conversations');\n }\n\n handleHotkeyGoToStart = () => {\n this.context.router.history.push('/getting-started');\n }\n\n handleHotkeyGoToFavourites = () => {\n this.context.router.history.push('/favourites');\n }\n\n handleHotkeyGoToPinned = () => {\n this.context.router.history.push('/pinned');\n }\n\n handleHotkeyGoToProfile = () => {\n this.context.router.history.push(`/@${this.props.username}`);\n }\n\n handleHotkeyGoToBlocked = () => {\n this.context.router.history.push('/blocks');\n }\n\n handleHotkeyGoToMuted = () => {\n this.context.router.history.push('/mutes');\n }\n\n handleHotkeyGoToRequests = () => {\n this.context.router.history.push('/follow_requests');\n }\n\n render () {\n const { draggingOver } = this.state;\n const { children, isComposing, location, dropdownMenuIsOpen, layout } = this.props;\n\n const handlers = {\n help: this.handleHotkeyToggleHelp,\n new: this.handleHotkeyNew,\n search: this.handleHotkeySearch,\n forceNew: this.handleHotkeyForceNew,\n toggleComposeSpoilers: this.handleHotkeyToggleComposeSpoilers,\n focusColumn: this.handleHotkeyFocusColumn,\n back: this.handleHotkeyBack,\n goToHome: this.handleHotkeyGoToHome,\n goToNotifications: this.handleHotkeyGoToNotifications,\n goToLocal: this.handleHotkeyGoToLocal,\n goToFederated: this.handleHotkeyGoToFederated,\n goToDirect: this.handleHotkeyGoToDirect,\n goToStart: this.handleHotkeyGoToStart,\n goToFavourites: this.handleHotkeyGoToFavourites,\n goToPinned: this.handleHotkeyGoToPinned,\n goToProfile: this.handleHotkeyGoToProfile,\n goToBlocked: this.handleHotkeyGoToBlocked,\n goToMuted: this.handleHotkeyGoToMuted,\n goToRequests: this.handleHotkeyGoToRequests,\n };\n\n return (\n \n
\n
\n\n \n {children}\n \n\n {layout !== 'mobile' && }\n \n \n \n \n
\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { version, source_url } from 'mastodon/initial_state';\nimport StackTrace from 'stacktrace-js';\nimport { Helmet } from 'react-helmet';\n\nexport default class ErrorBoundary extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node,\n };\n\n state = {\n hasError: false,\n errorMessage: undefined,\n stackTrace: undefined,\n mappedStackTrace: undefined,\n componentStack: undefined,\n };\n\n componentDidCatch (error, info) {\n this.setState({\n hasError: true,\n errorMessage: error.toString(),\n stackTrace: error.stack,\n componentStack: info && info.componentStack,\n mappedStackTrace: undefined,\n });\n\n StackTrace.fromError(error).then((stackframes) => {\n this.setState({\n mappedStackTrace: stackframes.map((sf) => sf.toString()).join('\\n'),\n });\n }).catch(() => {\n this.setState({\n mappedStackTrace: undefined,\n });\n });\n }\n\n handleCopyStackTrace = () => {\n const { errorMessage, stackTrace, mappedStackTrace } = this.state;\n const textarea = document.createElement('textarea');\n\n let contents = [errorMessage, stackTrace];\n if (mappedStackTrace) {\n contents.push(mappedStackTrace);\n }\n\n textarea.textContent = contents.join('\\n\\n\\n');\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n\n this.setState({ copied: true });\n setTimeout(() => this.setState({ copied: false }), 700);\n }\n\n render() {\n const { hasError, copied, errorMessage } = this.state;\n\n if (!hasError) {\n return this.props.children;\n }\n\n const likelyBrowserAddonIssue = errorMessage && errorMessage.includes('NotFoundError');\n\n return (\n
\n
\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

Mastodon v{version} · ·

\n
\n\n \n \n \n
\n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { IntlProvider, addLocaleData } from 'react-intl';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { BrowserRouter, Route } from 'react-router-dom';\nimport { ScrollContext } from 'react-router-scroll-4';\nimport configureStore from 'mastodon/store/configureStore';\nimport UI from 'mastodon/features/ui';\nimport { fetchCustomEmojis } from 'mastodon/actions/custom_emojis';\nimport { hydrateStore } from 'mastodon/actions/store';\nimport { connectUserStream } from 'mastodon/actions/streaming';\nimport ErrorBoundary from 'mastodon/components/error_boundary';\nimport initialState, { title as siteTitle } from 'mastodon/initial_state';\nimport { getLocale } from 'mastodon/locales';\n\nconst { localeData, messages } = getLocale();\naddLocaleData(localeData);\n\nconst title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`;\n\nexport const store = configureStore();\nconst hydrateAction = hydrateStore(initialState);\n\nstore.dispatch(hydrateAction);\nstore.dispatch(fetchCustomEmojis());\n\nconst createIdentityContext = state => ({\n signedIn: !!state.meta.me,\n accountId: state.meta.me,\n disabledAccountId: state.meta.disabled_account_id,\n accessToken: state.meta.access_token,\n permissions: state.role ? state.role.permissions : 0,\n});\n\nexport default class Mastodon extends React.PureComponent {\n\n static propTypes = {\n locale: PropTypes.string.isRequired,\n };\n\n static childContextTypes = {\n identity: PropTypes.shape({\n signedIn: PropTypes.bool.isRequired,\n accountId: PropTypes.string,\n disabledAccountId: PropTypes.string,\n accessToken: PropTypes.string,\n }).isRequired,\n };\n\n identity = createIdentityContext(initialState);\n\n getChildContext() {\n return {\n identity: this.identity,\n };\n }\n\n componentDidMount() {\n if (this.identity.signedIn) {\n this.disconnect = store.dispatch(connectUserStream());\n }\n }\n\n componentWillUnmount () {\n if (this.disconnect) {\n this.disconnect();\n this.disconnect = null;\n }\n }\n\n shouldUpdateScroll (prevRouterProps, { location }) {\n return !(location.state?.mastodonModalKey && location.state?.mastodonModalKey !== prevRouterProps?.location?.state?.mastodonModalKey);\n }\n\n render () {\n const { locale } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { setupBrowserNotifications } from 'mastodon/actions/notifications';\nimport Mastodon, { store } from 'mastodon/containers/mastodon';\nimport { me } from 'mastodon/initial_state';\nimport ready from 'mastodon/ready';\n\nconst perf = require('mastodon/performance');\n\n/**\n * @returns {Promise}\n */\nfunction main() {\n perf.start('main()');\n\n return ready(async () => {\n const mountNode = document.getElementById('mastodon');\n const props = JSON.parse(mountNode.getAttribute('data-props'));\n\n ReactDOM.render(, mountNode);\n store.dispatch(setupBrowserNotifications());\n\n if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) {\n const { Workbox } = await import('workbox-window');\n const wb = new Workbox('/sw.js');\n /** @type {ServiceWorkerRegistration} */\n let registration;\n\n try {\n registration = await wb.register();\n } catch (err) {\n console.error(err);\n }\n\n if (registration) {\n const registerPushNotifications = await import('mastodon/actions/push_notifications');\n\n store.dispatch(registerPushNotifications.register());\n }\n }\n\n perf.stop('main()');\n });\n}\n\nexport default main;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port;\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\nvar supportsNullProto = function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}();\nfunction identity(s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n var length = s.length;\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n if (aStr1 > aStr2) {\n return 1;\n }\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\nvar warning = function () {};\nif (process.env.NODE_ENV !== 'production') {\n warning = function (condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n }\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n };\n}\nmodule.exports = warning;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n return StackFrame;\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n})(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function (stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 && (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 && (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 && (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n [first, second].forEach(function (obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n return target;\n }\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function (resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function (sf) {\n return new Promise(function (resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n return instrumented;\n },\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n var reportPayload = {\n stack: stackframes\n };\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n});","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n};\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n};\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n};\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\\'s \"file\" property. Both were omitted.');\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source);\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n};\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {\n // Cases 2 and 3.\n return;\n } else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n};\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = '';\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n } else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n result += next;\n }\n return result;\n};\nSourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;\n }, this);\n};\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n return map;\n};\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n};\nexports.SourceMapGenerator = SourceMapGenerator;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative ? -shifted : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n var vlq = toVLQSigned(aValue);\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\nexports.ArraySet = ArraySet;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n})(this, function (SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 300 || url.substr(0, 7) === 'file://' && req.responseText) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n function _findFunctionName(source, lineNumber /*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' || stackframe.lineNumber % 1 !== 0 || stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' || stackframe.columnNumber % 1 !== 0 || stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function (resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n this.ajax = opts.ajax || _xdr;\n this._atob = opts.atob || _atob;\n this._get = function _get(location) {\n return new Promise(function (resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp = /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {\n method: 'get'\n });\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function (resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function (resolve, reject) {\n return this._get(sourceMappingURL).then(function (sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }, reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function (resolve, reject) {\n this.getMappedLocation(stackframe).then(function (mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n this.findFunctionName(mappedStackFrame).then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function (source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !/^https?:\\/\\/|^\\/\\//i.test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot).then(function (sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache).then(resolve)['catch'](function () {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n});","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return charCode - bigA;\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return charCode - littleA + littleOffset;\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return charCode - zero + numberOffset;\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {\n generatedLine: -1,\n generatedColumn: 0\n };\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n};\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\nexports.MappingList = MappingList;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap) : new BasicSourceMapConsumer(sourceMap);\n}\nSourceMapConsumer.fromSourceMap = function (aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__generatedMappings;\n }\n});\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__originalMappings;\n }\n});\nSourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n};\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n};\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n var mappings = [];\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n }\n }\n return mappings;\n};\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n sources = sources.map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping();\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n destOriginalMappings.push(destMapping);\n }\n destGeneratedMappings.push(destMapping);\n }\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n return smc;\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n } else if (aStr.charAt(index) === ',') {\n index++;\n } else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n};\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]);\n }\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n};\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n};\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._generatedMappings, \"generatedLine\", \"generatedColumn\", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) {\n return sc == null;\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n var url;\n if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\" && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];\n }\n if ((!url.path || url.path == \"/\") && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n};\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n this._sources = new ArraySet();\n this._names = new ArraySet();\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n };\n });\n}\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections, function (needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n return needle.generatedColumn - section.generatedOffset.generatedColumn;\n });\n var section = this._sections[sectionIndex];\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n return section.consumer.originalPositionFor({\n line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n bias: aArgs.bias\n });\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)\n };\n return ret;\n }\n }\n return {\n line: null,\n column: null\n };\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n};\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n } else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n } else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n return index;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + Math.random() * (high - low));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function () {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1,\n lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n return node;\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;\n node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name));\n }\n }\n};\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length - 1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n } else {\n if (chunk !== '') {\n aFn(chunk, {\n source: this.source,\n line: this.line,\n column: this.column,\n name: this.name\n });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len - 1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n } else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n } else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n};\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n};\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null && original.line !== null && original.column !== null) {\n if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n return {\n code: generated.code,\n map: map\n };\n};\nexports.SourceNode = SourceNode;","//\n// Tools for performance debugging, only enabled in development mode.\n// Open up Chrome Dev Tools, then Timeline, then User Timing to see output.\n// Also see config/webpack/loaders/mark.js for the webpack loader marks.\n//\n\nlet marky;\n\nif (process.env.NODE_ENV === 'development') {\n if (typeof performance !== 'undefined' && performance.setResourceTimingBufferSize) {\n // Increase Firefox's performance entry limit; otherwise it's capped to 150.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135\n performance.setResourceTimingBufferSize(Infinity);\n }\n marky = require('marky');\n // allows us to easily do e.g. ReactPerf.printWasted() while debugging\n //window.ReactPerf = require('react-addons-perf');\n //window.ReactPerf.start();\n}\n\nexport function start(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.mark(name);\n }\n}\n\nexport function stop(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.stop(name);\n }\n}\n"],"sourceRoot":""}