{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@bugsnag/js/browser/notifier.js","webpack:///./app/javascript/packs/bugsnag.coffee","webpack:///./node_modules/@bugsnag/browser/dist/bugsnag.js","webpack:///./app/javascript/packs/application.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","Bugsnag","BUGSNAG_JS_API_KEY","start","apiKey","appVersion","APP_VERSION","releaseStage","RELEASE_STAGE","user","CURRENT_USER","console","warn","f","_typeof","iterator","obj","constructor","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","len","length","_$filter_12","item","concat","_$includes_13","x","_$isArray_14","toString","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","result","push","_$intRange_24","min","max","Infinity","parseInt","_$listOfFunctions_25","_$stringWithLength_26","_$config_5","schema","defaultValue","message","validate","undefined","appType","autoDetectErrors","enabledErrorTypes","unhandledExceptions","unhandledRejections","allowPartialObject","providedKeys","defaultKeys","k","onError","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","maxBreadcrumbs","enabledBreadcrumbTypes","join","maybeType","context","metadata","logger","method","redactedKeys","test","plugins","load","featureFlags","feature","_$assign_11","target","arguments","source","_$map_16","_extends","assign","apply","this","_$config_1","location","host","debug","getPrefixedConsole","consoleLog","log","consoleMethod","_$Breadcrumb_3","Breadcrumb","type","timestamp","Date","toJSON","metaData","_$stackframe_34","root","factory","StackFrame","_isNumber","isNaN","parseFloat","isFinite","_capitalize","str","charAt","toUpperCase","substring","_getter","booleanProps","numericProps","stringProps","props","getArgs","args","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","split","filter","line","map","sanitizedLine","tokens","slice","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","matches","e","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","shift","_$errorStackParser_10","_$safeJsonStringify_30","data","replacer","space","opts","redactedPaths","JSON","stringify","seen","edges","visit","path","edgesExceeded","REPLACEMENT_NODE","haystack","needle","find","fResult","err","throwsMessage","eResult","__isArray_30","aResult","isDescendent","shouldRedact","safelyGetProp","prepareObjForSerialization","paths","patterns","toLowerCase","add","existingFeatures","variant","_$featureFlagDelegate_18","merge","newFeatures","toEventApi","flag","featureFlag","_$hasStack_19","_$iserror_20","clear","state","section","_$metadataDelegate_22","keyOrObj","maybeVal","_updates","updates","_$stackGenerator_33","StackGenerator","backtrace","maxStackSize","curr","callee","Array","RegExp","$1","caller","Event","errorClass","errorMessage","handledState","originalError","defaultHandledState","groupingHash","_handledState","severity","unhandled","app","device","request","breadcrumbs","threads","_metadata","_features","_user","_session","errors","ensureString","__type","frame","formatStackframe","_proto","addMetadata","getMetadata","clearMetadata","addFeatureFlag","addFeatureFlags","clearFeatureFlag","clearFeatureFlags","getUser","setUser","id","email","payloadVersion","exceptions","er","severityReason","session","file","normaliseFunctionName","code","inProject","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","maybeError","tolerateNonErrors","component","event","_normaliseError","normaliseError","internalFrames","makeSerialisable","createAndLogInputError","reason","hasNecessaryFields","_$Event_6","_$syncCallbackRunner_23","callbacks","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","substr","env","self","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","discreteValues","Math","pow","randomBlock","random","cuid","getTime","fingerprint","_$delivery_36","_$cuid_27","Session","startedAt","_handled","_unhandled","events","handled","_track","_$Session_35","noop","Client","configuration","internalPlugins","notifier","_this","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","info","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","_isBreadcrumbTypeEnabled","types","cb","_notify","_this2","originalSeverity","onCallbackError","index","next","_$asyncEvery_7","ret","then","setTimeout","_$callbackRunner_9","shouldSend","unhandledOverridden","rawInput","_$Client_4","_$jsonPayload_21","EVENT_REDACTION_PATHS","payload","client","win","url","getApiUrl","req","XDomainRequest","onload","open","send","endpoint","isoDate","matchPageProtocol","protocol","encodeURIComponent","_matchPageProtocol","pageProtocol","_$delivery_37","XMLHttpRequest","onreadystatechange","readyState","DONE","setRequestHeader","toISOString","appStart","reset","_$app_38","now","duration","_$pad_43","__env_42","__globalCount_42","__prop_42","__mimeTypesLength_42","__clientId_42","_$fingerprint_42","__c_41","__discreteValues_41","__randomBlock_41","__cuid_41","_$cuid_41","BUGSNAG_ANONYMOUS_ID_KEY","_$device_40","nav","screen","locale","browserLanguage","systemLanguage","userLanguage","language","orientation","document","documentElement","clientWidth","clientHeight","generateAnonymousId","storage","localStorage","getItem","setItem","getDeviceId","collectUserIp","setDefaultUserId","time","eventOrSession","_$request_44","href","_$session_45","sessionDelegate","sessionClient","_pausedSession","_$clientIp_46","clientIp","_$consoleBreadcrumbs_47","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","_restore","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","trackInlineScripts","originalLocation","html","DOMContentLoaded","attachEvent","getHtml","outerHTML","prev","_lastScript","updateLastScript","script","getCurrentScript","currentScript","scripts","getElementsByTagName","content","innerHTML","htmlLines","zeroBasedLine","end","addSurroundingCode","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","replacement","isEventHandlerObj","handleEvent","_$navigationBreadcrumbs_50","_$interactionBreadcrumbs_49","addEventListener","targetText","targetSelector","getNodeText","getNodeSelector","el","ommision","text","textContent","innerText","tagName","className","querySelectorAll","parentNode","childNodes","drop","oldURL","from","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","a","createElement","pathname","search","hash","orig","title","currentPath","prevState","stateChangeToMetadata","resetEventCount","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","nativeOpen","REQUEST_URL_KEY","REQUEST_METHOD_KEY","REQUEST_SETUP_KEY","removeEventListener","handleXHRLoad","handleXHRError","monkeyPatchXMLHttpRequest","fetch","polyfill","oldFetch","_arguments","urlOrRequest","options","Promise","resolve","reject","response","handleFetchSuccess","handleFetchError","monkeyPatchFetch","status","_$throttle_52","maxEvents","_$stripQueryString_53","strip","allFrames","_strip","_$onerror_54","prevOnError","onerror","messageOrEvent","lineNo","charNo","decorateStack","detail","extraParameters","culprit","isActualNumber","errorCharacter","_$unhandledRejection_55","listener","evt","isBluebird","fixBluebirdStacktrace","_event$addMetadata","onunhandledrejection","promise","_$notifier_2","__schema_2","_client","createClient","bugsnag"],"mappings":"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","file":"js/application-89da23b5f632df2ca518.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//cdn.flashvote.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","module.exports = require('@bugsnag/browser');","import Bugsnag from '@bugsnag/js'\n\nwindow.Bugsnag = Bugsnag\n\nif window.BUGSNAG_JS_API_KEY\n Bugsnag.start\n apiKey: window.BUGSNAG_JS_API_KEY\n appVersion: window.APP_VERSION\n releaseStage: window.RELEASE_STAGE\n user: window.CURRENT_USER\nelse\n console.warn 'BUGSNAG_JS_API_KEY not set, not initializing bugsnag'\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (f) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n\n g.Bugsnag = f();\n }\n})(function () {\n var define, module, exports;\n var _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual']; // Array#reduce\n\n var _$reduce_17 = function _$reduce_17(arr, fn, accum) {\n var val = accum;\n\n for (var i = 0, len = arr.length; i < len; i++) {\n val = fn(val, arr[i], i, arr);\n }\n\n return val;\n };\n /* removed: var _$reduce_17 = require('./reduce'); */\n\n\n ; // Array#filter\n\n var _$filter_12 = function _$filter_12(arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n };\n /* removed: var _$reduce_17 = require('./reduce'); */\n\n\n ; // Array#includes\n\n var _$includes_13 = function _$includes_13(arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n }; // Array#isArray\n\n\n var _$isArray_14 = function _$isArray_14(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n /* eslint-disable-next-line no-prototype-builtins */\n\n\n var _hasDontEnumBug = !{\n toString: null\n }.propertyIsEnumerable('toString');\n\n var _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; // Object#keys\n\n var _$keys_15 = function _$keys_15(obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n\n if (!_hasDontEnumBug) return result;\n\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n\n return result;\n };\n\n var _$intRange_24 = function _$intRange_24(min, max) {\n if (min === void 0) {\n min = 1;\n }\n\n if (max === void 0) {\n max = Infinity;\n }\n\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n };\n /* removed: var _$filter_12 = require('../es-utils/filter'); */\n\n\n ;\n /* removed: var _$isArray_14 = require('../es-utils/is-array'); */\n\n ;\n\n var _$listOfFunctions_25 = function _$listOfFunctions_25(value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n };\n\n var _$stringWithLength_26 = function _$stringWithLength_26(value) {\n return typeof value === 'string' && !!value.length;\n };\n\n var _$config_5 = {};\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n\n ;\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n\n ;\n /* removed: var _$keys_15 = require('./lib/es-utils/keys'); */\n\n ;\n /* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */\n\n ;\n /* removed: var _$includes_13 = require('./lib/es-utils/includes'); */\n\n ;\n /* removed: var _$intRange_24 = require('./lib/validators/int-range'); */\n\n ;\n /* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */\n\n ;\n /* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */\n\n ;\n /* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */\n\n ;\n\n var defaultErrorTypes = function defaultErrorTypes() {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n };\n\n _$config_5.schema = {\n apiKey: {\n defaultValue: function defaultValue() {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function defaultValue() {\n return undefined;\n },\n message: 'should be a string',\n validate: function validate(value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function defaultValue() {\n return undefined;\n },\n message: 'should be a string',\n validate: function validate(value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function defaultValue() {\n return true;\n },\n message: 'should be true|false',\n validate: function validate(value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function defaultValue() {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function validate(value) {\n // ensure we have an object\n if (_typeof(value) !== 'object' || !value) return false;\n\n var providedKeys = _$keys_15(value);\n\n var defaultKeys = _$keys_15(defaultErrorTypes()); // ensure it only has a subset of the allowed keys\n\n\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false; // ensure all of the values are boolean\n\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function defaultValue() {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function defaultValue() {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function defaultValue() {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function defaultValue() {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function validate(val) {\n return (// first, ensure it's an object\n val && _typeof(val) === 'object' && // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) && // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function defaultValue(val) {\n return true;\n },\n message: 'should be true|false',\n validate: function validate(val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function defaultValue() {\n return null;\n },\n message: 'should be an array of strings',\n validate: function validate(value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function defaultValue() {\n return 'production';\n },\n message: 'should be a string',\n validate: function validate(value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function defaultValue() {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function validate(value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function defaultValue() {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function validate(value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function defaultValue() {\n return undefined;\n },\n message: 'should be a string',\n validate: function validate(value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function defaultValue() {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function validate(value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function defaultValue() {\n return {};\n },\n message: 'should be an object',\n validate: function validate(value) {\n return _typeof(value) === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function defaultValue() {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function validate(value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function defaultValue() {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function validate(value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function defaultValue() {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function validate(value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && _typeof(p) === 'object' && typeof p.load === 'function';\n }).length;\n }\n },\n featureFlags: {\n defaultValue: function defaultValue() {\n return [];\n },\n message: 'should be an array of objects that have a \"name\" property',\n validate: function validate(value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (feature) {\n return feature && _typeof(feature) === 'object' && typeof feature.name === 'string';\n }).length;\n }\n }\n }; // extends helper from babel\n // https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\n\n var _$assign_11 = function _$assign_11(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n /* removed: var _$reduce_17 = require('./reduce'); */\n\n\n ; // Array#map\n\n var _$map_16 = function _$map_16(arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n };\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var schema = _$config_5.schema;\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n\n ;\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n\n ;\n var _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function defaultValue() {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n appType: _extends({}, schema.appType, {\n defaultValue: function defaultValue() {\n return 'browser';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function defaultValue() {\n return (// set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n };\n\n var getPrefixedConsole = function getPrefixedConsole() {\n var logger = {};\n var consoleLog = console.log;\n\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n\n return logger;\n };\n\n var Breadcrumb = /*#__PURE__*/function () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n\n var _proto = Breadcrumb.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n\n return Breadcrumb;\n }();\n\n var _$Breadcrumb_3 = Breadcrumb;\n var _$stackframe_34 = {};\n\n (function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (_typeof(_$stackframe_34) === 'object') {\n _$stackframe_34 = 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\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function () {\n return this[p];\n };\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 props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function getArgs() {\n return this.args;\n },\n setArgs: function setArgs(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n\n this.args = v;\n },\n getEvalOrigin: function getEvalOrigin() {\n return this.evalOrigin;\n },\n setEvalOrigin: function setEvalOrigin(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 toString() {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n\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\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n\n return StackFrame;\n });\n\n var _$errorStackParser_31 = {};\n\n (function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (_typeof(_$errorStackParser_31) === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\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\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\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '('); // 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\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/); // remove the parenthesized location from the line, if it was matched\n\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1); // if a location was matched, pass it to extractLocation() otherwise pop the last token\n\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\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\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\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\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\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\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\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\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 });\n\n var _$errorStackParser_10 = _$errorStackParser_31;\n\n var _$safeJsonStringify_30 = function _$safeJsonStringify_30(data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n };\n\n var MAX_DEPTH = 20;\n var MAX_EDGES = 25000;\n var MIN_PRESERVED_DEPTH = 8;\n var REPLACEMENT_NODE = '...';\n\n function isError(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n }\n\n function throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n }\n\n function find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n\n return false;\n } // returns true if the string `path` starts with any of the provided `paths`\n\n\n function isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n\n return false;\n }\n\n function shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n\n return false;\n }\n\n function __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n }\n\n function safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n }\n\n function prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n\n var edges = 0;\n\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || _typeof(obj) !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n\n var er = isError(obj);\n\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n\n if (__isArray_30(obj)) {\n var aResult = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n\n seen.pop();\n return aResult;\n }\n\n var result = {};\n\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n\n seen.pop();\n return result;\n }\n\n return visit(obj, []);\n }\n /* removed: var _$map_16 = require('./es-utils/map'); */\n\n\n ;\n /* removed: var _$keys_15 = require('./es-utils/keys'); */\n\n ;\n /* removed: var _$isArray_14 = require('./es-utils/is-array'); */\n\n ;\n /* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */\n\n ;\n\n function add(existingFeatures, name, variant) {\n if (typeof name !== 'string') {\n return;\n }\n\n if (variant === undefined) {\n variant = null;\n } else if (variant !== null && typeof variant !== 'string') {\n variant = _$safeJsonStringify_30(variant);\n }\n\n existingFeatures[name] = variant;\n }\n\n function merge(existingFeatures, newFeatures) {\n if (!_$isArray_14(newFeatures)) {\n return;\n }\n\n for (var i = 0; i < newFeatures.length; ++i) {\n var feature = newFeatures[i];\n\n if (feature === null || _typeof(feature) !== 'object') {\n continue;\n } // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n\n\n add(existingFeatures, feature.name, feature.variant);\n }\n } // convert feature flags from a map of 'name -> variant' into the format required\n // by the Bugsnag Event API:\n // [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\n\n\n function toEventApi(featureFlags) {\n return _$map_16(_$keys_15(featureFlags), function (name) {\n var flag = {\n featureFlag: name\n }; // don't add a 'variant' property unless there's actually a value\n\n if (typeof featureFlags[name] === 'string') {\n flag.variant = featureFlags[name];\n }\n\n return flag;\n });\n }\n\n var _$featureFlagDelegate_18 = {\n add: add,\n merge: merge,\n toEventApi: toEventApi\n }; // Given `err` which may be an error, does it have a stack property which is a string?\n\n var _$hasStack_19 = function _$hasStack_19(err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n };\n /**\n * Expose `isError`.\n */\n\n\n var _$isError_32 = __isError_32;\n /**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\n function __isError_32(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n\n case '[object Exception]':\n return true;\n\n case '[object DOMException]':\n return true;\n\n default:\n return value instanceof Error;\n }\n }\n\n var _$iserror_20 = _$isError_32;\n /* removed: var _$assign_11 = require('./es-utils/assign'); */\n\n ;\n\n var __add_22 = function __add_22(state, section, keyOrObj, maybeVal) {\n var _updates;\n\n if (!section) return;\n var updates; // addMetadata(\"section\", null) -> clears section\n\n if (keyOrObj === null) return clear(state, section); // normalise the two supported input types into object form\n\n if (_typeof(keyOrObj) === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates); // exit if we don't have an updates object at this point\n\n if (!updates) return; // ensure a section with this name exists\n\n if (!state[section]) state[section] = {}; // merge the updates with the existing section\n\n state[section] = _$assign_11({}, state[section], updates);\n };\n\n var get = function get(state, section, key) {\n if (typeof section !== 'string') return undefined;\n\n if (!key) {\n return state[section];\n }\n\n if (state[section]) {\n return state[section][key];\n }\n\n return undefined;\n };\n\n var clear = function clear(state, section, key) {\n if (typeof section !== 'string') return; // clear an entire section\n\n if (!key) {\n delete state[section];\n return;\n } // clear a single value from a section\n\n\n if (state[section]) {\n delete state[section][key];\n }\n };\n\n var _$metadataDelegate_22 = {\n add: __add_22,\n get: get,\n clear: clear\n };\n var _$stackGenerator_33 = {};\n\n (function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (_typeof(_$stackGenerator_33) === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\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\n if (_typeof(opts) === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\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\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n\n return stack;\n }\n };\n });\n /* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */\n\n\n ;\n /* removed: var _$stackGenerator_33 = require('stack-generator'); */\n\n ;\n /* removed: var _$hasStack_19 = require('./lib/has-stack'); */\n\n ;\n /* removed: var _$map_16 = require('./lib/es-utils/map'); */\n\n ;\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n\n ;\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n\n ;\n /* removed: var _$assign_11 = require('./lib/es-utils/assign'); */\n\n ;\n /* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */\n\n ;\n /* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */\n\n ;\n /* removed: var _$iserror_20 = require('./lib/iserror'); */\n\n ;\n\n var Event = /*#__PURE__*/function () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this.threads = [];\n this._metadata = {};\n this._features = {};\n this._user = {};\n this._session = undefined;\n this.errors = [{\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: Event.__type,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame); // don't include a stackframe if none of its properties are defined\n\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n }]; // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n _$featureFlagDelegate_18.add(this._features, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n delete this._features[name];\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = {};\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: _$featureFlagDelegate_18.toEventApi(this._features)\n };\n };\n\n return Event;\n }(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n // and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n\n\n var formatStackframe = function formatStackframe(frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }; // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n\n return f;\n };\n\n var normaliseFunctionName = function normaliseFunctionName(name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n };\n\n var defaultHandledState = function defaultHandledState() {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n };\n\n var ensureString = function ensureString(str) {\n return typeof str === 'string' ? str : '';\n }; // Helpers\n\n\n Event.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_19(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip); // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n };\n\n Event.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n\n var event;\n\n try {\n var stacktrace = Event.getStacktrace(error, // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0, // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n\n return event;\n };\n\n var makeSerialisable = function makeSerialisable(err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n };\n\n var normaliseError = function normaliseError(maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n\n var createAndLogInputError = function createAndLogInputError(reason) {\n if (logger) logger.warn(component + \" received a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" received a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n }; // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n\n\n if (!tolerateNonErrors) {\n if (_$iserror_20(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(_typeof(maybeError));\n internalFrames += 2;\n }\n } else {\n switch (_typeof(maybeError)) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n\n case 'object':\n if (maybeError !== null && _$iserror_20(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n\n break;\n\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n\n if (!_$hasStack_19(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_19(e)) {\n error = e; // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n\n internalFrames = 1;\n }\n }\n }\n\n return [error, internalFrames];\n }; // default value for stacktrace.type\n\n\n Event.__type = 'browserjs';\n\n var hasNecessaryFields = function hasNecessaryFields(error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n };\n\n var _$Event_6 = Event; // This is a heavily modified/simplified version of\n // https://github.com/othiym23/async-some\n // with the logic flipped so that it is akin to the\n // synchronous \"every\" method instead of \"some\".\n // run the asynchronous test function (fn) over each item in the array (arr)\n // in series until:\n // - fn(item, cb) => calls cb(null, false)\n // - or the end of the array is reached\n // the callback (cb) will be passed (null, false) if any of the items in arr\n // caused fn to call back with false, otherwise it will be passed (null, true)\n\n var _$asyncEvery_7 = function _$asyncEvery_7(arr, fn, cb) {\n var index = 0;\n\n var next = function next() {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n\n next();\n };\n /* removed: var _$asyncEvery_7 = require('./async-every'); */\n\n\n ;\n\n var _$callbackRunner_9 = function _$callbackRunner_9(callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function runMaybeAsyncCallback(fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event); // check if it returned a \"thenable\" (promise)\n\n if (ret && typeof ret.then === 'function') {\n return ret.then( // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n }, // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n\n return cb(null, ret);\n } // if function is async…\n\n\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n };\n\n var _$syncCallbackRunner_23 = function _$syncCallbackRunner_23(callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n\n while (!ignore) {\n if (!cbs.length) break;\n\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n\n return ignore;\n };\n\n var _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n };\n /* removed: var _$pad_29 = require('./pad.js'); */\n\n\n ;\n var env = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' ? window : self;\n var globalCount = 0;\n\n for (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n }\n\n var mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\n\n var clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n\n var _$fingerprint_28 = function fingerprint() {\n return clientId;\n };\n /**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\n /* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */\n\n\n ;\n /* removed: var _$pad_29 = require('./lib/pad.js'); */\n\n ;\n var c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\n function randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n }\n\n function safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n }\n\n function cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n }\n\n cuid.fingerprint = _$fingerprint_28;\n var _$cuid_27 = cuid;\n /* removed: var _$cuid_27 = require('@bugsnag/cuid'); */\n\n ;\n\n var Session = /*#__PURE__*/function () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n\n var _proto = Session.prototype;\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n\n return Session;\n }();\n\n var _$Session_35 = Session;\n /* removed: var _$config_5 = require('./config'); */\n\n ;\n /* removed: var _$Event_6 = require('./event'); */\n\n ;\n /* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */\n\n ;\n /* removed: var _$Session_35 = require('./session'); */\n\n ;\n /* removed: var _$map_16 = require('./lib/es-utils/map'); */\n\n ;\n /* removed: var _$includes_13 = require('./lib/es-utils/includes'); */\n\n ;\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n\n ;\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n\n ;\n /* removed: var _$keys_15 = require('./lib/es-utils/keys'); */\n\n ;\n /* removed: var _$assign_11 = require('./lib/es-utils/assign'); */\n\n ;\n /* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */\n\n ;\n /* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */\n\n ;\n /* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */\n\n ;\n /* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */\n\n ;\n /* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */\n\n ;\n\n var noop = function noop() {};\n\n var Client = /*#__PURE__*/function () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n\n if (internalPlugins === void 0) {\n internalPlugins = [];\n } // notifier id\n\n\n this._notifier = notifier; // intialise opts and config\n\n this._config = {};\n this._schema = schema; // i/o\n\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n }; // plugins\n\n this._plugins = {}; // state\n\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._features = {};\n this._context = undefined;\n this._user = {}; // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }; // expose internal constructors\n\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n }); // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n\n\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n\n var _proto = Client.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n _$featureFlagDelegate_18.add(this._features, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n delete this._features[name];\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = {};\n };\n\n _proto.getContext = function getContext() {\n return this._context;\n };\n\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema); // accumulate configuration and error messages\n\n\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set'); // warn about an apikey that is not of the expected format\n\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n } // update and elevate some options\n\n\n this._metadata = _$assign_11({}, config.metadata);\n\n _$featureFlagDelegate_18.merge(this._features, config.featureFlags);\n\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger; // add callbacks\n\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession); // finally warn about any invalid config where we fell back to the default\n\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n\n return config;\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this); // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user); // run onSession callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n\n return this;\n }\n\n return this._sessionDelegate.startSession(this, session);\n };\n\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.b[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = _typeof(metadata) === 'object' && metadata !== null ? metadata : {}; // if no message, discard\n\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type); // run onBreadcrumb callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n\n return;\n } // push the valid crumb onto the queue and maintain the length\n\n\n this._breadcrumbs.push(crumb);\n\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n\n _proto._isBreadcrumbTypeEnabled = function _isBreadcrumbTypeEnabled(type) {\n var types = this._config.enabledBreadcrumbTypes;\n return types === null || _$includes_13(types, type);\n };\n\n _proto.notify = function notify(maybeError, onError, cb) {\n if (cb === void 0) {\n cb = noop;\n }\n\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n\n this._notify(event, onError, cb);\n };\n\n _proto._notify = function _notify(event, onError, cb) {\n var _this2 = this;\n\n if (cb === void 0) {\n cb = noop;\n }\n\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._features = _$assign_11({}, event._features, this._features);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice(); // exit early if events should not be sent on the current releaseStage\n\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n\n return cb(null, event);\n }\n\n var originalSeverity = event.severity;\n\n var onCallbackError = function onCallbackError(err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n\n _this2._logger.error(err);\n };\n\n var callbacks = [].concat(this._cbs.e).concat(onError);\n\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n\n return cb(null, event);\n }\n\n if (_this2._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true;\n event._handledState.unhandled = event.unhandled;\n }\n\n if (_this2._session) {\n _this2._session._track(event);\n\n event._session = _this2._session;\n }\n\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return cb(err, event);\n });\n });\n };\n\n return Client;\n }();\n\n var generateConfigErrorMessage = function generateConfigErrorMessage(errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n };\n\n var stringify = function stringify(val) {\n switch (_typeof(val)) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n\n default:\n return String(val);\n }\n };\n\n var _$Client_4 = Client;\n var _$jsonPayload_21 = {};\n /* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */\n\n ;\n var EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n\n _$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit');\n }\n\n return payload;\n };\n\n _$jsonPayload_21.session = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null);\n\n if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit');\n return payload;\n };\n\n var _$delivery_36 = {};\n /* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */\n\n ;\n\n _$delivery_36 = function _$delivery_36(client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function sendEvent(event, cb) {\n if (cb === void 0) {\n cb = function cb() {};\n }\n\n var url = getApiUrl(client._config, 'notify', '4', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.event(event, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n },\n sendSession: function sendSession(session, cb) {\n if (cb === void 0) {\n cb = function cb() {};\n }\n\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n }\n };\n };\n\n var getApiUrl = function getApiUrl(config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n };\n\n var matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n };\n /* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */\n\n\n ;\n\n var _$delivery_37 = function _$delivery_37(client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function sendEvent(event, cb) {\n if (cb === void 0) {\n cb = function cb() {};\n }\n\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.event(event, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function sendSession(session, cb) {\n if (cb === void 0) {\n cb = function cb() {};\n }\n\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n };\n\n var appStart = new Date();\n\n var reset = function reset() {\n appStart = new Date();\n };\n\n var _$app_38 = {\n name: 'appDuration',\n load: function load(client) {\n client.addOnError(function (event) {\n var now = new Date();\n event.app.duration = now - appStart;\n }, true);\n return {\n reset: reset\n };\n }\n };\n /*\n * Sets the default context to be the current URL\n */\n\n var _$context_39 = function _$context_39(win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function load(client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n };\n\n var _$pad_43 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n };\n /* removed: var _$pad_43 = require('./pad.js'); */\n\n\n ;\n\n var __env_42 = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' ? window : self;\n\n var __globalCount_42 = 0;\n\n for (var __prop_42 in __env_42) {\n if (Object.hasOwnProperty.call(__env_42, __prop_42)) __globalCount_42++;\n }\n\n var __mimeTypesLength_42 = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\n\n var __clientId_42 = _$pad_43((__mimeTypesLength_42 + navigator.userAgent.length).toString(36) + __globalCount_42.toString(36), 4);\n\n var _$fingerprint_42 = function fingerprint() {\n return __clientId_42;\n };\n /**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\n /* removed: var _$fingerprint_42 = require('./lib/fingerprint.js'); */\n\n\n ;\n /* removed: var _$pad_43 = require('./lib/pad.js'); */\n\n ;\n\n var __c_41 = 0,\n __blockSize_41 = 4,\n __base_41 = 36,\n __discreteValues_41 = Math.pow(__base_41, __blockSize_41);\n\n function __randomBlock_41() {\n return _$pad_43((Math.random() * __discreteValues_41 << 0).toString(__base_41), __blockSize_41);\n }\n\n function __safeCounter_41() {\n __c_41 = __c_41 < __discreteValues_41 ? __c_41 : 0;\n __c_41++; // this is not subliminal\n\n return __c_41 - 1;\n }\n\n function __cuid_41() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(__base_41),\n // Prevent same-machine collisions.\n counter = _$pad_43(__safeCounter_41().toString(__base_41), __blockSize_41),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_42(),\n // Grab some more chars from Math.random()\n random = __randomBlock_41() + __randomBlock_41();\n\n return letter + timestamp + counter + print + random;\n }\n\n __cuid_41.fingerprint = _$fingerprint_42;\n var _$cuid_41 = __cuid_41;\n /* removed: var _$cuid_41 = require('@bugsnag/cuid'); */\n\n ;\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n\n ;\n var BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id';\n\n var getDeviceId = function getDeviceId() {\n try {\n var storage = window.localStorage;\n var id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY); // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id;\n }\n\n id = _$cuid_41();\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id);\n return id;\n } catch (err) {// If localStorage is not available (e.g. because it's disabled) then give up\n }\n };\n /*\n * Automatically detects browser device details\n */\n\n\n var _$device_40 = function _$device_40(nav, screen) {\n if (nav === void 0) {\n nav = navigator;\n }\n\n if (screen === void 0) {\n screen = window.screen;\n }\n\n return {\n load: function load(client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n\n if (screen && screen.orientation && screen.orientation.type) {\n device.orientation = screen.orientation.type;\n } else {\n device.orientation = document.documentElement.clientWidth > document.documentElement.clientHeight ? 'landscape' : 'portrait';\n }\n\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId();\n }\n\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device); // only set device id if collectUserIp is false\n\n if (!client._config.collectUserIp) setDefaultUserId(session);\n }); // add time just as the event is sent\n\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n if (!client._config.collectUserIp) setDefaultUserId(event);\n }, true);\n },\n configSchema: {\n generateAnonymousId: {\n validate: function validate(value) {\n return value === true || value === false;\n },\n defaultValue: function defaultValue() {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n };\n\n var setDefaultUserId = function setDefaultUserId(eventOrSession) {\n // device id is also used to populate the user id field, if it's not already set\n var user = eventOrSession.getUser();\n\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id);\n }\n };\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n\n\n ;\n /*\n * Sets the event request: { url } to be the current href\n */\n\n var _$request_44 = function _$request_44(win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function load(client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n };\n /* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */\n\n\n ;\n var _$session_45 = {\n load: function load(client) {\n client._sessionDelegate = sessionDelegate;\n }\n };\n var sessionDelegate = {\n startSession: function startSession(client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null; // exit early if the current releaseStage is not enabled\n\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n\n return sessionClient;\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n\n return sessionClient;\n },\n resumeSession: function resumeSession(client) {\n // Do nothing if there's already an active session\n if (client._session) {\n return client;\n } // If we have a paused session then make it the active session\n\n\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n } // Otherwise start a new session\n\n\n return client.startSession();\n },\n pauseSession: function pauseSession(client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n };\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n\n ;\n /*\n * Prevent collection of user IPs\n */\n\n var _$clientIp_46 = {\n load: function load(client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function defaultValue() {\n return true;\n },\n message: 'should be true|false',\n validate: function validate(value) {\n return value === true || value === false;\n }\n }\n }\n };\n var _$consoleBreadcrumbs_47 = {};\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n\n ;\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n\n ;\n /* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */\n\n ;\n /*\n * Leaves breadcrumbs when console log methods are called\n */\n\n _$consoleBreadcrumbs_47.load = function (client) {\n var isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage);\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return;\n\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]'; // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n\n try {\n stringified = String(arg);\n } catch (e) {} // if it stringifies to [object Object] attempt to JSON stringify\n\n\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n };\n\n if (\"production\" !== 'production') {\n _$consoleBreadcrumbs_47.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n }\n\n var CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n });\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n\n\n ;\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n\n ;\n /* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */\n\n ;\n var MAX_LINE_LENGTH = 200;\n var MAX_SCRIPT_LENGTH = 500000;\n\n var _$inlineScriptContent_48 = function _$inlineScriptContent_48(doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function load(client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = ''; // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n\n var isOldIe = !!doc.attachEvent;\n var DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading';\n\n var getHtml = function getHtml() {\n return doc.documentElement.outerHTML;\n }; // get whatever HTML exists at this point in time\n\n\n html = getHtml();\n var prev = doc.onreadystatechange; // then update it when the DOM content has loaded\n\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n\n var _lastScript = null;\n\n var updateLastScript = function updateLastScript(script) {\n _lastScript = script;\n };\n\n var getCurrentScript = function getCurrentScript() {\n var script = doc.currentScript || _lastScript;\n\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n\n return script;\n };\n\n var addSurroundingCode = function addSurroundingCode(lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml(); // simulate the raw html\n\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0]; // if frame.file exists and is not the original location of the page, this can't be an inline script\n\n if (frame && frame.file && frame.file.replace(/#.*$/, '') !== originalLocation.replace(/#.*$/, '')) return; // grab the last script known to have run\n\n var currentScript = getCurrentScript();\n\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)); // only attempt to grab some surrounding code if we have a line number\n\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber);\n }\n }\n }, true); // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function get() {\n return args[0];\n },\n replace: function replace(fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0]; // Proxy all the host objects whose prototypes have an addEventListener function\n\n\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript(); // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script); // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {// swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n } // IE8 doesn't let you call .apply() on setTimeout/setInterval\n\n\n if (fn.apply) return fn.apply(this, args);\n\n switch (args.length) {\n case 1:\n return fn(args[0]);\n\n case 2:\n return fn(args[0], args[1]);\n\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function validate(value) {\n return value === true || value === false;\n },\n defaultValue: function defaultValue() {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n };\n\n function __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n }\n\n function eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function get() {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function replace(fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n }\n /*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\n\n\n var _$interactionBreadcrumbs_49 = function _$interactionBreadcrumbs_49(win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function load(client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n }; // extract text content from a element\n\n\n var getNodeText = function getNodeText(el) {\n var text = el.textContent || el.innerText || '';\n if (!text && (el.type === 'submit' || el.type === 'button')) text = el.value;\n text = text.replace(/^\\s+|\\s+$/g, ''); // trim whitespace\n\n return truncate(text, 140);\n }; // Create a label from tagname, id and css class of the element\n\n\n function getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.')); // Can't get much more advanced with the current browser\n\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n } // try to get a more specific selector if this one matches more than one element\n\n\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join(''); // try prepending the parent node selector\n\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n }\n\n function truncate(value, length) {\n var ommision = '(...)';\n if (value && value.length <= length) return value;\n return value.slice(0, length - ommision.length) + ommision;\n }\n\n var _$navigationBreadcrumbs_50 = {};\n /*\n * Leaves breadcrumbs when navigation methods are called or events are emitted\n */\n\n _$navigationBreadcrumbs_50 = function _$navigationBreadcrumbs_50(win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function load(client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('navigation')) return; // returns a function that will drop a breadcrumb with a given name\n\n var drop = function drop(name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n }; // simple drops – just names, no meta\n\n\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true); // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n }); // hashchange has some metadata that we care about\n\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true); // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n }\n\n return plugin;\n };\n\n if (\"production\" !== 'production') {\n _$navigationBreadcrumbs_50.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n } // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n // just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n\n\n var relativeLocation = function relativeLocation(url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n };\n\n var stateChangeToMetadata = function stateChangeToMetadata(win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n };\n\n var wrapHistoryFn = function wrapHistoryFn(client, target, fn, win) {\n var orig = target[fn];\n\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation'); // if throttle plugin is in use, reset the event sent count\n\n if (typeof client.resetEventCount === 'function') client.resetEventCount(); // if the client is operating in auto session-mode, a new route should trigger a new session\n\n if (client._config.autoTrackSessions) client.startSession(); // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n };\n\n var getCurrentState = function getCurrentState(win) {\n try {\n return win.history.state;\n } catch (e) {}\n };\n\n var BREADCRUMB_TYPE = 'request'; // keys to safely store metadata on the request object\n\n var REQUEST_SETUP_KEY = 'BS~~S';\n var REQUEST_URL_KEY = 'BS~~U';\n var REQUEST_METHOD_KEY = 'BS~~M';\n /* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */\n\n ;\n /*\n * Leaves breadcrumbs when network requests occur\n */\n\n var _$networkBreadcrumbs_51 = function _$networkBreadcrumbs_51(_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n\n if (win === void 0) {\n win = window;\n }\n\n var restoreFunctions = [];\n var plugin = {\n load: function load(client) {\n if (!client._isBreadcrumbTypeEnabled('request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch(); // XMLHttpRequest monkey patch\n\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open; // override native open()\n\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n // store url and HTTP method for later\n this[REQUEST_URL_KEY] = url;\n this[REQUEST_METHOD_KEY] = method; // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n\n if (this[REQUEST_SETUP_KEY]) {\n this.removeEventListener('load', handleXHRLoad);\n this.removeEventListener('error', handleXHRError);\n } // attach load event listener\n\n\n this.addEventListener('load', handleXHRLoad); // attach error event listener\n\n this.addEventListener('error', handleXHRError);\n this[REQUEST_SETUP_KEY] = true;\n nativeOpen.apply(this, arguments);\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n\n function handleXHRLoad() {\n var url = this[REQUEST_URL_KEY];\n\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n } // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n\n var metadata = {\n status: this.status,\n request: this[REQUEST_METHOD_KEY] + \" \" + this[REQUEST_URL_KEY]\n };\n\n if (this.status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n\n function handleXHRError() {\n var url = this[REQUEST_URL_KEY];\n\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n }\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n } // failed to contact server\n\n\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: this[REQUEST_METHOD_KEY] + \" \" + this[REQUEST_URL_KEY]\n }, BREADCRUMB_TYPE);\n } // window.fetch monkey patch\n\n\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n\n if (urlOrRequest && _typeof(urlOrRequest) === 'object') {\n url = urlOrRequest.url;\n\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n\n if (method === undefined) {\n method = 'GET';\n }\n\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n\n var handleFetchSuccess = function handleFetchSuccess(response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n\n var handleFetchError = function handleFetchError(method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n\n return plugin;\n };\n /* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */\n\n\n ;\n /*\n * Throttles and dedupes events\n */\n\n var _$throttle_52 = {\n load: function load(client) {\n // track sent events for each init of the plugin\n var n = 0; // add onError hook\n\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(\"Cancelling event send due to maxEvents per session limit of \" + client._config.maxEvents + \" being reached\");\n\n return false;\n }\n\n n++;\n });\n\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function defaultValue() {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function validate(val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n };\n var _$stripQueryString_53 = {};\n /*\n * Remove query strings (and fragments) from stacktraces\n */\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n\n ;\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n\n ;\n _$stripQueryString_53 = {\n load: function load(client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n };\n\n var strip = _$stripQueryString_53._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n };\n /*\n * Automatically notifies Bugsnag when window.onerror is called\n */\n\n\n var _$onerror_54 = function _$onerror_54(win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function load(client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event; // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, 'window onerror', 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if ( // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n _typeof(messageOrEvent) === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error'; // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, 'window onerror', 1); // provide the original thing onerror received – not our error-like object we passed to _notify\n\n event.originalError = messageOrEvent; // include the raw input as metadata – it might contain more info than we extracted\n\n event.addMetadata('window onerror', {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, 'window onerror', 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n\n client._notify(event);\n }\n\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n }; // Sometimes the stacktrace has less information than was passed to window.onerror.\n // This function will augment the first stackframe with any useful info that was\n // received as arguments to the onerror callback.\n\n\n var decorateStack = function decorateStack(stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n };\n\n var isActualNumber = function isActualNumber(n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n };\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n\n\n ;\n /* removed: var _$iserror_20 = require('@bugsnag/core/lib/iserror'); */\n\n ;\n\n var _listener;\n /*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n\n\n var _$unhandledRejection_55 = function _$unhandledRejection_55(win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function load(client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n\n var listener = function listener(evt) {\n var error = evt.reason;\n var isBluebird = false; // accessing properties on evt.detail can throw errors (see #394)\n\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n\n client._notify(event, function (event) {\n if (_$iserror_20(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n\n _listener = listener;\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n\n _listener = null;\n };\n }\n\n return plugin;\n }; // The stack parser on bluebird stacks in FF get a suprious first frame:\n //\n // Error: derp\n // b@http://localhost:5000/bluebird.html:22:24\n // a@http://localhost:5000/bluebird.html:18:9\n // @http://localhost:5000/bluebird.html:14:9\n //\n // results in\n // […]\n // 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n // 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n // 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n // 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n //\n // so the following reduce/accumulator function removes such frames\n //\n // Bluebird pads method names with spaces so trim that too…\n // https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n\n\n var fixBluebirdStacktrace = function fixBluebirdStacktrace(error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n };\n\n var _$notifier_2 = {};\n var name = 'Bugsnag JavaScript';\n var version = '7.16.2';\n var url = 'https://github.com/bugsnag/bugsnag-js';\n /* removed: var _$Client_4 = require('@bugsnag/core/client'); */\n\n ;\n /* removed: var _$Event_6 = require('@bugsnag/core/event'); */\n\n ;\n /* removed: var _$Session_35 = require('@bugsnag/core/session'); */\n\n ;\n /* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */\n\n ;\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n\n ;\n /* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */\n\n ;\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n\n ; // extend the base config schema with some browser-specific options\n\n var __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n /* removed: var _$onerror_54 = require('@bugsnag/plugin-window-onerror'); */\n\n\n ;\n /* removed: var _$unhandledRejection_55 = require('@bugsnag/plugin-window-unhandled-rejection'); */\n\n ;\n /* removed: var _$app_38 = require('@bugsnag/plugin-app-duration'); */\n\n ;\n /* removed: var _$device_40 = require('@bugsnag/plugin-browser-device'); */\n\n ;\n /* removed: var _$context_39 = require('@bugsnag/plugin-browser-context'); */\n\n ;\n /* removed: var _$request_44 = require('@bugsnag/plugin-browser-request'); */\n\n ;\n /* removed: var _$throttle_52 = require('@bugsnag/plugin-simple-throttle'); */\n\n ;\n /* removed: var _$consoleBreadcrumbs_47 = require('@bugsnag/plugin-console-breadcrumbs'); */\n\n ;\n /* removed: var _$networkBreadcrumbs_51 = require('@bugsnag/plugin-network-breadcrumbs'); */\n\n ;\n /* removed: var _$navigationBreadcrumbs_50 = require('@bugsnag/plugin-navigation-breadcrumbs'); */\n\n ;\n /* removed: var _$interactionBreadcrumbs_49 = require('@bugsnag/plugin-interaction-breadcrumbs'); */\n\n ;\n /* removed: var _$inlineScriptContent_48 = require('@bugsnag/plugin-inline-script-content'); */\n\n ;\n /* removed: var _$session_45 = require('@bugsnag/plugin-browser-session'); */\n\n ;\n /* removed: var _$clientIp_46 = require('@bugsnag/plugin-client-ip'); */\n\n ;\n /* removed: var _$stripQueryString_53 = require('@bugsnag/plugin-strip-query-string'); */\n\n ; // delivery mechanisms\n\n /* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */\n\n ;\n /* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */\n\n ;\n var Bugsnag = {\n _client: null,\n createClient: function createClient(opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [// add browser-specific plugins\n _$app_38, _$device_40(), _$context_39(), _$request_44(), _$throttle_52, _$session_45, _$clientIp_46, _$stripQueryString_53, _$onerror_54(), _$unhandledRejection_55(), _$navigationBreadcrumbs_50(), _$interactionBreadcrumbs_49(), _$networkBreadcrumbs_51(), _$consoleBreadcrumbs_47, // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_48()]; // configure a client with user supplied options\n\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n\n bugsnag._logger.debug('Loaded!');\n\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state');\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function start(opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n\n return Bugsnag._client;\n }\n\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n }\n };\n\n _$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n\n Bugsnag._client._depth -= 1;\n return ret;\n };\n });\n\n _$notifier_2 = Bugsnag;\n _$notifier_2.Client = _$Client_4;\n _$notifier_2.Event = _$Event_6;\n _$notifier_2.Session = _$Session_35;\n _$notifier_2.Breadcrumb = _$Breadcrumb_3; // Export a \"default\" property for compatibility with ESM imports\n\n _$notifier_2[\"default\"] = Bugsnag;\n return _$notifier_2;\n});","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\n// require(\"@rails/ujs\").start()\n// require(\"turbolinks\").start()\n\nimport './bugsnag'\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n"],"sourceRoot":""}