diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d50d56072f1..9e3643586de5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 3.5.0 +* NEW: Can now disable automatic collection of breadcrumbs via `autoBreadcrumbs` config option. See: https://github.com/getsentry/raven-js/pull/686 +* NEW: Can now configure max number of breadcrumbs to collect via `maxBreadcrumbs`. See: https://github.com/getsentry/raven-js/pull/685 +* NEW: Added Vue.js plugin. See: https://github.com/getsentry/raven-js/pull/688 +* CHANGE: Raven.js now collects 100 breadcrumbs by default. See: https://github.com/getsentry/raven-js/pull/685 +* CHANGE: React Native plugin now also normalizes paths from CodePush. See: https://github.com/getsentry/raven-js/pull/683 + ## 3.4.1 * BUGFIX: Fix exception breadcrumbs having "undefined" for exception value. See: https://github.com/getsentry/raven-js/pull/681 diff --git a/bower.json b/bower.json index c2bba66a1037..c5d8f034f650 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.4.1", + "version": "3.5.0", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index 66645a94043f..0d53a32b7d9d 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index 5e8c3e7fc61a..0b891d90691e 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";function d(a,b){function c(){this.$get=["$window",function(b){return a}]}function e(a){a.decorator("$exceptionHandler",["Raven","$delegate",f])}function f(a,b){return function(c,d){a.captureException(c,{extra:{cause:d}}),b(c,d)}}b=b||window.angular,b&&(b.module("ngRaven",[]).provider("Raven",c).config(["$provide",e]),a.setDataCallback(function(a,b){d.a(a),b&&b(a)}))}var e=/^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/;d.a=function(a){var b=a.exception;if(b){b=b.values[0];var c=e.exec(b.value);c&&(b.type=c[1],b.value=c[2],a.message=b.type+": "+b.value,a.extra.angularDocs=c[3].substr(0,250))}},b.exports=d},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index 40fcf84d46c6..5f813f03a94c 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index ccfda8ef4312..8f9e46bd03eb 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";function d(a,b,c){b=b||window.console||{},c=c||{};for(var d=c.levels||["debug","info","warn","error"],f=d.pop(),g=function(b,c){a.captureMessage(b,c)};f;)e(b,f,g),f=d.pop()}var e=a(2).wrapMethod;b.exports=d},{2:2}],2:[function(a,b,c){"use strict";var d=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),b=""+a.join(" "),g={level:f,logger:"console",extra:{arguments:a}};c&&c(b,g),d&&Function.prototype.apply.call(d,e,a)}}};b.exports={wrapMethod:d}},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index 3680ef4e25b7..740b39c264b7 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index f8b24a3dc64f..f553880d11b7 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";function d(a,b){if(b=b||window.Ember){var c=b.onerror;b.onerror=function(b){a.captureException(b),"function"==typeof c&&c.call(this,b)},b.RSVP.on("error",function(b){b instanceof Error?a.captureException(b,{extra:{context:"Unhandled Promise error detected"}}):a.captureMessage("Unhandled Promise error detected",{extra:{reason:b}})})}}b.exports=d},{}]},{},[1])(1)}); //# sourceMappingURL=ember.min.js.map \ No newline at end of file diff --git a/dist/plugins/require.js b/dist/plugins/require.js index 8db2a43c80f3..ce847abeda2e 100644 --- a/dist/plugins/require.js +++ b/dist/plugins/require.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/require.min.js b/dist/plugins/require.min.js index c6a1a7845ead..62de633bec80 100644 --- a/dist/plugins/require.min.js +++ b/dist/plugins/require.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Require=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(b,c,d){"use strict";function e(c){"function"==typeof a&&a.amd&&(window.define=c.wrap({deep:!1},a),window.require=c.wrap({deep:!1},b))}c.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=require.min.js.map \ No newline at end of file diff --git a/dist/plugins/vue.js b/dist/plugins/vue.js new file mode 100644 index 000000000000..85a4eac3e876 --- /dev/null +++ b/dist/plugins/vue.js @@ -0,0 +1,45 @@ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2016 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Vue = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;og;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";function d(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(d,e){a.captureException(d,{extra:{componentName:b.util.formatComponentName(e),propsData:e.$options.propsData}}),"function"==typeof c&&c.call(this,d,e)}}}b.exports=d},{}]},{},[1])(1)}); +//# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/plugins/vue.min.js.map b/dist/plugins/vue.min.js.map new file mode 100644 index 000000000000..643466096028 --- /dev/null +++ b/dist/plugins/vue.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["vue.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Vue","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","vuePlugin","config","_oldOnError","errorHandler","error","vm","captureException","extra","componentName","util","formatComponentName","propsData","$options"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,IAAMZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAIF,EAAEW,OAAJT,EAAWA,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAK93B,YAEA,SAAS6B,GAAUpB,EAAOE,GAItB,GAHAA,EAAMA,GAAON,OAAOM,IAGfA,GAAQA,EAAImB,OAAjB,CAEA,GAAIC,GAAcpB,EAAImB,OAAOE,YAC7BrB,GAAImB,OAAOE,aAAe,SAAyBC,EAAOC,GACtDzB,EAAM0B,iBAAiBF,GACrBG,OACEC,cAAe1B,EAAI2B,KAAKC,oBAAoBL,GAC5CM,UAAWN,EAAGO,SAASD,aAIA,kBAAhBT,IACPA,EAAYN,KAAKjB,KAAMyB,EAAOC,KAK1CjC,EAAOD,QAAU6B,YAGN,IAAI","file":"vue.min.js"} \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 44059ff060d6..e55ffdd8b99c 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -113,6 +113,7 @@ var uuid4 = utils.uuid4; var htmlTreeAsString = utils.htmlTreeAsString; var parseUrl = utils.parseUrl; var isString = utils.isString; +var fill = utils.fill; var wrapConsoleMethod = _dereq_(3).wrapMethod; @@ -123,6 +124,7 @@ function now() { return +new Date(); } + // First, check for JSON support // If there is no JSON, we no-op the core features of Raven // since JSON is required to encode the payload @@ -145,7 +147,8 @@ function Raven() { crossOrigin: 'anonymous', collectWindowErrors: true, maxMessageLength: 0, - stackTraceLimit: 50 + stackTraceLimit: 50, + autoBreadcrumbs: true }; this._ignoreOnError = 0; this._isRavenInstalled = false; @@ -158,7 +161,6 @@ function Raven() { this._startTime = now(); this._wrappedBuiltIns = []; this._breadcrumbs = []; - this._breadcrumbLimit = 20; this._lastCapturedEvent = null; this._keypressTimeout; this._location = window.location; @@ -180,7 +182,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.4.1', + VERSION: '3.5.0', debug: false, @@ -230,6 +232,22 @@ Raven.prototype = { this._globalOptions.ignoreUrls = this._globalOptions.ignoreUrls.length ? joinRegExp(this._globalOptions.ignoreUrls) : false; this._globalOptions.whitelistUrls = this._globalOptions.whitelistUrls.length ? joinRegExp(this._globalOptions.whitelistUrls) : false; this._globalOptions.includePaths = joinRegExp(this._globalOptions.includePaths); + this._globalOptions.maxBreadcrumbs = Math.max(0, Math.min(this._globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true + }; + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + this._globalOptions.autoBreadcrumbs = autoBreadcrumbs; this._globalKey = uri.user; this._globalSecret = uri.pass && uri.pass.substr(1); @@ -260,7 +278,9 @@ Raven.prototype = { TraceKit.report.subscribe(function () { self._handleOnErrorStackInfo.apply(self, arguments); }); - this._wrapBuiltIns(); + this._instrumentTryCatch(); + if (self._globalOptions.autoBreadcrumbs) + this._instrumentBreadcrumbs(); // Install all of the plugins this._drainPlugins(); @@ -451,7 +471,7 @@ Raven.prototype = { }, obj); this._breadcrumbs.push(crumb); - if (this._breadcrumbs.length > this._breadcrumbLimit) { + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { this._breadcrumbs.shift(); } }, @@ -835,16 +855,10 @@ Raven.prototype = { /** * Install any queued plugins */ - _wrapBuiltIns: function() { + _instrumentTryCatch: function() { var self = this; - function fill(obj, name, replacement, noUndo) { - var orig = obj[name]; - obj[name] = replacement(orig); - if (!noUndo) { - self._wrappedBuiltIns.push([obj, name, orig]); - } - } + var wrappedBuiltIns = self._wrappedBuiltIns; function wrapTimeFn(orig) { return function (fn, t) { // preserve arity @@ -870,6 +884,8 @@ Raven.prototype = { }; } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + function wrapEventTarget(global) { var proto = window[global] && window[global].prototype; if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { @@ -883,10 +899,10 @@ Raven.prototype = { // can sometimes get 'Permission denied to access property "handle Event' } - - // TODO: more than just click + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function var before; - if (global === 'EventTarget' || global === 'Node') { + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { if (evtName === 'click'){ before = self._breadcrumbEventHandler(evtName); } else if (evtName === 'keypress') { @@ -895,46 +911,24 @@ Raven.prototype = { } return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); }; - }); + }, wrappedBuiltIns); fill(proto, 'removeEventListener', function (orig) { return function (evt, fn, capture, secure) { fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); return orig.call(this, evt, fn, capture, secure); }; - }); + }, wrappedBuiltIns); } } - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }, true /* noUndo */); // don't track filled methods on XHR instances - } - } - - fill(window, 'setTimeout', wrapTimeFn); - fill(window, 'setInterval', wrapTimeFn); + fill(window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(window, 'setInterval', wrapTimeFn, wrappedBuiltIns); if (window.requestAnimationFrame) { fill(window, 'requestAnimationFrame', function (orig) { return function (cb) { return orig(self.wrap(cb)); }; - }); - } - - // Capture breadcrubms from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. - if (this._hasDocument) { - if (document.addEventListener) { - document.addEventListener('click', self._breadcrumbEventHandler('click'), false); - document.addEventListener('keypress', self._keypressEventHandler(), false); - } - else { - // IE8 Compatibility - document.attachEvent('onclick', self._breadcrumbEventHandler('click')); - document.attachEvent('onkeypress', self._keypressEventHandler()); - } + }, wrappedBuiltIns); } // event targets borrowed from bugsnag-js: @@ -944,7 +938,41 @@ Raven.prototype = { wrapEventTarget(eventTargets[i]); } - if ('XMLHttpRequest' in window) { + var $ = window.jQuery || window.$; + if ($ && $.fn && $.fn.ready) { + fill($.fn, 'ready', function (orig) { + return function (fn) { + return orig.call(this, self.wrap(fn)); + }; + }, wrappedBuiltIns); + } + }, + + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function () { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in window) { var xhrproto = XMLHttpRequest.prototype; fill(xhrproto, 'open', function(origOpen) { return function (method, url) { // preserve arity @@ -960,7 +988,7 @@ Raven.prototype = { return origOpen.apply(this, arguments); }; - }); + }, wrappedBuiltIns); fill(xhrproto, 'send', function(origSend) { return function (data) { // preserve arity @@ -989,7 +1017,7 @@ Raven.prototype = { if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { fill(xhr, 'onreadystatechange', function (orig) { return self.wrap(orig, undefined, onreadystatechangeHandler); - }, true /* noUndo */); + } /* intentionally don't track this instrumentation */); } else { // if onreadystatechange wasn't actually set by the page on this xhr, we // are free to set our own and capture the breadcrumb @@ -998,7 +1026,21 @@ Raven.prototype = { return origSend.apply(this, arguments); }; - }); + }, wrappedBuiltIns); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (document.addEventListener) { + document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + document.addEventListener('keypress', self._keypressEventHandler(), false); + } + else { + // IE8 Compatibility + document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + document.attachEvent('onkeypress', self._keypressEventHandler()); + } } // record navigation (URL) changes @@ -1008,7 +1050,7 @@ Raven.prototype = { var chrome = window.chrome; var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; var hasPushState = !isChromePackagedApp && window.history && history.pushState; - if (hasPushState) { + if (autoBreadcrumbs.location && hasPushState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = window.onpopstate; window.onpopstate = function () { @@ -1023,7 +1065,7 @@ Raven.prototype = { fill(history, 'pushState', function (origPushState) { // note history.pushState.length is 0; intentionally not declaring // params to preserve 0 arity - return function(/* state, title, url */) { + return function (/* state, title, url */) { var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional @@ -1034,32 +1076,24 @@ Raven.prototype = { return origPushState.apply(this, arguments); }; - }); + }, wrappedBuiltIns); } - // console - var consoleMethodCallback = function (msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + if (autoBreadcrumbs.console && 'console' in window && console.log) { + // console + var consoleMethodCallback = function (msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if ('console' in window && console.log) { each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { wrapConsoleMethod(console, level, consoleMethodCallback); }); } - var $ = window.jQuery || window.$; - if ($ && $.fn && $.fn.ready) { - fill($.fn, 'ready', function (orig) { - return function (fn) { - return orig.call(this, self.wrap(fn)); - }; - }); - } }, _restoreBuiltIns: function () { @@ -1714,6 +1748,21 @@ function htmlElementAsString(elem) { return out.join(''); } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + if (track) { + track.push([obj, name, orig]); + } +} + module.exports = { isUndefined: isUndefined, isFunction: isFunction, @@ -1730,7 +1779,8 @@ module.exports = { uuid4: uuid4, htmlTreeAsString: htmlTreeAsString, htmlElementAsString: htmlElementAsString, - parseUrl: parseUrl + parseUrl: parseUrl, + fill: fill }; },{}],7:[function(_dereq_,module,exports){ diff --git a/dist/raven.min.js b/dist/raven.min.js index 9ff77948fcfd..1534d3c45681 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.4.1 (d824691) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(a,b,c){function d(a,b,c,d){return JSON.stringify(a,e(b,d),c)}function e(a,b){var c=[],d=[];return null==b&&(b=function(a,b){return c[0]===b?"[Circular ~]":"[Circular ~."+d.slice(0,c.indexOf(b)).join(".")+"]"}),function(e,f){if(c.length>0){var g=c.indexOf(this);~g?c.splice(g+1):c.push(this),~g?d.splice(g,1/0,e):d.push(e),~c.indexOf(f)&&(f=b.call(this,e,f))}else c.push(f);return null==a?f:a.call(this,e,f)}}c=b.exports=d,c.getSerialize=e},{}],2:[function(a,b,c){"use strict";function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){"use strict";var d=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),b=""+a.join(" "),g={level:f,logger:"console",extra:{arguments:a}};c&&c(b,g),d&&Function.prototype.apply.call(d,e,a)}}};b.exports={wrapMethod:d}},{}],4:[function(a,b,c){"use strict";function d(){return+new Date}function e(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b="undefined"!=typeof document,this.c=null,this.d=null,this.e=null,this.f=null,this.g=null,this.h={},this.i={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:0,stackTraceLimit:50},this.j=0,this.k=!1,this.l=Error.stackTraceLimit,this.m=window.console||{},this.n={},this.o=[],this.p=d(),this.q=[],this.r=[],this.s=20,this.t=null,this.u=window.location,this.v=this.u&&this.u.href;for(var a in this.m)this.n[a]=this.m[a]}var f=a(7),g=a(2),h=a(6),i=a(1),j=h.isFunction,k=h.isUndefined,l=h.isError,m=h.isEmptyObject,n=h.hasKey,o=h.joinRegExp,p=h.each,q=h.objectMerge,r=h.truncate,s=h.urlencode,t=h.uuid4,u=h.htmlTreeAsString,v=h.parseUrl,w=h.isString,x=a(3).wrapMethod,y="source protocol user pass host port path".split(" "),z=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;e.prototype={VERSION:"3.4.1",debug:!1,TraceKit:f,config:function(a,b){var c=this;if(this.e)return this.w("error","Error: Raven has already been configured"),this;if(!a)return this;b&&p(b,function(a,b){"tags"===a||"extra"===a?c.h[a]=b:c.i[a]=b});var d=this.x(a),e=d.path.lastIndexOf("/"),g=d.path.substr(1,e);return this.y=a,this.i.ignoreErrors.push(/^Script error\.?$/),this.i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),this.i.ignoreErrors=o(this.i.ignoreErrors),this.i.ignoreUrls=this.i.ignoreUrls.length?o(this.i.ignoreUrls):!1,this.i.whitelistUrls=this.i.whitelistUrls.length?o(this.i.whitelistUrls):!1,this.i.includePaths=o(this.i.includePaths),this.f=d.user,this.z=d.pass&&d.pass.substr(1),this.g=d.path.substr(e+1),this.e=this.A(d),this.B=this.e+"/"+g+"api/"+this.g+"/store/",f.collectWindowErrors=!!this.i.collectWindowErrors,this},install:function(){var a=this;return this.isSetup()&&!this.k&&(f.report.subscribe(function(){a.C.apply(a,arguments)}),this.D(),this.E(),this.k=!0),Error.stackTraceLimit=this.i.stackTraceLimit,this},context:function(a,b,c){return j(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&j(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.F(),e.captureException(h,a),h}}var e=this;if(k(b)&&!j(a))return a;if(j(a)&&(b=a,a=void 0),!j(b))return b;try{if(b.G)return b}catch(f){return b}if(b.H)return b.H;for(var g in b)n(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.H=d,d.G=!0,d.I=b,d},uninstall:function(){return f.report.uninstall(),this.J(),Error.stackTraceLimit=this.l,this.k=!1,this},captureException:function(a,b){if(!l(a))return this.captureMessage(a,b);this.c=a;try{var c=f.computeStackTrace(a);this.K(c,b)}catch(d){if(a!==d)throw d}return this},captureMessage:function(a,b){return this.i.ignoreErrors.test&&this.i.ignoreErrors.test(a)?void 0:(this.L(q({message:a+""},b)),this)},captureBreadcrumb:function(a){var b=q({timestamp:d()/1e3},a);this.r.push(b),this.r.length>this.s&&this.r.shift()},addPlugin:function(a){var b=Array.prototype.slice.call(arguments,1);return this.o.push([a,b]),this.k&&this.E(),this},setUserContext:function(a){return this.h.user=a,this},setExtraContext:function(a){return this.M("extra",a),this},setTagsContext:function(a){return this.M("tags",a),this},clearContext:function(){return this.h={},this},getContext:function(){return JSON.parse(i(this.h))},setEnvironment:function(a){return this.i.environment=a,this},setRelease:function(a){return this.i.release=a,this},setDataCallback:function(a){var b=this.i.dataCallback;return this.i.dataCallback=j(a)?function(c){return a(c,b)}:a,this},setShouldSendCallback:function(a){var b=this.i.shouldSendCallback;return this.i.shouldSendCallback=j(a)?function(c){return a(c,b)}:a,this},setTransport:function(a){return this.i.transport=a,this},lastException:function(){return this.c},lastEventId:function(){return this.d},isSetup:function(){return this.a?this.e?!0:(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.w("error","Error: Raven has not been configured.")),!1):!1},afterLoad:function(){var a=window.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(window.document){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new g("Missing eventId");var c=a.dsn||this.y;if(!c)throw new g("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.h.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var h=this.A(this.x(c)),i=document.createElement("script");i.async=!0,i.src=h+"/api/embed/error-page/"+e,(document.head||document.body).appendChild(i)}},F:function(){var a=this;this.j+=1,setTimeout(function(){a.j-=1})},N:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=document.createEventObject(),c.eventType=a);for(d in b)n(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},O:function(a){var b=this;return function(c){if(b.P=null,b.t!==c){b.t=c;var d,e=c.target;try{d=u(e)}catch(f){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Q:function(){var a=this,b=1e3;return function(c){var d=c.target,e=d&&d.tagName;if(e&&("INPUT"===e||"TEXTAREA"===e)){var f=a.P;f||a.O("input")(c),clearTimeout(f),a.P=setTimeout(function(){a.P=null},b)}}},R:function(a,b){var c=v(this.u.href),d=v(b),e=v(a);this.v=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){function a(a,b,c,d){var f=a[b];a[b]=c(f),d||e.q.push([a,b,f])}function b(a){return function(b,c){for(var d=new Array(arguments.length),f=0;d.length>f;++f)d[f]=arguments[f];var g=d[0];return j(g)&&(d[0]=e.wrap(g)),a.apply?a.apply(this,d):a(d[0],d[1])}}function c(b){var c=window[b]&&window[b].prototype;c&&c.hasOwnProperty&&c.hasOwnProperty("addEventListener")&&(a(c,"addEventListener",function(a){return function(c,d,f,g){try{d&&d.handleEvent&&(d.handleEvent=e.wrap(d.handleEvent))}catch(h){}var i;return("EventTarget"===b||"Node"===b)&&("click"===c?i=e.O(c):"keypress"===c&&(i=e.Q())),a.call(this,c,e.wrap(d,void 0,i),f,g)}}),a(c,"removeEventListener",function(a){return function(b,c,d,e){return c=c&&(c.H?c.H:c),a.call(this,b,c,d,e)}}))}function d(b,c){b in c&&j(c[b])&&a(c,b,function(a){return e.wrap(a)},!0)}var e=this;a(window,"setTimeout",b),a(window,"setInterval",b),window.requestAnimationFrame&&a(window,"requestAnimationFrame",function(a){return function(b){return a(e.wrap(b))}}),this.b&&(document.addEventListener?(document.addEventListener("click",e.O("click"),!1),document.addEventListener("keypress",e.Q(),!1)):(document.attachEvent("onclick",e.O("click")),document.attachEvent("onkeypress",e.Q())));for(var f=["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"],g=0;f.length>g;g++)c(f[g]);if("XMLHttpRequest"in window){var h=XMLHttpRequest.prototype;a(h,"open",function(a){return function(b,c){return w(c)&&-1===c.indexOf(e.f)&&(this.S={method:b,url:c,status_code:null}),a.apply(this,arguments)}}),a(h,"send",function(b){return function(c){function f(){if(g.S&&(1===g.readyState||4===g.readyState)){try{g.S.status_code=g.status}catch(a){}e.captureBreadcrumb({type:"http",category:"xhr",data:g.S})}}for(var g=this,h=["onload","onerror","onprogress"],i=0;h.length>i;i++)d(h[i],g);return"onreadystatechange"in g&&j(g.onreadystatechange)?a(g,"onreadystatechange",function(a){return e.wrap(a,void 0,f)},!0):g.onreadystatechange=f,b.apply(this,arguments)}})}var i=window.chrome,k=i&&i.app&&i.app.runtime,l=!k&&window.history&&history.pushState;if(l){var m=window.onpopstate;window.onpopstate=function(){var a=e.u.href;return e.R(e.v,a),m?m.apply(this,arguments):void 0},a(history,"pushState",function(a){return function(){var b=arguments.length>2?arguments[2]:void 0;return b&&e.R(e.v,b+""),a.apply(this,arguments)}})}var n=function(a,b){e.captureBreadcrumb({message:a,level:b.level,category:"console"})};"console"in window&&console.log&&p(["debug","info","warn","error","log"],function(a,b){x(console,b,n)});var o=window.jQuery||window.$;o&&o.fn&&o.fn.ready&&a(o.fn,"ready",function(a){return function(b){return a.call(this,e.wrap(b))}})},J:function(){for(var a;this.q.length;){a=this.q.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},E:function(){var a=this;p(this.o,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},x:function(a){var b=z.exec(a),c={},d=7;try{for(;d--;)c[y[d]]=b[d]||""}catch(e){throw new g("Invalid DSN: "+a)}if(c.pass&&!this.i.allowSecretKey)throw new g("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},A:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},C:function(){this.j||this.K.apply(this,arguments)},K:function(a,b){var c=this,d=[];a.stack&&a.stack.length&&p(a.stack,function(a,b){var e=c.T(b);e&&d.push(e)}),this.N("handle",{stackInfo:a,options:b}),this.U(a.name,a.message,a.url,a.lineno,d.slice(0,this.i.stackTraceLimit),b)},T:function(a){if(a.url){var b={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"};return b.in_app=!(this.i.includePaths.test&&!this.i.includePaths.test(b.filename)||/(Raven|TraceKit)\./.test(b["function"])||/raven\.(min\.)?js$/.test(b.filename)),b}},U:function(a,b,c,d,e,f){var g;if((!this.i.ignoreErrors.test||!this.i.ignoreErrors.test(b))&&(b+="",e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),(!this.i.ignoreUrls.test||!this.i.ignoreUrls.test(c))&&(!this.i.whitelistUrls.test||this.i.whitelistUrls.test(c)))){var h=q({exception:{values:[{type:a,value:b,stacktrace:g}]},culprit:c},f);this.L(h)}},V:function(a){var b=this.i.maxMessageLength;if(a.message&&(a.message=r(a.message,b)),a.exception){var c=a.exception.values[0];c.value=r(c.value,b)}return a},W:function(){if(this.b&&document.location&&document.location.href){var a={headers:{"User-Agent":navigator.userAgent}};return a.url=document.location.href,document.referrer&&(a.headers.Referer=document.referrer),a}},L:function(a){var b=this.i,c={project:this.g,logger:b.logger,platform:"javascript"},e=this.W();e&&(c.request=e),a=q(c,a),a.tags=q(q({},this.h.tags),a.tags),a.extra=q(q({},this.h.extra),a.extra),a.extra["session:duration"]=d()-this.p,this.r&&this.r.length>0&&(a.breadcrumbs={values:[].slice.call(this.r,0)}),m(a.tags)&&delete a.tags,this.h.user&&(a.user=this.h.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),j(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!m(a)&&(!j(b.shouldSendCallback)||b.shouldSendCallback(a))&&this.X(a)},X:function(a,b){var c=this,d=this.i;if(this.d=a.event_id||(a.event_id=t()),a=this.V(a),this.w("debug","Raven about to send:",a),this.isSetup()){var e={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this.f};this.z&&(e.sentry_secret=this.z);var f=a.exception&&a.exception.values[0];this.captureBreadcrumb({category:"sentry",message:f?(f.type?f.type+": ":"")+f.value:a.message,event_id:a.event_id,level:a.level||"error"});var g=this.B;(d.transport||this.Y).call(this,{url:g,auth:e,data:a,options:d,onSuccess:function(){c.N("success",{data:a,src:g}),b&&b()},onError:function(d){c.N("failure",{data:a,src:g}),d=d||new Error("Raven send failed (no additional details provided)"),b&&b(d)}})}},Y:function(a){function b(){200===c.status?a.onSuccess&&a.onSuccess():a.onError&&a.onError(new Error("Sentry error code: "+c.status))}var c=new XMLHttpRequest,d="withCredentials"in c||"undefined"!=typeof XDomainRequest;if(d){var e=a.url;"withCredentials"in c?c.onreadystatechange=function(){4===c.readyState&&b()}:(c=new XDomainRequest,e=e.replace(/^https?:/,""),c.onload=b),c.open("POST",e+"?"+s(a.auth)),c.send(i(a.data))}},w:function(a){this.n[a]&&this.debug&&Function.prototype.apply.call(this.n[a],this.m,[].slice.call(arguments,1))},M:function(a,b){k(b)?delete this.h[a]:this.h[a]=q(this.h[a]||{},b)}},e.prototype.setUser=e.prototype.setUserContext,e.prototype.setReleaseContext=e.prototype.setRelease,b.exports=e},{1:1,2:2,3:3,6:6,7:7}],5:[function(a,b,c){"use strict";var d=a(4),e=window.Raven,f=new d;f.noConflict=function(){return window.Raven=e,f},f.afterLoad(),b.exports=f},{4:4}],6:[function(a,b,c){"use strict";function d(a){return void 0===a}function e(a){return"function"==typeof a}function f(a){return"[object String]"===t.toString.call(a)}function g(a){return"object"==typeof a&&null!==a}function h(a){for(var b in a)return!1;return!0}function i(a){var b=t.toString.call(a);return g(a)&&"[object Error]"===b||"[object Exception]"===b||a instanceof Error}function j(a,b){var c,e;if(d(a.length))for(c in a)m(a,c)&&b.call(null,c,a[c]);else if(e=a.length)for(c=0;e>c;c++)b.call(null,c,a[c])}function k(a,b){return b?(j(b,function(b,c){a[b]=c}),a):a}function l(a,b){return!b||b>=a.length?a:a.substr(0,b)+"…"}function m(a,b){return t.hasOwnProperty.call(a,b)}function n(a){for(var b,c=[],d=0,e=a.length;e>d;d++)b=a[d],f(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function o(a){var b=[];return j(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}function p(a){var b=a.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!b)return{};var c=b[6]||"",d=b[8]||"";return{protocol:b[2],host:b[4],path:b[5],relative:b[5]+c+d}}function q(){var a=window.crypto||window.msCrypto;if(!d(a)&&a.getRandomValues){var b=new Uint16Array(8);a.getRandomValues(b),b[3]=4095&b[3]|16384,b[4]=16383&b[4]|32768;var c=function(a){for(var b=a.toString(16);4>b.length;)b="0"+b;return b};return c(b[0])+c(b[1])+c(b[2])+c(b[3])+c(b[4])+c(b[5])+c(b[6])+c(b[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}function r(a){for(var b,c=5,d=80,e=[],f=0,g=0,h=" > ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function s(a){var b,c,d,e,g,h=[];if(!a||!a.tagName)return"";if(h.push(a.tagName.toLowerCase()),a.id&&h.push("#"+a.id),b=a.className,b&&f(b))for(c=b.split(" "),g=0;c.length>g;g++)h.push("."+c[g]);var i=["type","name","title","alt"];for(g=0;i.length>g;g++)d=i[g],e=a.getAttribute(d),e&&h.push("["+d+'="'+e+'"]');return h.join("")}var t=Object.prototype;b.exports={isUndefined:d,isFunction:e,isString:f,isObject:g,isEmptyObject:h,isError:i,each:j,objectMerge:k,truncate:l,hasKey:m,joinRegExp:n,urlencode:o,uuid4:q,htmlTreeAsString:r,htmlElementAsString:s,parseUrl:p}},{}],7:[function(a,b,c){"use strict";function d(){return"undefined"==typeof document?"":document.location.href}var e=a(6),f=e.hasKey,g=e.isString,h=e.isUndefined,i={collectWindowErrors:!0,debug:!1},j=[].slice,k="?",l=/^(?:Uncaught (?:exception: )?)?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error): ?(.*)$/;i.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||i.collectWindowErrors){for(var d in s)if(f(s,d))try{s[d].apply(null,[a].concat(j.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function h(a,b,c,f,h){var j=null;if(v)i.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,a),o();else if(h)j=i.computeStackTrace(h),e(j,!0);else{var m,n={url:b,line:c,column:f},p=void 0,r=a;if(g(a)){var m=a.match(l);m&&(p=m[1],r=m[2])}n.func=k,j={name:p,message:r,url:d(),stack:[n]},e(j,!0)}return q?q.apply(this,arguments):!1}function m(){r||(q=window.onerror,window.onerror=h,r=!0)}function n(){r&&(window.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=j.call(arguments,1);if(v){if(u===a)return;o()}var d=i.computeStackTrace(a);if(v=d,u=a,t=c,window.setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),i.computeStackTrace=function(){function a(a){if(!h(a.stack)&&a.stack){for(var b,c,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=a.stack.split("\n"),j=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=i.length;m>l;++l){if(b=e.exec(i[l])){var n=b[2]&&-1!==b[2].indexOf("native");c={url:n?null:b[2],func:b[1]||k,args:n?[b[2]]:[],line:b[3]?+b[3]:null,column:b[4]?+b[4]:null}}else if(b=g.exec(i[l]))c={url:b[2],func:b[1]||k,args:[],line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=f.exec(i[l])))continue;c={url:b[3],func:b[1]||k,args:b[2]?b[2].split(","):[],line:b[4]?+b[4]:null,column:b[5]?+b[5]:null}}!c.func&&c.line&&(c.func=k),j.push(c)}return j.length?(j[0].column||h(a.columnNumber)||(j[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:d(),stack:j}):null}}function b(a){var b=a.stacktrace;if(!h(a.stacktrace)&&a.stacktrace){for(var c,e=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,f=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,g=b.split("\n"),i=[],j=0;g.length>j;j+=2){var l=null;(c=e.exec(g[j]))?l={url:c[2],line:+c[1],column:null,func:c[3],args:[]}:(c=f.exec(g[j]))&&(l={url:c[6],line:+c[1],column:+c[2],func:c[3]||c[4],args:c[5]?c[5].split(","):[]}),l&&(!l.func&&l.line&&(l.func=k),i.push(l))}return i.length?{name:a.name,message:a.message,url:d(),stack:i}:null}}function c(a){var b=a.message.split("\n");if(4>b.length)return null;for(var c,e=/^\s*Line (\d+) of linked script ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,f=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,g=/^\s*Line (\d+) of function script\s*$/i,h=[],i=(document.getElementsByTagName("script"),2);b.length>i;i+=2){var j=null;if(c=e.exec(b[i]))j={url:c[2],func:c[3],args:[],line:+c[1],column:null};else if(c=f.exec(b[i])){j={url:c[3],func:c[4],args:[],line:+c[1],column:null}}else if(c=g.exec(b[i])){var l=window.location.href.replace(/#.*$/,"");j={url:l,func:"",args:[],line:c[1],column:null}}j&&(j.func||(j.func=k),h.push(j))}return h.length?{name:a.name,message:b[0],url:d(),stack:h}:null}function e(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=k),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function f(a,b){for(var c,h,j=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=f.caller;o&&!n;o=o.caller)if(o!==g&&o!==i.report){if(h={url:null,func:k,line:null,column:null},o.name?h.func=o.name:(c=j.exec(o.toString()))&&(h.func=c[1]),"undefined"==typeof h.func)try{h.func=c.input.substring(0,c.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(h)}b&&l.splice(0,b);var q={name:a.name,message:a.message,url:d(),stack:l};return e(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function g(e,g){var h=null;g=null==g?0:+g;try{if(h=b(e))return h}catch(j){if(i.debug)throw j}try{if(h=a(e))return h}catch(j){if(i.debug)throw j}try{if(h=c(e))return h}catch(j){if(i.debug)throw j}try{if(h=f(e,g+1))return h}catch(j){if(i.debug)throw j}return{name:e.name,message:e.message,url:d()}}return g.augmentStackTraceWithInitialElement=e,g.computeStackTraceFromStackProp=a,g}(),b.exports=i},{6:6}]},{},[5])(5)}); +/*! Raven.js 3.5.0 (892008a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(a,b,c){function d(a,b,c,d){return JSON.stringify(a,e(b,d),c)}function e(a,b){var c=[],d=[];return null==b&&(b=function(a,b){return c[0]===b?"[Circular ~]":"[Circular ~."+d.slice(0,c.indexOf(b)).join(".")+"]"}),function(e,f){if(c.length>0){var g=c.indexOf(this);~g?c.splice(g+1):c.push(this),~g?d.splice(g,1/0,e):d.push(e),~c.indexOf(f)&&(f=b.call(this,e,f))}else c.push(f);return null==a?f:a.call(this,e,f)}}c=b.exports=d,c.getSerialize=e},{}],2:[function(a,b,c){"use strict";function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){"use strict";var d=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),b=""+a.join(" "),g={level:f,logger:"console",extra:{arguments:a}};c&&c(b,g),d&&Function.prototype.apply.call(d,e,a)}}};b.exports={wrapMethod:d}},{}],4:[function(a,b,c){"use strict";function d(){return+new Date}function e(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b="undefined"!=typeof document,this.c=null,this.d=null,this.e=null,this.f=null,this.g=null,this.h={},this.i={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:0,stackTraceLimit:50,autoBreadcrumbs:!0},this.j=0,this.k=!1,this.l=Error.stackTraceLimit,this.m=window.console||{},this.n={},this.o=[],this.p=d(),this.q=[],this.r=[],this.s=null,this.t=window.location,this.u=this.t&&this.t.href;for(var a in this.m)this.n[a]=this.m[a]}var f=a(7),g=a(2),h=a(6),i=a(1),j=h.isFunction,k=h.isUndefined,l=h.isError,m=h.isEmptyObject,n=h.hasKey,o=h.joinRegExp,p=h.each,q=h.objectMerge,r=h.truncate,s=h.urlencode,t=h.uuid4,u=h.htmlTreeAsString,v=h.parseUrl,w=h.isString,x=h.fill,y=a(3).wrapMethod,z="source protocol user pass host port path".split(" "),A=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;e.prototype={VERSION:"3.5.0",debug:!1,TraceKit:f,config:function(a,b){var c=this;if(this.e)return this.v("error","Error: Raven has already been configured"),this;if(!a)return this;b&&p(b,function(a,b){"tags"===a||"extra"===a?c.h[a]=b:c.i[a]=b});var d=this.w(a),e=d.path.lastIndexOf("/"),g=d.path.substr(1,e);this.x=a,this.i.ignoreErrors.push(/^Script error\.?$/),this.i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),this.i.ignoreErrors=o(this.i.ignoreErrors),this.i.ignoreUrls=this.i.ignoreUrls.length?o(this.i.ignoreUrls):!1,this.i.whitelistUrls=this.i.whitelistUrls.length?o(this.i.whitelistUrls):!1,this.i.includePaths=o(this.i.includePaths),this.i.maxBreadcrumbs=Math.max(0,Math.min(this.i.maxBreadcrumbs||100,100));var h={xhr:!0,console:!0,dom:!0,location:!0},i=this.i.autoBreadcrumbs;return"[object Object]"==={}.toString.call(i)?i=q(h,i):i!==!1&&(i=h),this.i.autoBreadcrumbs=i,this.f=d.user,this.y=d.pass&&d.pass.substr(1),this.g=d.path.substr(e+1),this.e=this.z(d),this.A=this.e+"/"+g+"api/"+this.g+"/store/",f.collectWindowErrors=!!this.i.collectWindowErrors,this},install:function(){var a=this;return this.isSetup()&&!this.k&&(f.report.subscribe(function(){a.B.apply(a,arguments)}),this.C(),a.i.autoBreadcrumbs&&this.D(),this.E(),this.k=!0),Error.stackTraceLimit=this.i.stackTraceLimit,this},context:function(a,b,c){return j(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&j(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.F(),e.captureException(h,a),h}}var e=this;if(k(b)&&!j(a))return a;if(j(a)&&(b=a,a=void 0),!j(b))return b;try{if(b.G)return b}catch(f){return b}if(b.H)return b.H;for(var g in b)n(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.H=d,d.G=!0,d.I=b,d},uninstall:function(){return f.report.uninstall(),this.J(),Error.stackTraceLimit=this.l,this.k=!1,this},captureException:function(a,b){if(!l(a))return this.captureMessage(a,b);this.c=a;try{var c=f.computeStackTrace(a);this.K(c,b)}catch(d){if(a!==d)throw d}return this},captureMessage:function(a,b){return this.i.ignoreErrors.test&&this.i.ignoreErrors.test(a)?void 0:(this.L(q({message:a+""},b)),this)},captureBreadcrumb:function(a){var b=q({timestamp:d()/1e3},a);this.r.push(b),this.r.length>this.i.maxBreadcrumbs&&this.r.shift()},addPlugin:function(a){var b=Array.prototype.slice.call(arguments,1);return this.o.push([a,b]),this.k&&this.E(),this},setUserContext:function(a){return this.h.user=a,this},setExtraContext:function(a){return this.M("extra",a),this},setTagsContext:function(a){return this.M("tags",a),this},clearContext:function(){return this.h={},this},getContext:function(){return JSON.parse(i(this.h))},setEnvironment:function(a){return this.i.environment=a,this},setRelease:function(a){return this.i.release=a,this},setDataCallback:function(a){var b=this.i.dataCallback;return this.i.dataCallback=j(a)?function(c){return a(c,b)}:a,this},setShouldSendCallback:function(a){var b=this.i.shouldSendCallback;return this.i.shouldSendCallback=j(a)?function(c){return a(c,b)}:a,this},setTransport:function(a){return this.i.transport=a,this},lastException:function(){return this.c},lastEventId:function(){return this.d},isSetup:function(){return this.a?this.e?!0:(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.v("error","Error: Raven has not been configured.")),!1):!1},afterLoad:function(){var a=window.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(window.document){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new g("Missing eventId");var c=a.dsn||this.x;if(!c)throw new g("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.h.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var h=this.z(this.w(c)),i=document.createElement("script");i.async=!0,i.src=h+"/api/embed/error-page/"+e,(document.head||document.body).appendChild(i)}},F:function(){var a=this;this.j+=1,setTimeout(function(){a.j-=1})},N:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=document.createEventObject(),c.eventType=a);for(d in b)n(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},O:function(a){var b=this;return function(c){if(b.P=null,b.s!==c){b.s=c;var d,e=c.target;try{d=u(e)}catch(f){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Q:function(){var a=this,b=1e3;return function(c){var d=c.target,e=d&&d.tagName;if(e&&("INPUT"===e||"TEXTAREA"===e)){var f=a.P;f||a.O("input")(c),clearTimeout(f),a.P=setTimeout(function(){a.P=null},b)}}},R:function(a,b){var c=v(this.t.href),d=v(b),e=v(a);this.u=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;e.length>f;++f)e[f]=arguments[f];var g=e[0];return j(g)&&(e[0]=c.wrap(g)),a.apply?a.apply(this,e):a(e[0],e[1])}}function b(a){var b=window[a]&&window[a].prototype;b&&b.hasOwnProperty&&b.hasOwnProperty("addEventListener")&&(x(b,"addEventListener",function(b){return function(d,f,g,h){try{f&&f.handleEvent&&(f.handleEvent=c.wrap(f.handleEvent))}catch(i){}var j;return e&&e.dom&&("EventTarget"===a||"Node"===a)&&("click"===d?j=c.O(d):"keypress"===d&&(j=c.Q())),b.call(this,d,c.wrap(f,void 0,j),g,h)}},d),x(b,"removeEventListener",function(a){return function(b,c,d,e){return c=c&&(c.H?c.H:c),a.call(this,b,c,d,e)}},d))}var c=this,d=c.q,e=this.i.autoBreadcrumbs;x(window,"setTimeout",a,d),x(window,"setInterval",a,d),window.requestAnimationFrame&&x(window,"requestAnimationFrame",function(a){return function(b){return a(c.wrap(b))}},d);for(var f=["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"],g=0;f.length>g;g++)b(f[g]);var h=window.jQuery||window.$;h&&h.fn&&h.fn.ready&&x(h.fn,"ready",function(a){return function(b){return a.call(this,c.wrap(b))}},d)},D:function(){function a(a,c){a in c&&j(c[a])&&x(c,a,function(a){return b.wrap(a)})}var b=this,c=this.i.autoBreadcrumbs,d=b.q;if(c.xhr&&"XMLHttpRequest"in window){var e=XMLHttpRequest.prototype;x(e,"open",function(a){return function(c,d){return w(d)&&-1===d.indexOf(b.f)&&(this.S={method:c,url:d,status_code:null}),a.apply(this,arguments)}},d),x(e,"send",function(c){return function(d){function e(){if(f.S&&(1===f.readyState||4===f.readyState)){try{f.S.status_code=f.status}catch(a){}b.captureBreadcrumb({type:"http",category:"xhr",data:f.S})}}for(var f=this,g=["onload","onerror","onprogress"],h=0;g.length>h;h++)a(g[h],f);return"onreadystatechange"in f&&j(f.onreadystatechange)?x(f,"onreadystatechange",function(a){return b.wrap(a,void 0,e)}):f.onreadystatechange=e,c.apply(this,arguments)}},d)}c.dom&&this.b&&(document.addEventListener?(document.addEventListener("click",b.O("click"),!1),document.addEventListener("keypress",b.Q(),!1)):(document.attachEvent("onclick",b.O("click")),document.attachEvent("onkeypress",b.Q())));var f=window.chrome,g=f&&f.app&&f.app.runtime,h=!g&&window.history&&history.pushState;if(c.location&&h){var i=window.onpopstate;window.onpopstate=function(){var a=b.t.href;return b.R(b.u,a),i?i.apply(this,arguments):void 0},x(history,"pushState",function(a){return function(){var c=arguments.length>2?arguments[2]:void 0;return c&&b.R(b.u,c+""),a.apply(this,arguments)}},d)}if(c.console&&"console"in window&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};p(["debug","info","warn","error","log"],function(a,b){y(console,b,k)})}},J:function(){for(var a;this.q.length;){a=this.q.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},E:function(){var a=this;p(this.o,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},w:function(a){var b=A.exec(a),c={},d=7;try{for(;d--;)c[z[d]]=b[d]||""}catch(e){throw new g("Invalid DSN: "+a)}if(c.pass&&!this.i.allowSecretKey)throw new g("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},z:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.j||this.K.apply(this,arguments)},K:function(a,b){var c=this,d=[];a.stack&&a.stack.length&&p(a.stack,function(a,b){var e=c.T(b);e&&d.push(e)}),this.N("handle",{stackInfo:a,options:b}),this.U(a.name,a.message,a.url,a.lineno,d.slice(0,this.i.stackTraceLimit),b)},T:function(a){if(a.url){var b={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"};return b.in_app=!(this.i.includePaths.test&&!this.i.includePaths.test(b.filename)||/(Raven|TraceKit)\./.test(b["function"])||/raven\.(min\.)?js$/.test(b.filename)),b}},U:function(a,b,c,d,e,f){var g;if((!this.i.ignoreErrors.test||!this.i.ignoreErrors.test(b))&&(b+="",e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),(!this.i.ignoreUrls.test||!this.i.ignoreUrls.test(c))&&(!this.i.whitelistUrls.test||this.i.whitelistUrls.test(c)))){var h=q({exception:{values:[{type:a,value:b,stacktrace:g}]},culprit:c},f);this.L(h)}},V:function(a){var b=this.i.maxMessageLength;if(a.message&&(a.message=r(a.message,b)),a.exception){var c=a.exception.values[0];c.value=r(c.value,b)}return a},W:function(){if(this.b&&document.location&&document.location.href){var a={headers:{"User-Agent":navigator.userAgent}};return a.url=document.location.href,document.referrer&&(a.headers.Referer=document.referrer),a}},L:function(a){var b=this.i,c={project:this.g,logger:b.logger,platform:"javascript"},e=this.W();e&&(c.request=e),a=q(c,a),a.tags=q(q({},this.h.tags),a.tags),a.extra=q(q({},this.h.extra),a.extra),a.extra["session:duration"]=d()-this.p,this.r&&this.r.length>0&&(a.breadcrumbs={values:[].slice.call(this.r,0)}),m(a.tags)&&delete a.tags,this.h.user&&(a.user=this.h.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),j(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!m(a)&&(!j(b.shouldSendCallback)||b.shouldSendCallback(a))&&this.X(a)},X:function(a,b){var c=this,d=this.i;if(this.d=a.event_id||(a.event_id=t()),a=this.V(a),this.v("debug","Raven about to send:",a),this.isSetup()){var e={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this.f};this.y&&(e.sentry_secret=this.y);var f=a.exception&&a.exception.values[0];this.captureBreadcrumb({category:"sentry",message:f?(f.type?f.type+": ":"")+f.value:a.message,event_id:a.event_id,level:a.level||"error"});var g=this.A;(d.transport||this.Y).call(this,{url:g,auth:e,data:a,options:d,onSuccess:function(){c.N("success",{data:a,src:g}),b&&b()},onError:function(d){c.N("failure",{data:a,src:g}),d=d||new Error("Raven send failed (no additional details provided)"),b&&b(d)}})}},Y:function(a){function b(){200===c.status?a.onSuccess&&a.onSuccess():a.onError&&a.onError(new Error("Sentry error code: "+c.status))}var c=new XMLHttpRequest,d="withCredentials"in c||"undefined"!=typeof XDomainRequest;if(d){var e=a.url;"withCredentials"in c?c.onreadystatechange=function(){4===c.readyState&&b()}:(c=new XDomainRequest,e=e.replace(/^https?:/,""),c.onload=b),c.open("POST",e+"?"+s(a.auth)),c.send(i(a.data))}},v:function(a){this.n[a]&&this.debug&&Function.prototype.apply.call(this.n[a],this.m,[].slice.call(arguments,1))},M:function(a,b){k(b)?delete this.h[a]:this.h[a]=q(this.h[a]||{},b)}},e.prototype.setUser=e.prototype.setUserContext,e.prototype.setReleaseContext=e.prototype.setRelease,b.exports=e},{1:1,2:2,3:3,6:6,7:7}],5:[function(a,b,c){"use strict";var d=a(4),e=window.Raven,f=new d;f.noConflict=function(){return window.Raven=e,f},f.afterLoad(),b.exports=f},{4:4}],6:[function(a,b,c){"use strict";function d(a){return void 0===a}function e(a){return"function"==typeof a}function f(a){return"[object String]"===u.toString.call(a)}function g(a){return"object"==typeof a&&null!==a}function h(a){for(var b in a)return!1;return!0}function i(a){var b=u.toString.call(a);return g(a)&&"[object Error]"===b||"[object Exception]"===b||a instanceof Error}function j(a,b){var c,e;if(d(a.length))for(c in a)m(a,c)&&b.call(null,c,a[c]);else if(e=a.length)for(c=0;e>c;c++)b.call(null,c,a[c])}function k(a,b){return b?(j(b,function(b,c){a[b]=c}),a):a}function l(a,b){return!b||b>=a.length?a:a.substr(0,b)+"…"}function m(a,b){return u.hasOwnProperty.call(a,b)}function n(a){for(var b,c=[],d=0,e=a.length;e>d;d++)b=a[d],f(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function o(a){var b=[];return j(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}function p(a){var b=a.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!b)return{};var c=b[6]||"",d=b[8]||"";return{protocol:b[2],host:b[4],path:b[5],relative:b[5]+c+d}}function q(){var a=window.crypto||window.msCrypto;if(!d(a)&&a.getRandomValues){var b=new Uint16Array(8);a.getRandomValues(b),b[3]=4095&b[3]|16384,b[4]=16383&b[4]|32768;var c=function(a){for(var b=a.toString(16);4>b.length;)b="0"+b;return b};return c(b[0])+c(b[1])+c(b[2])+c(b[3])+c(b[4])+c(b[5])+c(b[6])+c(b[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}function r(a){for(var b,c=5,d=80,e=[],f=0,g=0,h=" > ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function s(a){var b,c,d,e,g,h=[];if(!a||!a.tagName)return"";if(h.push(a.tagName.toLowerCase()),a.id&&h.push("#"+a.id),b=a.className,b&&f(b))for(c=b.split(" "),g=0;c.length>g;g++)h.push("."+c[g]);var i=["type","name","title","alt"];for(g=0;i.length>g;g++)d=i[g],e=a.getAttribute(d),e&&h.push("["+d+'="'+e+'"]');return h.join("")}function t(a,b,c,d){var e=a[b];a[b]=c(e),d&&d.push([a,b,e])}var u=Object.prototype;b.exports={isUndefined:d,isFunction:e,isString:f,isObject:g,isEmptyObject:h,isError:i,each:j,objectMerge:k,truncate:l,hasKey:m,joinRegExp:n,urlencode:o,uuid4:q,htmlTreeAsString:r,htmlElementAsString:s,parseUrl:p,fill:t}},{}],7:[function(a,b,c){"use strict";function d(){return"undefined"==typeof document?"":document.location.href}var e=a(6),f=e.hasKey,g=e.isString,h=e.isUndefined,i={collectWindowErrors:!0,debug:!1},j=[].slice,k="?",l=/^(?:Uncaught (?:exception: )?)?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error): ?(.*)$/;i.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||i.collectWindowErrors){for(var d in s)if(f(s,d))try{s[d].apply(null,[a].concat(j.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function h(a,b,c,f,h){var j=null;if(v)i.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,a),o();else if(h)j=i.computeStackTrace(h),e(j,!0);else{var m,n={url:b,line:c,column:f},p=void 0,r=a;if(g(a)){var m=a.match(l);m&&(p=m[1],r=m[2])}n.func=k,j={name:p,message:r,url:d(),stack:[n]},e(j,!0)}return q?q.apply(this,arguments):!1}function m(){r||(q=window.onerror,window.onerror=h,r=!0)}function n(){r&&(window.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=j.call(arguments,1);if(v){if(u===a)return;o()}var d=i.computeStackTrace(a);if(v=d,u=a,t=c,window.setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),i.computeStackTrace=function(){function a(a){if(!h(a.stack)&&a.stack){for(var b,c,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=a.stack.split("\n"),j=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=i.length;m>l;++l){if(b=e.exec(i[l])){var n=b[2]&&-1!==b[2].indexOf("native");c={url:n?null:b[2],func:b[1]||k,args:n?[b[2]]:[],line:b[3]?+b[3]:null,column:b[4]?+b[4]:null}}else if(b=g.exec(i[l]))c={url:b[2],func:b[1]||k,args:[],line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=f.exec(i[l])))continue;c={url:b[3],func:b[1]||k,args:b[2]?b[2].split(","):[],line:b[4]?+b[4]:null,column:b[5]?+b[5]:null}}!c.func&&c.line&&(c.func=k),j.push(c)}return j.length?(j[0].column||h(a.columnNumber)||(j[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:d(),stack:j}):null}}function b(a){var b=a.stacktrace;if(!h(a.stacktrace)&&a.stacktrace){for(var c,e=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,f=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,g=b.split("\n"),i=[],j=0;g.length>j;j+=2){var l=null;(c=e.exec(g[j]))?l={url:c[2],line:+c[1],column:null,func:c[3],args:[]}:(c=f.exec(g[j]))&&(l={url:c[6],line:+c[1],column:+c[2],func:c[3]||c[4],args:c[5]?c[5].split(","):[]}),l&&(!l.func&&l.line&&(l.func=k),i.push(l))}return i.length?{name:a.name,message:a.message,url:d(),stack:i}:null}}function c(a){var b=a.message.split("\n");if(4>b.length)return null;for(var c,e=/^\s*Line (\d+) of linked script ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,f=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,g=/^\s*Line (\d+) of function script\s*$/i,h=[],i=(document.getElementsByTagName("script"),2);b.length>i;i+=2){var j=null;if(c=e.exec(b[i]))j={url:c[2],func:c[3],args:[],line:+c[1],column:null};else if(c=f.exec(b[i])){j={url:c[3],func:c[4],args:[],line:+c[1],column:null}}else if(c=g.exec(b[i])){var l=window.location.href.replace(/#.*$/,"");j={url:l,func:"",args:[],line:c[1],column:null}}j&&(j.func||(j.func=k),h.push(j))}return h.length?{name:a.name,message:b[0],url:d(),stack:h}:null}function e(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=k),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function f(a,b){for(var c,h,j=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=f.caller;o&&!n;o=o.caller)if(o!==g&&o!==i.report){if(h={url:null,func:k,line:null,column:null},o.name?h.func=o.name:(c=j.exec(o.toString()))&&(h.func=c[1]),"undefined"==typeof h.func)try{h.func=c.input.substring(0,c.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(h)}b&&l.splice(0,b);var q={name:a.name,message:a.message,url:d(),stack:l};return e(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function g(e,g){var h=null;g=null==g?0:+g;try{if(h=b(e))return h}catch(j){if(i.debug)throw j}try{if(h=a(e))return h}catch(j){if(i.debug)throw j}try{if(h=c(e))return h}catch(j){if(i.debug)throw j}try{if(h=f(e,g+1))return h}catch(j){if(i.debug)throw j}return{name:e.name,message:e.message,url:d()}}return g.augmentStackTraceWithInitialElement=e,g.computeStackTraceFromStackProp=a,g}(),b.exports=i},{6:6}]},{},[5])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 95b91158579e..1d55e02b710a 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","stringify","obj","replacer","spaces","cycleReplacer","JSON","serializer","stack","keys","key","value","slice","indexOf","join","thisPos","splice","push","Infinity","getSerialize",2,"RavenConfigError","message","name","prototype","constructor",3,"wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","arguments","msg","data","logger","extra","Function","apply",4,"now","Date","_hasJSON","_hasDocument","document","_lastCapturedException","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","crossOrigin","collectWindowErrors","maxMessageLength","stackTraceLimit","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_breadcrumbLimit","_lastCapturedEvent","_location","location","_lastHref","href","method","TraceKit","utils","isFunction","isUndefined","isError","isEmptyObject","hasKey","joinRegExp","each","objectMerge","truncate","urlencode","uuid4","htmlTreeAsString","parseUrl","isString","wrapConsoleMethod","dsnKeys","split","dsnPattern","VERSION","debug","config","dsn","options","_logDebug","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_wrapBuiltIns","_drainPlugins","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__inner__","uninstall","_restoreBuiltIns","ex","captureMessage","computeStackTrace","_handleStackInfo","ex1","test","_send","captureBreadcrumb","crumb","timestamp","shift","addPlugin","plugin","pluginArgs","Array","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","release","setDataCallback","original","dataCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","F","setTimeout","N","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","O","evtName","_keypressTimeout","target","elem","category","Q","debounceDuration","tagName","timeout","_breadcrumbEventHandler","clearTimeout","R","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","fill","replacement","noUndo","orig","wrapTimeFn","fn","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","_keypressEventHandler","wrapProp","prop","xhr","requestAnimationFrame","cb","addEventListener","attachEvent","eventTargets","xhrproto","XMLHttpRequest","origOpen","url","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","type","props","j","onreadystatechange","chrome","isChromePackagedApp","app","runtime","hasPushState","history","pushState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","origPushState","consoleMethodCallback","log","_","$","jQuery","ready","J","builtin","E","installer","concat","x","str","m","exec","allowSecretKey","A","port","C","K","stackInfo","frames","frame","_normalizeFrame","_triggerEvent","_processException","lineno","T","normalized","filename","line","colno","column","function","in_app","U","fileurl","stacktrace","reverse","exception","values","culprit","V","max","W","httpData","headers","User-Agent","navigator","userAgent","referrer","Referer","L","globalOptions","baseData","project","platform","_getHttpData","request","breadcrumbs","serverName","server_name","_sendProcessedPayload","X","event_id","_trimPacket","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","error","Y","opts","handler","hasCORS","XDomainRequest","replace","onload","open","send","w","M","setUser","setReleaseContext","6","7",5,"RavenConstructor","_Raven","noConflict","what","objectPrototype","toString","isObject","obj1","obj2","object","patterns","pattern","sources","len","source","RegExp","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","id","attrWhitelist","getAttribute","Object","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","installGlobalHandler","handlers","unsubscribe","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","parts","element","gecko","winjs","lines","isNative","columnNumber","computeStackTraceFromStacktraceProp","opera10Regex","opera11Regex","computeStackTraceFromOperaMultiLineMessage","lineRE1","lineRE2","lineRE3","getElementsByTagName","item","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","functionName","funcs","recursion","curr","caller","input","substring","result","sourceURL","fileName","lineNumber","description"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","stringify","obj","replacer","spaces","cycleReplacer","JSON","serializer","stack","keys","key","value","slice","indexOf","join","thisPos","splice","push","Infinity","getSerialize",2,"RavenConfigError","message","name","prototype","constructor",3,"wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","arguments","msg","data","logger","extra","Function","apply",4,"now","Date","_hasJSON","_hasDocument","document","_lastCapturedException","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","crossOrigin","collectWindowErrors","maxMessageLength","stackTraceLimit","autoBreadcrumbs","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","method","TraceKit","utils","isFunction","isUndefined","isError","isEmptyObject","hasKey","joinRegExp","each","objectMerge","truncate","urlencode","uuid4","htmlTreeAsString","parseUrl","isString","fill","wrapConsoleMethod","dsnKeys","split","dsnPattern","VERSION","debug","config","dsn","options","_logDebug","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","toString","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__inner__","uninstall","_restoreBuiltIns","ex","captureMessage","computeStackTrace","_handleStackInfo","ex1","test","_send","captureBreadcrumb","crumb","timestamp","shift","addPlugin","plugin","pluginArgs","Array","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","release","setDataCallback","original","dataCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","F","setTimeout","N","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","O","evtName","_keypressTimeout","target","elem","category","Q","debounceDuration","tagName","timeout","_breadcrumbEventHandler","clearTimeout","R","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","wrapTimeFn","orig","fn","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","$","jQuery","ready","D","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","url","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","type","props","j","onreadystatechange","addEventListener","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushState","history","pushState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","origPushState","log","consoleMethodCallback","_","J","builtin","E","installer","concat","w","str","m","exec","allowSecretKey","z","port","B","K","stackInfo","frames","frame","_normalizeFrame","_triggerEvent","_processException","lineno","T","normalized","filename","line","colno","column","function","in_app","U","fileurl","stacktrace","reverse","exception","values","culprit","V","W","httpData","headers","User-Agent","navigator","userAgent","referrer","Referer","L","globalOptions","baseData","project","platform","_getHttpData","request","breadcrumbs","serverName","server_name","_sendProcessedPayload","X","event_id","_trimPacket","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","error","Y","opts","handler","hasCORS","XDomainRequest","replace","onload","open","send","v","M","setUser","setReleaseContext","6","7",5,"RavenConstructor","_Raven","noConflict","what","objectPrototype","isObject","obj1","obj2","object","patterns","pattern","sources","len","source","RegExp","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","c","random","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","id","attrWhitelist","getAttribute","replacement","track","Object","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","installGlobalHandler","handlers","unsubscribe","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","parts","element","gecko","winjs","lines","isNative","columnNumber","computeStackTraceFromStacktraceProp","opera10Regex","opera11Regex","computeStackTraceFromOperaMultiLineMessage","lineRE1","lineRE2","lineRE3","getElementsByTagName","item","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","functionName","funcs","recursion","curr","caller","input","substring","result","sourceURL","fileName","lineNumber","description"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAIF,EAAEW,OAAJT,EAAWA,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAIp0B,QAAS2B,GAAUC,EAAKC,EAAUC,EAAQC,GACxC,MAAOC,MAAKL,UAAUC,EAAKK,EAAWJ,EAAUE,GAAgBD,GAGlE,QAASG,GAAWJ,EAAUE,GAC5B,GAAIG,MAAYC,IAOhB,OALqB,OAAjBJ,IAAuBA,EAAgB,SAASK,EAAKC,GACvD,MAAIH,GAAM,KAAOG,EAAc,eACxB,eAAiBF,EAAKG,MAAM,EAAGJ,EAAMK,QAAQF,IAAQG,KAAK,KAAO,MAGnE,SAASJ,EAAKC,GACnB,GAAIH,EAAMV,OAAS,EAAG,CACpB,GAAIiB,GAAUP,EAAMK,QAAQ/B,OAC3BiC,EAAUP,EAAMQ,OAAOD,EAAU,GAAKP,EAAMS,KAAKnC,OACjDiC,EAAUN,EAAKO,OAAOD,EAASG,EAAAA,EAAUR,GAAOD,EAAKQ,KAAKP,IACtDF,EAAMK,QAAQF,KAAQA,EAAQN,EAAcR,KAAKf,KAAM4B,EAAKC,QAE9DH,GAAMS,KAAKN,EAEhB,OAAmB,OAAZR,EAAmBQ,EAAQR,EAASN,KAAKf,KAAM4B,EAAKC,IAxB/DrC,EAAUC,EAAOD,QAAU2B,EAC3B3B,EAAQ6C,aAAeZ,OA2BjBa,GAAG,SAASpB,EAAQzB,EAAOD,GACjC,YAEA,SAAS+C,GAAiBC,GACtBxC,KAAKyC,KAAO,mBACZzC,KAAKwC,QAAUA,EAEnBD,EAAiBG,UAAY,GAAI9B,OACjC2B,EAAiBG,UAAUC,YAAcJ,EAEzC9C,EAAOD,QAAU+C,OAEXK,GAAG,SAAS1B,EAAQzB,EAAOD,GACjC,YAEA,IAAIqD,GAAa,SAASC,EAASC,EAAOC,GACtC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EACZ,UACAA,CAEND,GAAQC,GAAS,WACb,GAAIK,MAAUtB,MAAMf,KAAKsC,WAErBC,EAAM,GAAKF,EAAKpB,KAAK,KACrBuB,GAAQR,MAAOI,EAAaK,OAAQ,UAAWC,OAAQJ,UAAaD,GACxEJ,IAAYA,EAASM,EAAKC,GAGtBN,GAGAS,SAAShB,UAAUiB,MAAM5C,KACrBkC,EACAC,EACAE,KAMhB3D,GAAOD,SACHqD,WAAYA,QAGVe,GAAG,SAAS1C,EAAQzB,EAAOD,GAEjC,YA4BA,SAASqE,KACL,OAAQ,GAAIC,MAOhB,QAAS7D,KACLD,KAAK+D,IAA8B,gBAATvC,QAAqBA,KAAKL,WAEpDnB,KAAKgE,EAAmC,mBAAbC,UAC3BjE,KAAKkE,EAAyB,KAC9BlE,KAAKmE,EAAe,KACpBnE,KAAKoE,EAAgB,KACrBpE,KAAKqE,EAAa,KAClBrE,KAAKsE,EAAiB,KACtBtE,KAAKuE,KACLvE,KAAKwE,GACDhB,OAAQ,aACRiB,gBACAC,cACAC,iBACAC,gBACAC,YAAa,YACbC,qBAAqB,EACrBC,iBAAkB,EAClBC,gBAAiB,GACjBC,iBAAiB,GAErBjF,KAAKkF,EAAiB,EACtBlF,KAAKmF,GAAoB,EACzBnF,KAAKoF,EAAgCxE,MAAMoE,gBAG3ChF,KAAKqF,EAAmBxF,OAAOiD,YAC/B9C,KAAKsF,KACLtF,KAAKuF,KACLvF,KAAKwF,EAAa3B,IAClB7D,KAAKyF,KACLzF,KAAK0F,KACL1F,KAAK2F,EAAqB,KAE1B3F,KAAK4F,EAAY/F,OAAOgG,SACxB7F,KAAK8F,EAAY9F,KAAK4F,GAAa5F,KAAK4F,EAAUG,IAElD,KAAK,GAAIC,KAAUhG,MAAKqF,EACtBrF,KAAKsF,EAAwBU,GAAUhG,KAAKqF,EAAiBW,GAzEnE,GAAIC,GAAW/E,EAAQ,GACnBqB,EAAmBrB,EAAQ,GAC3BgF,EAAQhF,EAAQ,GAChBC,EAAYD,EAAQ,GAEpBiF,EAAaD,EAAMC,WACnBC,EAAcF,EAAME,YACpBC,EAAUH,EAAMG,QAChBC,EAAgBJ,EAAMI,cACtBC,EAASL,EAAMK,OACfC,EAAaN,EAAMM,WACnBC,EAAOP,EAAMO,KACbC,EAAcR,EAAMQ,YACpBC,EAAWT,EAAMS,SACjBC,EAAYV,EAAMU,UAClBC,EAAQX,EAAMW,MACdC,EAAmBZ,EAAMY,iBACzBC,EAAWb,EAAMa,SACjBC,EAAWd,EAAMc,SACjBC,EAAOf,EAAMe,KAEbC,EAAoBhG,EAAQ,GAAG2B,WAE/BsE,EAAU,2CAA2CC,MAAM,KAC3DC,EAAa,+DA2DjBpH,GAAMyC,WAKF4E,QAAS,QAETC,OAAO,EAEPtB,SAAUA,EASVuB,OAAQ,SAASC,EAAKC,GAClB,GAAI3H,GAAOC,IAEX,IAAIA,KAAKoE,EAEL,MADIpE,MAAK2H,EAAU,QAAS,4CACrB3H,IAEX,KAAKyH,EAAK,MAAOzH,KAGb0H,IACAjB,EAAKiB,EAAS,SAAS9F,EAAKC,GAEZ,SAARD,GAA0B,UAARA,EAClB7B,EAAKwE,EAAe3C,GAAOC,EAE3B9B,EAAKyE,EAAe5C,GAAOC,GAKvC,IAAI+F,GAAM5H,KAAK6H,EAAUJ,GACrBK,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE9B9H,MAAKkI,EAAOT,EAIZzH,KAAKwE,EAAeC,aAAatC,KAAK,qBACtCnC,KAAKwE,EAAeC,aAAatC,KAAK,iDAGtCnC,KAAKwE,EAAeC,aAAe+B,EAAWxG,KAAKwE,EAAeC,cAClEzE,KAAKwE,EAAeE,WAAa1E,KAAKwE,EAAeE,WAAW1D,OAASwF,EAAWxG,KAAKwE,EAAeE,aAAc,EACtH1E,KAAKwE,EAAeG,cAAgB3E,KAAKwE,EAAeG,cAAc3D,OAASwF,EAAWxG,KAAKwE,EAAeG,gBAAiB,EAC/H3E,KAAKwE,EAAeI,aAAe4B,EAAWxG,KAAKwE,EAAeI,cAClE5E,KAAKwE,EAAe2D,eAAiBC,KAAKC,IAAI,EAAGD,KAAKE,IAAItI,KAAKwE,EAAe2D,gBAAkB,IAAK,KAErG,IAAII,IACAC,KAAK,EACL1F,SAAS,EACT2F,KAAK,EACL5C,UAAU,GAGVZ,EAAkBjF,KAAKwE,EAAeS,eAoB1C,OAnB0C,uBAAnCyD,SAAS3H,KAAKkE,GACjBA,EAAkByB,EAAY6B,EAAwBtD,GAC/CA,KAAoB,IAC3BA,EAAkBsD,GAEtBvI,KAAKwE,EAAeS,gBAAkBA,EAEtCjF,KAAKqE,EAAauD,EAAIe,KACtB3I,KAAK4I,EAAgBhB,EAAIiB,MAAQjB,EAAIiB,KAAKZ,OAAO,GACjDjI,KAAKsE,EAAiBsD,EAAIG,KAAKE,OAAOH,EAAY,GAElD9H,KAAKoE,EAAgBpE,KAAK8I,EAAiBlB,GAE3C5H,KAAK+I,EAAkB/I,KAAKoE,EACxB,IAAM2D,EAAO,OAAS/H,KAAKsE,EAAiB,UAEhD2B,EAASnB,sBAAwB9E,KAAKwE,EAAeM,oBAG9C9E,MAWXgJ,QAAS,WACL,GAAIjJ,GAAOC,IAgBX,OAfIA,MAAKiJ,YAAcjJ,KAAKmF,IACxBc,EAASiD,OAAOC,UAAU,WACtBpJ,EAAKqJ,EAAwBzF,MAAM5D,EAAMsD,aAE7CrD,KAAKqJ,IACDtJ,EAAKyE,EAAeS,iBACpBjF,KAAKsJ,IAGTtJ,KAAKuJ,IAELvJ,KAAKmF,GAAoB,GAG7BvE,MAAMoE,gBAAkBhF,KAAKwE,EAAeQ,gBACrChF,MAWXwJ,QAAS,SAAS9B,EAAS+B,EAAMrG,GAO7B,MANI+C,GAAWuB,KACXtE,EAAOqG,MACPA,EAAO/B,EACPA,EAAUgC,QAGP1J,KAAK2J,KAAKjC,EAAS+B,GAAM9F,MAAM3D,KAAMoD,IAWhDuG,KAAM,SAASjC,EAAS+B,EAAMG,GAqC1B,QAASC,KACL,GAAIzG,MAAWzC,EAAI0C,UAAUrC,OACzB8I,GAAQpC,GAAWA,GAAWA,EAAQoC,QAAS,CAQnD,KANIF,GAAWzD,EAAWyD,IACtBA,EAAQjG,MAAM3D,KAAMqD,WAKlB1C,KAAKyC,EAAKzC,GAAKmJ,EAAO/J,EAAK4J,KAAKjC,EAASrE,UAAU1C,IAAM0C,UAAU1C,EAEzE,KACI,MAAO8I,GAAK9F,MAAM3D,KAAMoD,GAC1B,MAAMlD,GAGJ,KAFAH,GAAKgK,IACLhK,EAAKiK,iBAAiB9J,EAAGwH,GACnBxH,GArDd,GAAIH,GAAOC,IAGX,IAAIoG,EAAYqD,KAAUtD,EAAWuB,GACjC,MAAOA,EAWX,IAPIvB,EAAWuB,KACX+B,EAAO/B,EACPA,EAAUgC,SAKTvD,EAAWsD,GACZ,MAAOA,EAIX,KACI,GAAIA,EAAKQ,EACL,MAAOR,GAEb,MAAOvJ,GAIL,MAAOuJ,GAIX,GAAIA,EAAKS,EACL,MAAOT,GAAKS,CAyBhB,KAAK,GAAIC,KAAYV,GACblD,EAAOkD,EAAMU,KACbN,EAAQM,GAAYV,EAAKU,GAWjC,OARAN,GAAQnH,UAAY+G,EAAK/G,UAEzB+G,EAAKS,EAAoBL,EAGzBA,EAAQI,GAAY,EACpBJ,EAAQO,EAAYX,EAEbI,GAQXQ,UAAW,WAQP,MAPApE,GAASiD,OAAOmB,YAEhBrK,KAAKsK,IAEL1J,MAAMoE,gBAAkBhF,KAAKoF,EAC7BpF,KAAKmF,GAAoB,EAElBnF,MAUXgK,iBAAkB,SAASO,EAAI7C,GAE3B,IAAKrB,EAAQkE,GAAK,MAAOvK,MAAKwK,eAAeD,EAAI7C,EAGjD1H,MAAKkE,EAAyBqG,CAO9B,KACI,GAAI7I,GAAQuE,EAASwE,kBAAkBF,EACvCvK,MAAK0K,EAAiBhJ,EAAOgG,GAC/B,MAAMiD,GACJ,GAAGJ,IAAOI,EACN,KAAMA,GAId,MAAO3K,OAUXwK,eAAgB,SAASlH,EAAKoE,GAI1B,MAAM1H,MAAKwE,EAAeC,aAAamG,MAAQ5K,KAAKwE,EAAeC,aAAamG,KAAKtH,GAArF,QAKAtD,KAAK6K,EACDnE,GACIlE,QAASc,EAAM,IAChBoE,IAGA1H,OAGX8K,kBAAmB,SAAU1J,GACzB,GAAI2J,GAAQrE,GACRsE,UAAWnH,IAAQ,KACpBzC,EAEHpB,MAAK0F,EAAavD,KAAK4I,GACnB/K,KAAK0F,EAAa1E,OAAShB,KAAKwE,EAAe2D,gBAC/CnI,KAAK0F,EAAauF,SAI1BC,UAAW,SAASC,GAChB,GAAIC,GAAaC,MAAM3I,UAAUZ,MAAMf,KAAKsC,UAAW,EAOvD,OALArD,MAAKuF,EAASpD,MAAMgJ,EAAQC,IACxBpL,KAAKmF,GACLnF,KAAKuJ,IAGFvJ,MASXsL,eAAgB,SAAS3C,GAIrB,MAFA3I,MAAKuE,EAAeoE,KAAOA,EAEpB3I,MASXuL,gBAAiB,SAAS9H,GAGtB,MAFAzD,MAAKwL,EAAc,QAAS/H,GAErBzD,MASXyL,eAAgB,SAASC,GAGrB,MAFA1L,MAAKwL,EAAc,OAAQE,GAEpB1L,MAQX2L,aAAc,WAGV,MAFA3L,MAAKuE,KAEEvE,MAQX4L,WAAY,WAER,MAAOpK,MAAKqK,MAAM1K,EAAUnB,KAAKuE,KAUrCuH,eAAgB,SAASC,GAGrB,MAFA/L,MAAKwE,EAAeuH,YAAcA,EAE3B/L,MASXgM,WAAY,SAASC,GAGjB,MAFAjM,MAAKwE,EAAeyH,QAAUA,EAEvBjM,MAUXkM,gBAAiB,SAASlJ,GACtB,GAAImJ,GAAWnM,KAAKwE,EAAe4H,YAKnC,OAJApM,MAAKwE,EAAe4H,aAAejG,EAAWnD,GAC1C,SAAUO,GAAQ,MAAOP,GAASO,EAAM4I,IACxCnJ,EAEGhD,MAUXqM,sBAAuB,SAASrJ,GAC5B,GAAImJ,GAAWnM,KAAKwE,EAAe8H,kBAKnC,OAJAtM,MAAKwE,EAAe8H,mBAAqBnG,EAAWnD,GAC9C,SAAUO,GAAQ,MAAOP,GAASO,EAAM4I,IACxCnJ,EAEChD,MAYXuM,aAAc,SAASC,GAGnB,MAFAxM,MAAKwE,EAAegI,UAAYA,EAEzBxM,MAQXyM,cAAe,WACX,MAAOzM,MAAKkE,GAQhBwI,YAAa,WACT,MAAO1M,MAAKmE,GAQhB8E,QAAS,WACL,MAAKjJ,MAAK+D,EACL/D,KAAKoE,GAOH,GANEpE,KAAK2M,0BACR3M,KAAK2M,yBAA0B,EAC/B3M,KAAK2H,EAAU,QAAS,2CAEnB,IANgB,GAW/BiF,UAAW,WAIP,GAAIC,GAAchN,OAAOgN,WACrBA,IACA7M,KAAKwH,OAAOqF,EAAYpF,IAAKoF,EAAYrF,QAAQwB,WAIzD8D,iBAAkB,SAAUpF,GACxB,GAAK7H,OAAOoE,SAAZ,CAGAyD,EAAUA,KAEV,IAAIgF,GAAchF,EAAQqF,SAAW/M,KAAK0M,aAC1C,KAAKA,EACD,KAAM,IAAInK,GAAiB,kBAG/B,IAAIkF,GAAMC,EAAQD,KAAOzH,KAAKkI,CAC9B,KAAKT,EACD,KAAM,IAAIlF,GAAiB,cAG/B,IAAIyK,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOvF,EAEvB,IAAIkB,GAAOjB,EAAQiB,MAAQ3I,KAAKuE,EAAeoE,IAC3CA,KACIA,EAAKlG,OAAOyK,GAAM,SAAWF,EAAOrE,EAAKlG,OACzCkG,EAAKwE,QAAOD,GAAM,UAAYF,EAAOrE,EAAKwE,QAGlD,IAAIC,GAAepN,KAAK8I,EAAiB9I,KAAK6H,EAAUJ,IAEpD4F,EAASpJ,SAASqJ,cAAc,SACpCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDjJ,SAASwJ,MAAQxJ,SAASyJ,MAAMC,YAAYN,KAIjDO,EAAoB,WAChB,GAAI7N,GAAOC,IACXA,MAAKkF,GAAkB,EACvB2I,WAAW,WAEP9N,EAAKmF,GAAkB,KAI/B4I,EAAe,SAASC,EAAWrG,GAE/B,GAAIsG,GAAKpM,CAET,IAAK5B,KAAKgE,EAAV,CAGA0D,EAAUA,MAEVqG,EAAY,QAAUA,EAAU9F,OAAO,EAAE,GAAGgG,cAAgBF,EAAU9F,OAAO,GAEzEhE,SAASiK,aACTF,EAAM/J,SAASiK,YAAY,cAC3BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM/J,SAASmK,oBACfJ,EAAID,UAAYA,EAGpB,KAAKnM,IAAO8F,GAAanB,EAAOmB,EAAS9F,KACrCoM,EAAIpM,GAAO8F,EAAQ9F,GAGvB,IAAIqC,SAASiK,YAETjK,SAASoK,cAAcL,OAIvB,KACI/J,SAASqK,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACzD,MAAM9N,OAYhBsO,EAAyB,SAASC,GAC9B,GAAI1O,GAAOC,IACX,OAAO,UAAUgO,GASb,GALAjO,EAAK2O,EAAmB,KAKpB3O,EAAK4F,IAAuBqI,EAAhC,CAGAjO,EAAK4F,EAAqBqI,CAC1B,IAEIW,GAFAC,EAAOZ,EAAIW,MAMf,KACIA,EAAS7H,EAAiB8H,GAC5B,MAAO1O,GACLyO,EAAS,YAGb5O,EAAK+K,mBACD+D,SAAU,MAAQJ,EAClBjM,QAASmM,OAUrBG,EAAuB,WACnB,GAAI/O,GAAOC,KACP+O,EAAmB,GAMvB,OAAO,UAAUf,GACb,GAAIW,GAASX,EAAIW,OACbK,EAAUL,GAAUA,EAAOK,OAK/B,IAAKA,IAAuB,UAAZA,GAAmC,aAAZA,GAAvC,CAKA,GAAIC,GAAUlP,EAAK2O,CACdO,IACDlP,EAAKmP,EAAwB,SAASlB,GAE1CmB,aAAaF,GACblP,EAAK2O,EAAmBb,WAAW,WAChC9N,EAAK2O,EAAmB,MACxBK,MAUXK,EAAmB,SAASC,EAAMC,GAC9B,GAAIC,GAAYxI,EAAS/G,KAAK4F,EAAUG,MACpCyJ,EAAWzI,EAASuI,GACpBG,EAAa1I,EAASsI,EAK1BrP,MAAK8F,EAAYwJ,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OACxEL,EAAKE,EAASI,UACdL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC5EN,EAAOI,EAAWG,UAEtB5P,KAAK8K,mBACD+D,SAAU,aACVtL,MACI+L,GAAIA,EACJD,KAAMA,MAQlBQ,EAAqB,WAKjB,QAASC,GAAWC,GAChB,MAAO,UAAUC,EAAI7P,GAIjB,IAAI,GADAiD,GAAO,GAAIiI,OAAMhI,UAAUrC,QACvBL,EAAI,EAAOyC,EAAKpC,OAATL,IAAmBA,EAC9ByC,EAAKzC,GAAK0C,UAAU1C,EAExB,IAAIsP,GAAmB7M,EAAK,EAQ5B,OAPI+C,GAAW8J,KACX7M,EAAK,GAAKrD,EAAK4J,KAAKsG,IAMpBF,EAAKpM,MACEoM,EAAKpM,MAAM3D,KAAMoD,GAEjB2M,EAAK3M,EAAK,GAAIA,EAAK,KAOtC,QAAS8M,GAAgBpQ,GACrB,GAAIqQ,GAAQtQ,OAAOC,IAAWD,OAAOC,GAAQ4C,SACzCyN,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACtDnJ,EAAKkJ,EAAO,mBAAoB,SAASJ,GACrC,MAAO,UAAUtB,EAASuB,EAAIK,EAASC,GACnC,IACQN,GAAMA,EAAGO,cACTP,EAAGO,YAAcxQ,EAAK4J,KAAKqG,EAAGO,cAEpC,MAAOC,IAMT,GAAIC,EAQJ,OAPIxL,IAAmBA,EAAgBwD,MAAmB,gBAAX3I,GAAuC,SAAXA,KACvD,UAAZ2O,EACAgC,EAAS1Q,EAAKmP,EAAwBT,GACnB,aAAZA,IACPgC,EAAS1Q,EAAK2Q,MAGfX,EAAKhP,KAAKf,KAAMyO,EAAS1O,EAAK4J,KAAKqG,EAAItG,OAAW+G,GAASJ,EAASC,KAEhFK,GACH1J,EAAKkJ,EAAO,sBAAuB,SAAUJ,GACzC,MAAO,UAAU/B,EAAKgC,EAAIK,EAASC,GAE/B,MADAN,GAAKA,IAAOA,EAAG9F,EAAoB8F,EAAG9F,EAAqB8F,GACpDD,EAAKhP,KAAKf,KAAMgO,EAAKgC,EAAIK,EAASC,KAE9CK,IA7DX,GAAI5Q,GAAOC,KAEP2Q,EAAkB5Q,EAAK0F,EA0BvBR,EAAkBjF,KAAKwE,EAAeS,eAqC1CgC,GAAKpH,OAAQ,aAAciQ,EAAYa,GACvC1J,EAAKpH,OAAQ,cAAeiQ,EAAYa,GACpC9Q,OAAO+Q,uBACP3J,EAAKpH,OAAQ,wBAAyB,SAAUkQ,GAC5C,MAAO,UAAUc,GACb,MAAOd,GAAKhQ,EAAK4J,KAAKkH,MAE3BF,EAMP,KAAK,GADDG,IAAgB,cAAe,SAAU,OAAQ,mBAAoB,iBAAkB,oBAAqB,kBAAmB,cAAe,aAAc,qBAAsB,cAAe,aAAc,iBAAkB,eAAgB,kBAAmB,cAAe,cAAe,eAAgB,qBAAsB,SAAU,YAAa,eAAgB,gBAAiB,YAAa,kBAAmB,SAAU,iBAAkB,4BAA6B,wBACpdnQ,EAAI,EAAOmQ,EAAa9P,OAAjBL,EAAyBA,IACrCuP,EAAgBY,EAAanQ,GAGjC,IAAIoQ,GAAIlR,OAAOmR,QAAUnR,OAAOkR,CAC5BA,IAAKA,EAAEf,IAAMe,EAAEf,GAAGiB,OAClBhK,EAAK8J,EAAEf,GAAI,QAAS,SAAUD,GAC1B,MAAO,UAAUC,GACb,MAAOD,GAAKhP,KAAKf,KAAMD,EAAK4J,KAAKqG,MAEtCW,IAcXO,EAAwB,WAMpB,QAASC,GAASC,EAAM5I,GAChB4I,IAAQ5I,IAAOrC,EAAWqC,EAAI4I,KAC9BnK,EAAKuB,EAAK4I,EAAM,SAAUrB,GACtB,MAAOhQ,GAAK4J,KAAKoG,KAR7B,GAAIhQ,GAAOC,KACPiF,EAAkBjF,KAAKwE,EAAeS,gBAEtC0L,EAAkB5Q,EAAK0F,CAU3B,IAAIR,EAAgBuD,KAAO,kBAAoB3I,QAAQ,CACnD,GAAIwR,GAAWC,eAAe5O,SAC9BuE,GAAKoK,EAAU,OAAQ,SAASE,GAC5B,MAAO,UAAUvL,EAAQwL,GAWrB,MARIxK,GAASwK,IAAyC,KAAjCA,EAAIzP,QAAQhC,EAAKsE,KAClCrE,KAAKyR,GACDzL,OAAQA,EACRwL,IAAKA,EACLE,YAAa,OAIdH,EAAS5N,MAAM3D,KAAMqD,aAEjCsN,GAEH1J,EAAKoK,EAAU,OAAQ,SAASM,GAC5B,MAAO,UAAUpO,GAGb,QAASqO,KACL,GAAIpJ,EAAIiJ,IAAmC,IAAnBjJ,EAAIqJ,YAAuC,IAAnBrJ,EAAIqJ,YAAmB,CACnE,IAGIrJ,EAAIiJ,EAAYC,YAAclJ,EAAIsJ,OACpC,MAAO5R,IACTH,EAAK+K,mBACDiH,KAAM,OACNlD,SAAU,MACVtL,KAAMiF,EAAIiJ,KAMtB,IAAK,GAlBDjJ,GAAMxI,KAiBNgS,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAOD,EAAMhR,OAAViR,EAAkBA,IAC9Bd,EAASa,EAAMC,GAAIzJ,EAavB,OAVI,sBAAwBA,IAAOrC,EAAWqC,EAAI0J,oBAC9CjL,EAAKuB,EAAK,qBAAsB,SAAUuH,GACtC,MAAOhQ,GAAK4J,KAAKoG,EAAMrG,OAAWkI,KAKtCpJ,EAAI0J,mBAAqBN,EAGtBD,EAAShO,MAAM3D,KAAMqD,aAEjCsN,GAKH1L,EAAgBwD,KAAOzI,KAAKgE,IACxBC,SAASkO,kBACTlO,SAASkO,iBAAiB,QAASpS,EAAKmP,EAAwB,UAAU,GAC1EjL,SAASkO,iBAAiB,WAAYpS,EAAK2Q,KAAyB,KAIpEzM,SAASmO,YAAY,UAAWrS,EAAKmP,EAAwB,UAC7DjL,SAASmO,YAAY,aAAcrS,EAAK2Q,MAQhD,IAAI2B,GAASxS,OAAOwS,OAChBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GAAgBH,GAAuBzS,OAAO6S,SAAWA,QAAQC,SACrE,IAAI1N,EAAgBY,UAAY4M,EAAc,CAE1C,GAAIG,GAAgB/S,OAAOgT,UAC3BhT,QAAOgT,WAAa,WAChB,GAAIC,GAAc/S,EAAK6F,EAAUG,IAGjC,OAFAhG,GAAKgT,EAAkBhT,EAAK+F,EAAWgN,GAEnCF,EACOA,EAAcjP,MAAM3D,KAAMqD,WADrC,QAKJ4D,EAAKyL,QAAS,YAAa,SAAUM,GAGjC,MAAO,YACH,GAAIxB,GAAMnO,UAAUrC,OAAS,EAAIqC,UAAU,GAAKqG,MAQhD,OALI8H,IAEAzR,EAAKgT,EAAkBhT,EAAK+F,EAAW0L,EAAM,IAG1CwB,EAAcrP,MAAM3D,KAAMqD,aAEtCsN,GAGP,GAAI1L,EAAgBnC,SAAW,WAAajD,SAAUiD,QAAQmQ,IAAK,CAE/D,GAAIC,GAAwB,SAAU5P,EAAKC,GACvCxD,EAAK+K,mBACDtI,QAASc,EACTP,MAAOQ,EAAKR,MACZ8L,SAAU,YAIlBpI,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAU0M,EAAGpQ,GACzDmE,EAAkBpE,QAASC,EAAOmQ,OAM9CE,EAAkB,WAGd,IADA,GAAIC,GACGrT,KAAKyF,EAAiBzE,QAAQ,CACjCqS,EAAUrT,KAAKyF,EAAiBwF,OAEhC,IAAI7J,GAAMiS,EAAQ,GAChB5Q,EAAO4Q,EAAQ,GACftD,EAAOsD,EAAQ,EAEjBjS,GAAIqB,GAAQsN,IAIpBuD,EAAe,WACX,GAAIvT,GAAOC,IAGXyG,GAAKzG,KAAKuF,EAAU,SAAS4N,EAAGhI,GAC5B,GAAIoI,GAAYpI,EAAO,GACnB/H,EAAO+H,EAAO,EAClBoI,GAAU5P,MAAM5D,GAAOA,GAAMyT,OAAOpQ,OAI5CqQ,EAAW,SAASC,GAChB,GAAIC,GAAItM,EAAWuM,KAAKF,GACpBjM,KACA9G,EAAI,CAER,KACI,KAAOA,KAAK8G,EAAIN,EAAQxG,IAAMgT,EAAEhT,IAAM,GACxC,MAAMT,GACJ,KAAM,IAAIqC,GAAiB,gBAAkBmR,GAGjD,GAAIjM,EAAIoB,OAAS7I,KAAKwE,EAAeqP,eACjC,KAAM,IAAItR,GAAiB,iFAG/B,OAAOkF,IAGXqM,EAAkB,SAASlM,GAEvB,GAAIwF,GAAe,KAAOxF,EAAI+H,MACzB/H,EAAImM,KAAO,IAAMnM,EAAImM,KAAO,GAKjC,OAHInM,GAAI8H,WACJtC,EAAexF,EAAI8H,SAAW,IAAMtC,GAEjCA,GAGX4G,EAAyB,WAEhBhU,KAAKkF,GACNlF,KAAK0K,EAAiB/G,MAAM3D,KAAMqD,YAI1C4Q,EAAkB,SAASC,EAAWxM,GAClC,GAAI3H,GAAOC,KACPmU,IAEAD,GAAUxS,OAASwS,EAAUxS,MAAMV,QACnCyF,EAAKyN,EAAUxS,MAAO,SAASf,EAAGe,GAC9B,GAAI0S,GAAQrU,EAAKsU,EAAgB3S,EAC7B0S,IACAD,EAAOhS,KAAKiS,KAKxBpU,KAAKsU,EAAc,UACfJ,UAAWA,EACXxM,QAASA,IAGb1H,KAAKuU,EACDL,EAAUzR,KACVyR,EAAU1R,QACV0R,EAAU1C,IACV0C,EAAUM,OACVL,EAAOrS,MAAM,EAAG9B,KAAKwE,EAAeQ,iBACpC0C,IAIR+M,EAAiB,SAASL,GACtB,GAAKA,EAAM5C,IAAX,CAGA,GAAIkD,IACAC,SAAYP,EAAM5C,IAClBgD,OAAYJ,EAAMQ,KAClBC,MAAYT,EAAMU,OAClBC,WAAYX,EAAM3K,MAAQ,IAY9B,OATAiL,GAAWM,SAELhV,KAAKwE,EAAeI,aAAagG,OAAS5K,KAAKwE,EAAeI,aAAagG,KAAK8J,EAAWC,WAE7F,qBAAqB/J,KAAK8J,EAAW,cAErC,qBAAqB9J,KAAK8J,EAAWC,WAGlCD,IAGXO,EAAmB,SAASlD,EAAMvP,EAAS0S,EAASV,EAAQL,EAAQzM,GAChE,GAAIyN,EAEJ,MAAMnV,KAAKwE,EAAeC,aAAamG,OAAQ5K,KAAKwE,EAAeC,aAAamG,KAAKpI,MAErFA,GAAW,GAEP2R,GAAUA,EAAOnT,QACjBkU,EAAUf,EAAO,GAAGQ,UAAYO,EAGhCf,EAAOiB,UACPD,GAAchB,OAAQA,IACfe,IACPC,GACIhB,SACIQ,SAAUO,EACVV,OAAQA,EACRQ,QAAQ,QAKdhV,KAAKwE,EAAeE,WAAWkG,OAAQ5K,KAAKwE,EAAeE,WAAWkG,KAAKsK,OAC3ElV,KAAKwE,EAAeG,cAAciG,MAAS5K,KAAKwE,EAAeG,cAAciG,KAAKsK,KAAxF,CAEA,GAAI3R,GAAOmD,GAEP2O,WACIC,SACIvD,KAAMA,EACNlQ,MAAOW,EACP2S,WAAYA,KAGpBI,QAASL,GACVxN,EAGH1H,MAAK6K,EAAMtH,KAGfiS,EAAa,SAASjS,GAGlB,GAAI8E,GAAMrI,KAAKwE,EAAeO,gBAI9B,IAHIxB,EAAKf,UACLe,EAAKf,QAAUmE,EAASpD,EAAKf,QAAS6F,IAEtC9E,EAAK8R,UAAW,CAChB,GAAIA,GAAY9R,EAAK8R,UAAUC,OAAO,EACtCD,GAAUxT,MAAQ8E,EAAS0O,EAAUxT,MAAOwG,GAGhD,MAAO9E,IAGXkS,EAAc,WACV,GAAKzV,KAAKgE,GAAiBC,SAAS4B,UAAa5B,SAAS4B,SAASE,KAAnE,CAIA,GAAI2P,IACAC,SACIC,aAAcC,UAAUC,WAUhC,OANAJ,GAASlE,IAAMvN,SAAS4B,SAASE,KAE7B9B,SAAS8R,WACTL,EAASC,QAAQK,QAAU/R,SAAS8R,UAGjCL,IAIXO,EAAO,SAAS1S,GACZ,GAAI2S,GAAgBlW,KAAKwE,EAErB2R,GACAC,QAASpW,KAAKsE,EACdd,OAAQ0S,EAAc1S,OACtB6S,SAAU,cACXX,EAAW1V,KAAKsW,GAEfZ,KACAS,EAASI,QAAUb,GAGvBnS,EAAOmD,EAAYyP,EAAU5S,GAG7BA,EAAKmI,KAAOhF,EAAYA,KAAgB1G,KAAKuE,EAAemH,MAAOnI,EAAKmI,MACxEnI,EAAKE,MAAQiD,EAAYA,KAAgB1G,KAAKuE,EAAed,OAAQF,EAAKE,OAG1EF,EAAKE,MAAM,oBAAsBI,IAAQ7D,KAAKwF,EAE1CxF,KAAK0F,GAAgB1F,KAAK0F,EAAa1E,OAAS,IAGhDuC,EAAKiT,aACDlB,UAAWxT,MAAMf,KAAKf,KAAK0F,EAAc,KAK7CY,EAAc/C,EAAKmI,aAAcnI,GAAKmI,KAEtC1L,KAAKuE,EAAeoE,OAEpBpF,EAAKoF,KAAO3I,KAAKuE,EAAeoE,MAIhCuN,EAAcnK,cAAaxI,EAAKwI,YAAcmK,EAAcnK,aAG5DmK,EAAcjK,UAAS1I,EAAK0I,QAAUiK,EAAcjK,SAGpDiK,EAAcO,aAAYlT,EAAKmT,YAAcR,EAAcO,YAE3DtQ,EAAW+P,EAAc9J,gBACzB7I,EAAO2S,EAAc9J,aAAa7I,IAASA,GAI1CA,IAAQ+C,EAAc/C,MAKvB4C,EAAW+P,EAAc5J,qBAAwB4J,EAAc5J,mBAAmB/I,KAItFvD,KAAK2W,EAAsBpT,IAG/BqT,EAAuB,SAASrT,EAAMP,GAClC,GAAIjD,GAAOC,KACPkW,EAAgBlW,KAAKwE,CAYzB,IAPAxE,KAAKmE,EAAeZ,EAAKsT,WAAatT,EAAKsT,SAAWhQ,KAGtDtD,EAAOvD,KAAK8W,EAAYvT,GAExBvD,KAAK2H,EAAU,QAAS,uBAAwBpE,GAE3CvD,KAAKiJ,UAAV,CAEA,GAAI8N,IACAC,eAAgB,IAChBC,cAAe,YAAcjX,KAAKsH,QAClC4P,WAAYlX,KAAKqE,EAEjBrE,MAAK4I,IACLmO,EAAKI,cAAgBnX,KAAK4I,EAG9B,IAAIyM,GAAY9R,EAAK8R,WAAa9R,EAAK8R,UAAUC,OAAO,EACxDtV,MAAK8K,mBACD+D,SAAU,SACVrM,QAAS6S,GACFA,EAAUtD,KAAOsD,EAAUtD,KAAO,KAAO,IAAMsD,EAAUxT,MAC1D0B,EAAKf,QACXqU,SAAUtT,EAAKsT,SACf9T,MAAOQ,EAAKR,OAAS,SAGzB,IAAIyO,GAAMxR,KAAK+I,GACdmN,EAAc1J,WAAaxM,KAAKoX,GAAcrW,KAAKf,MAChDwR,IAAKA,EACLuF,KAAMA,EACNxT,KAAMA,EACNmE,QAASwO,EACTmB,UAAW,WACPtX,EAAKuU,EAAc,WACf/Q,KAAMA,EACNiK,IAAKgE,IAETxO,GAAYA,KAEhBsU,QAAS,SAAiBC,GACtBxX,EAAKuU,EAAc,WACf/Q,KAAMA,EACNiK,IAAKgE,IAET+F,EAAQA,GAAS,GAAI3W,OAAM,sDAC3BoC,GAAYA,EAASuU,QAKjCC,EAAc,SAASC,GAWnB,QAASC,KACkB,MAAnBnB,EAAQzE,OACJ2F,EAAKJ,WACLI,EAAKJ,YAEFI,EAAKH,SACZG,EAAKH,QAAQ,GAAI1W,OAAM,sBAAwB2V,EAAQzE,SAhB/D,GAAIyE,GAAU,GAAIjF,gBAGdqG,EACA,mBAAqBpB,IACK,mBAAnBqB,eAEX,IAAKD,EAAL,CAEA,GAAInG,GAAMiG,EAAKjG,GAWX,oBAAqB+E,GACrBA,EAAQrE,mBAAqB,WACE,IAAvBqE,EAAQ1E,YAGZ6F,MAGJnB,EAAU,GAAIqB,gBAGdpG,EAAMA,EAAIqG,QAAQ,WAAY,IAG9BtB,EAAQuB,OAASJ,GAKrBnB,EAAQwB,KAAK,OAAQvG,EAAM,IAAM5K,EAAU6Q,EAAKV,OAChDR,EAAQyB,KAAK7W,EAAUsW,EAAKlU,SAGhC0U,EAAW,SAASlV,GACZ/C,KAAKsF,EAAwBvC,IAAU/C,KAAKuH,OAE5C7D,SAAShB,UAAUiB,MAAM5C,KACrBf,KAAKsF,EAAwBvC,GAC7B/C,KAAKqF,KACFvD,MAAMf,KAAKsC,UAAW,KAKrC6U,EAAe,SAAStW,EAAK4H,GACrBpD,EAAYoD,SACLxJ,MAAKuE,EAAe3C,GAE3B5B,KAAKuE,EAAe3C,GAAO8E,EAAY1G,KAAKuE,EAAe3C,OAAY4H,KAMnFvJ,EAAMyC,UAAUyV,QAAUlY,EAAMyC,UAAU4I,eAC1CrL,EAAMyC,UAAU0V,kBAAoBnY,EAAMyC,UAAUsJ,WAEpDvM,EAAOD,QAAUS,IAEdgB,EAAI,EAAEqB,EAAI,EAAEM,EAAI,EAAEyV,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASrX,EAAQzB,EAAOD,GAO9D,YAEA,IAAIgZ,GAAmBtX,EAAQ,GAE3BuX,EAAS5Y,OAAOI,MAEhBA,EAAQ,GAAIuY,EAQhBvY,GAAMyY,WAAa,WAElB,MADA7Y,QAAOI,MAAQwY,EACRxY,GAGRA,EAAM2M,YAENnN,EAAOD,QAAUS,IAEd2D,EAAI,IAAIyU,GAAG,SAASnX,EAAQzB,EAAOD,GAEtC,YAIA,SAAS4G,GAAYuS,GACjB,MAAgB,UAATA,EAGX,QAASxS,GAAWwS,GAChB,MAAuB,kBAATA,GAGlB,QAAS3R,GAAS2R,GACd,MAA+C,oBAAxCC,EAAgBlQ,SAAS3H,KAAK4X,GAGzC,QAASE,GAASF,GACd,MAAuB,gBAATA,IAA8B,OAATA,EAGvC,QAASrS,GAAcqS,GACnB,IAAK,GAAIxF,KAAKwF,GAAM,OAAO,CAC3B,QAAO,EAKX,QAAStS,GAAQsS,GACb,GAAIjQ,GAAWkQ,EAAgBlQ,SAAS3H,KAAK4X,EAC7C,OAAOE,GAASF,IACC,mBAAbjQ,GACa,uBAAbA,GACAiQ,YAAgB/X,OAGxB,QAAS6F,GAAKrF,EAAK4B,GACf,GAAIrC,GAAGsR,CAEP,IAAI7L,EAAYhF,EAAIJ,QAChB,IAAKL,IAAKS,GACFmF,EAAOnF,EAAKT,IACZqC,EAASjC,KAAK,KAAMJ,EAAGS,EAAIT,QAKnC,IADAsR,EAAI7Q,EAAIJ,OAEJ,IAAKL,EAAI,EAAOsR,EAAJtR,EAAOA,IACfqC,EAASjC,KAAK,KAAMJ,EAAGS,EAAIT,IAM3C,QAAS+F,GAAYoS,EAAMC,GACvB,MAAKA,IAGLtS,EAAKsS,EAAM,SAASnX,EAAKC,GACrBiX,EAAKlX,GAAOC,IAETiX,GALIA,EAQf,QAASnS,GAAS+M,EAAKrL,GACnB,OAAQA,GAAqBA,GAAdqL,EAAI1S,OAAgB0S,EAAMA,EAAIzL,OAAO,EAAGI,GAAO,IAUlE,QAAS9B,GAAOyS,EAAQpX,GACpB,MAAOgX,GAAgBxI,eAAerP,KAAKiY,EAAQpX,GAGvD,QAAS4E,GAAWyS,GAOhB,IAJA,GAEIC,GAFAC,KACAxY,EAAI,EAAGyY,EAAMH,EAASjY,OAGfoY,EAAJzY,EAASA,IACZuY,EAAUD,EAAStY,GACfqG,EAASkS,GAGTC,EAAQhX,KAAK+W,EAAQrB,QAAQ,8BAA+B,SACrDqB,GAAWA,EAAQG,QAE1BF,EAAQhX,KAAK+W,EAAQG,OAI7B,OAAO,IAAIC,QAAOH,EAAQnX,KAAK,KAAM,KAGzC,QAAS4E,GAAUrG,GACf,GAAIgZ,KAIJ,OAHA9S,GAAKlG,EAAG,SAASqB,EAAKC,GAClB0X,EAAMpX,KAAK8K,mBAAmBrL,GAAO,IAAMqL,mBAAmBpL,MAE3D0X,EAAMvX,KAAK,KAMtB,QAAS+E,GAASyK,GACd,GAAIgI,GAAQhI,EAAIgI,MAAM,iEACtB,KAAKA,EAAO,QAGZ,IAAIC,GAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACI9J,SAAU8J,EAAM,GAChB7J,KAAM6J,EAAM,GACZzR,KAAMyR,EAAM,GACZ5J,SAAU4J,EAAM,GAAKC,EAAQC,GAGrC,QAAS7S,KACL,GAAI8S,GAAS9Z,OAAO8Z,QAAU9Z,OAAO+Z,QAErC,KAAKxT,EAAYuT,IAAWA,EAAOE,gBAAiB,CAEhD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAc,KAATA,EAAI,GAAa,MAE1BA,EAAI,GAAc,MAATA,EAAI,GAAc,KAE3B,IAAIE,GAAM,SAASC,GAEf,IADA,GAAIhC,GAAIgC,EAAIvR,SAAS,IACH,EAAXuP,EAAEjX,QACLiX,EAAI,IAAMA,CAEd,OAAOA,GAGX,OAAO+B,GAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IACvEE,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAGpC,MAAO,mCAAmCjC,QAAQ,QAAS,SAASqC,GAChE,GAAI7Z,GAAkB,GAAd+H,KAAK+R,SAAY,EACrBlC,EAAU,MAANiC,EAAY7Z,EAAM,EAAFA,EAAM,CAC9B,OAAO4X,GAAEvP,SAAS,MAY9B,QAAS5B,GAAiB8H,GAUtB,IATA,GAOIwL,GAPAC,EAAsB,EACtBC,EAAiB,GACjBC,KACAC,EAAS,EACTpB,EAAM,EACNqB,EAAY,MACZC,EAAYD,EAAUzZ,OAGnB4N,GAAQ4L,IAAWH,IAEtBD,EAAUO,EAAoB/L,KAKd,SAAZwL,GAAsBI,EAAS,GAAKpB,EAAOmB,EAAIvZ,OAAS0Z,EAAaN,EAAQpZ,QAAUsZ,KAI3FC,EAAIpY,KAAKiY,GAEThB,GAAOgB,EAAQpZ,OACf4N,EAAOA,EAAKgM,UAGhB,OAAOL,GAAInF,UAAUpT,KAAKyY,GAS9B,QAASE,GAAoB/L,GACzB,GACIiM,GACAC,EACAlZ,EACAmZ,EACApa,EALA4Z,IAOJ,KAAK3L,IAASA,EAAKI,QACf,MAAO,EASX,IANAuL,EAAIpY,KAAKyM,EAAKI,QAAQT,eAClBK,EAAKoM,IACLT,EAAIpY,KAAK,IAAMyM,EAAKoM,IAGxBH,EAAYjM,EAAKiM,UACbA,GAAa7T,EAAS6T,GAEtB,IADAC,EAAUD,EAAUzT,MAAM,KACrBzG,EAAI,EAAOma,EAAQ9Z,OAAZL,EAAoBA,IAC5B4Z,EAAIpY,KAAK,IAAM2Y,EAAQna,GAG/B,IAAIsa,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKta,EAAI,EAAOsa,EAAcja,OAAlBL,EAA0BA,IAClCiB,EAAMqZ,EAActa,GACpBoa,EAAOnM,EAAKsM,aAAatZ,GACrBmZ,GACAR,EAAIpY,KAAK,IAAMP,EAAM,KAAOmZ,EAAO,KAG3C,OAAOR,GAAIvY,KAAK,IAUpB,QAASiF,GAAK7F,EAAKqB,EAAM0Y,EAAaC,GAClC,GAAIrL,GAAO3O,EAAIqB,EACfrB,GAAIqB,GAAQ0Y,EAAYpL,GACpBqL,GACAA,EAAMjZ,MAAMf,EAAKqB,EAAMsN,IAtP/B,GAAI6I,GAAkByC,OAAO3Y,SA0P7BjD,GAAOD,SACH4G,YAAaA,EACbD,WAAYA,EACZa,SAAUA,EACV6R,SAAUA,EACVvS,cAAeA,EACfD,QAASA,EACTI,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVJ,OAAQA,EACRC,WAAYA,EACZI,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB6T,oBAAqBA,EACrB5T,SAAUA,EACVE,KAAMA,QAGJqR,GAAG,SAASpX,EAAQzB,EAAOD,GACjC,YAyBA,SAAS8b,KACL,MAAwB,mBAAbrX,UACA,GAEJA,SAAS4B,SAASE,KA3B7B,GAAIG,GAAQhF,EAAQ,GAEhBqF,EAASL,EAAMK,OACfS,EAAWd,EAAMc,SACjBZ,EAAcF,EAAME,YAOpBH,GACAnB,qBAAqB,EACrByC,OAAO,GAIPgU,KAAYzZ,MACZ0Z,EAAmB,IAGnBC,EAAiB,iGAgDrBxV,GAASiD,OAAU,WAUf,QAASC,GAAUuO,GACfgE,IACAC,EAASxZ,KAAKuV,GAOlB,QAASkE,GAAYlE,GACjB,IAAK,GAAI/W,GAAIgb,EAAS3a,OAAS,EAAGL,GAAK,IAAKA,EACpCgb,EAAShb,KAAO+W,GAChBiE,EAASzZ,OAAOvB,EAAG,GAQ/B,QAASkb,KACLC,IACAH,KAOJ,QAASI,GAAera,EAAOsa,GAC3B,GAAI3G,GAAY,IAChB,KAAI2G,GAAkB/V,EAASnB,oBAA/B,CAGA,IAAK,GAAInE,KAAKgb,GACV,GAAIpV,EAAOoV,EAAUhb,GACjB,IACIgb,EAAShb,GAAGgD,MAAM,MAAOjC,GAAO8R,OAAO+H,EAAOxa,KAAKsC,UAAW,KAChE,MAAO4Y,GACL5G,EAAY4G,EAKxB,GAAI5G,EACA,KAAMA,IAiBd,QAAS6G,GAAsB1Z,EAASgP,EAAK2K,EAAQC,EAAO7R,GACxD,GAAI7I,GAAQ,IAEZ,IAAI2a,EACApW,EAASwE,kBAAkB6R,oCAAoCD,EAAoB7K,EAAK2K,EAAQ3Z,GAChG+Z,QACG,IAAIhS,EAIP7I,EAAQuE,EAASwE,kBAAkBF,GACnCwR,EAAera,GAAO,OACnB,CACH,GAQI8a,GARA3W,GACA2L,IAAOA,EACPoD,KAAQuH,EACRrH,OAAUsH,GAGV3Z,EAAOiH,OACPpG,EAAMd,CAEV,IAAIwE,EAASxE,GAAU,CACnB,GAAIga,GAASha,EAAQgX,MAAMiC,EACvBe,KACA/Z,EAAO+Z,EAAO,GACdlZ,EAAMkZ,EAAO,IAIrB3W,EAAS4D,KAAO+R,EAEhB9Z,GACIe,KAAQA,EACRD,QAAWc,EACXkO,IAAO8J,IACP5Z,OAAUmE,IAEdkW,EAAera,GAAO,GAG1B,MAAI+a,GACOA,EAAmB9Y,MAAM3D,KAAMqD,YAGnC,EAGX,QAASqY,KAEDgB,IAGJD,EAAqB5c,OAAO8c,QAC5B9c,OAAO8c,QAAUT,EACjBQ,GAA2B,GAG/B,QAASZ,KAEAY,IAGL7c,OAAO8c,QAAUF,EACjBC,GAA2B,EAC3BD,EAAqB/S,QAGzB,QAAS6S,KACL,GAAIK,GAAsBP,EACtBQ,EAAYC,CAChBA,GAAW,KACXT,EAAqB,KACrB5P,EAAgB,KAChBsP,EAAepY,MAAM,MAAOiZ,GAAqB,GAAOpJ,OAAOqJ,IAUnE,QAAS3T,GAAOqB,EAAIwS,GAChB,GAAI3Z,GAAOmY,EAAOxa,KAAKsC,UAAW,EAClC,IAAIgZ,EAAoB,CACpB,GAAI5P,IAAkBlC,EAClB,MAEFgS,KAIN,GAAI7a,GAAQuE,EAASwE,kBAAkBF,EAevC,IAdA8R,EAAqB3a,EACrB+K,EAAgBlC,EAChBuS,EAAW1Z,EAMXvD,OAAOgO,WAAW,WACVpB,IAAkBlC,GAClBgS,KAEJ7a,EAAMsb,WAAa,IAAO,GAE1BD,KAAY,EACZ,KAAMxS,GArLd,GA0DIkS,GAAoBC,EA1DpBf,KACAmB,EAAW,KACXrQ,EAAgB,KAChB4P,EAAqB,IAyLzB,OAHAnT,GAAOC,UAAYA,EACnBD,EAAO0S,YAAcA,EACrB1S,EAAOmB,UAAYwR,EACZ3S,KAsDXjD,EAASwE,kBAAqB,WAiE1B,QAASwS,GAA+B1S,GACpC,IAAInE,EAAYmE,EAAG7I,QAAW6I,EAAG7I,MAAjC,CAWA,IAAK,GAJDwb,GACAC,EANA9K,EAAS,mHACT+K,EAAQ,qGACRC,EAAQ,wGACRC,EAAQ/S,EAAG7I,MAAM0F,MAAM,MACvB1F,KAKKf,GAFO,sBAAsBiT,KAAKrJ,EAAG/H,SAEjC,GAAGyP,EAAIqL,EAAMtc,OAAYiR,EAAJtR,IAASA,EAAG,CAC1C,GAAKuc,EAAQ7K,EAAOuB,KAAK0J,EAAM3c,IAAM,CACjC,GAAI4c,GAAWL,EAAM,IAAqC,KAA/BA,EAAM,GAAGnb,QAAQ,SAC5Cob,IACI3L,IAAQ+L,EAAsB,KAAXL,EAAM,GACzBzT,KAAQyT,EAAM,IAAM1B,EACpBpY,KAAQma,GAAYL,EAAM,OAC1BtI,KAAQsI,EAAM,IAAMA,EAAM,GAAK,KAC/BpI,OAAUoI,EAAM,IAAMA,EAAM,GAAK,UAElC,IAAKA,EAAQG,EAAMzJ,KAAK0J,EAAM3c,IACjCwc,GACI3L,IAAO0L,EAAM,GACbzT,KAAQyT,EAAM,IAAM1B,EACpBpY,QACAwR,MAASsI,EAAM,GACfpI,OAAUoI,EAAM,IAAMA,EAAM,GAAK,UAElC,CAAA,KAAKA,EAAQE,EAAMxJ,KAAK0J,EAAM3c,KASjC,QARAwc,IACI3L,IAAO0L,EAAM,GACbzT,KAAQyT,EAAM,IAAM1B,EACpBpY,KAAQ8Z,EAAM,GAAKA,EAAM,GAAG9V,MAAM,QAClCwN,KAAQsI,EAAM,IAAMA,EAAM,GAAK,KAC/BpI,OAAUoI,EAAM,IAAMA,EAAM,GAAK,OAMpCC,EAAQ1T,MAAQ0T,EAAQvI,OACzBuI,EAAQ1T,KAAO+R,GAGnB9Z,EAAMS,KAAKgb,GAGf,MAAKzb,GAAMV,QAINU,EAAM,GAAGoT,QAAW1O,EAAYmE,EAAGiT,gBAIpC9b,EAAM,GAAGoT,OAASvK,EAAGiT,aAAe,IAIpC/a,KAAQ8H,EAAG9H,KACXD,QAAW+H,EAAG/H,QACdgP,IAAO8J,IACP5Z,MAASA,IAdF,MAwBf,QAAS+b,GAAoClT,GAIzC,GAAI4K,GAAa5K,EAAG4K,UACpB,KAAI/O,EAAYmE,EAAG4K,aAAgB5K,EAAG4K,WAAtC,CAQA,IAAK,GAFH+H,GAJEQ,EAAe,8DACjBC,EAAe,uGACfL,EAAQnI,EAAW/N,MAAM,MACzB1F,KAGOkT,EAAO,EAAU0I,EAAMtc,OAAb4T,EAAqBA,GAAQ,EAAG,CAC/C,GAAIuI,GAAU,MACTD,EAAQQ,EAAa9J,KAAK0J,EAAM1I,KACjCuI,GACI3L,IAAO0L,EAAM,GACbtI,MAASsI,EAAM,GACfpI,OAAU,KACVrL,KAAQyT,EAAM,GACd9Z,UAEI8Z,EAAQS,EAAa/J,KAAK0J,EAAM1I,OACxCuI,GACI3L,IAAO0L,EAAM,GACbtI,MAASsI,EAAM,GACfpI,QAAWoI,EAAM,GACjBzT,KAAQyT,EAAM,IAAMA,EAAM,GAC1B9Z,KAAQ8Z,EAAM,GAAKA,EAAM,GAAG9V,MAAM,UAItC+V,KACKA,EAAQ1T,MAAQ0T,EAAQvI,OACzBuI,EAAQ1T,KAAO+R,GAGnB9Z,EAAMS,KAAKgb,IAInB,MAAKzb,GAAMV,QAKPyB,KAAQ8H,EAAG9H,KACXD,QAAW+H,EAAG/H,QACdgP,IAAO8J,IACP5Z,MAASA,GAPF,MAoBf,QAASkc,GAA2CrT,GAehD,GAAI+S,GAAQ/S,EAAG/H,QAAQ4E,MAAM,KAC7B,IAAmB,EAAfkW,EAAMtc,OACN,MAAO,KAUX,KAAK,GAFDkc,GALAW,EAAU,yFACVC,EAAU,kGACVC,EAAU,yCACVrc,KAIKkT,GAHK3Q,SAAS+Z,qBAAqB,UAG5B,GAAUV,EAAMtc,OAAb4T,EAAqBA,GAAQ,EAAG,CAC/C,GAAIqJ,GAAO,IACX,IAAKf,EAAQW,EAAQjK,KAAK0J,EAAM1I,IAC5BqJ,GACIzM,IAAO0L,EAAM,GACbzT,KAAQyT,EAAM,GACd9Z,QACAwR,MAASsI,EAAM,GACfpI,OAAU,UAEX,IAAKoI,EAAQY,EAAQlK,KAAK0J,EAAM1I,IAAS,CAC5CqJ,GACIzM,IAAO0L,EAAM,GACbzT,KAAQyT,EAAM,GACd9Z,QACAwR,MAASsI,EAAM,GACfpI,OAAU,UAGX,IAAKoI,EAAQa,EAAQnK,KAAK0J,EAAM1I,IAAS,CAC5C,GAAIpD,GAAM3R,OAAOgG,SAASE,KAAK8R,QAAQ,OAAQ,GAC/CoG,IACIzM,IAAOA,EACP/H,KAAQ,GACRrG,QACAwR,KAAQsI,EAAM,GACdpI,OAAU,MAIdmJ,IACKA,EAAKxU,OACNwU,EAAKxU,KAAO+R,GAGhB9Z,EAAMS,KAAK8b,IAInB,MAAKvc,GAAMV,QAKPyB,KAAQ8H,EAAG9H,KACXD,QAAW8a,EAAM,GACjB9L,IAAO8J,IACP5Z,MAASA,GAPF,KAwBf,QAAS4a,GAAoCpI,EAAW1C,EAAK2K,EAAQ3Z,GACjE,GAAI0b,IACA1M,IAAOA,EACPoD,KAAQuH,EAGZ,IAAI+B,EAAQ1M,KAAO0M,EAAQtJ,KAAM,CAO7B,GANAV,EAAU8I,YAAa,EAElBkB,EAAQzU,OACTyU,EAAQzU,KAAO+R,GAGftH,EAAUxS,MAAMV,OAAS,GACrBkT,EAAUxS,MAAM,GAAG8P,MAAQ0M,EAAQ1M,IAAK,CACxC,GAAI0C,EAAUxS,MAAM,GAAGkT,OAASsJ,EAAQtJ,KACpC,OAAO,CACJ,KAAKV,EAAUxS,MAAM,GAAGkT,MAAQV,EAAUxS,MAAM,GAAG+H,OAASyU,EAAQzU,KAEvE,MADAyK,GAAUxS,MAAM,GAAGkT,KAAOsJ,EAAQtJ,MAC3B,EAOnB,MAFAV,GAAUxS,MAAMyc,QAAQD,GACxBhK,EAAUkK,SAAU,GACb,EAKX,MAHIlK,GAAU8I,YAAa,GAGpB,EAYX,QAASqB,GAAsC9T,EAAI+T,GAS/C,IAAK,GAJDpB,GACAe,EALAM,EAAe,qEACf7c,KACA8c,KACAC,GAAY,EAKPC,EAAOL,EAAsCM,OAAQD,IAASD,EAAWC,EAAOA,EAAKC,OAC1F,GAAID,IAASjU,GAAqBiU,IAASzY,EAASiD,OAApD,CAkBA,GAbA+U,GACIzM,IAAO,KACP/H,KAAQ+R,EACR5G,KAAQ,KACRE,OAAU,MAGV4J,EAAKjc,KACLwb,EAAKxU,KAAOiV,EAAKjc,MACTya,EAAQqB,EAAa3K,KAAK8K,EAAKhW,eACvCuV,EAAKxU,KAAOyT,EAAM,IAGG,mBAAde,GAAKxU,KACd,IACEwU,EAAKxU,KAAOyT,EAAM0B,MAAMC,UAAU,EAAG3B,EAAM0B,MAAM7c,QAAQ,MACzD,MAAO7B,IAGPse,EAAM,GAAKE,GACXD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGvBhd,EAAMS,KAAK8b,GAGXK,GAGA5c,EAAMQ,OAAO,EAAGoc,EAGpB,IAAIQ,IACArc,KAAQ8H,EAAG9H,KACXD,QAAW+H,EAAG/H,QACdgP,IAAO8J,IACP5Z,MAASA,EAGb,OADA4a,GAAoCwC,EAAQvU,EAAGwU,WAAaxU,EAAGyU,SAAUzU,EAAGqK,MAAQrK,EAAG0U,WAAY1U,EAAG/H,SAAW+H,EAAG2U,aAC7GJ,EAQX,QAASrU,GAAkBF,EAAI+T,GAC3B,GAAI5c,GAAQ,IACZ4c,GAAkB,MAATA,EAAgB,GAAKA,CAE9B,KAKI,GADA5c,EAAQ+b,EAAoClT,GAExC,MAAO7I,GAEb,MAAOxB,GACL,GAAI+F,EAASsB,MACT,KAAMrH,GAId,IAEI,GADAwB,EAAQub,EAA+B1S,GAEnC,MAAO7I,GAEb,MAAOxB,GACL,GAAI+F,EAASsB,MACT,KAAMrH,GAId,IAEI,GADAwB,EAAQkc,EAA2CrT,GAE/C,MAAO7I,GAEb,MAAOxB,GACL,GAAI+F,EAASsB,MACT,KAAMrH,GAId,IAEI,GADAwB,EAAQ2c,EAAsC9T,EAAI+T,EAAQ,GAEtD,MAAO5c,GAEb,MAAOxB,GACL,GAAI+F,EAASsB,MACT,KAAMrH,GAId,OACIuC,KAAQ8H,EAAG9H,KACXD,QAAW+H,EAAG/H,QACdgP,IAAO8J,KAOf,MAHA7Q,GAAkB6R,oCAAsCA,EACxD7R,EAAkBwS,+BAAiCA,EAE5CxS,KAGXhL,EAAOD,QAAUyG,IAEdoS,EAAI,SAAS,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/docs/config.rst b/docs/config.rst index 9cf738fb8723..95e1955e29be 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -259,7 +259,7 @@ Putting it all together ... - + + Configuring the Client diff --git a/docs/install.rst b/docs/install.rst index 95e06c4f5362..51f17d93672c 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -9,7 +9,7 @@ So for example: .. sourcecode:: html - + @@ -28,7 +28,7 @@ Our CDN distributes builds with and without :doc:`integrations + This version does not include any plugins. See `ravenjs.com `_ for more information about plugins and getting diff --git a/docs/integrations/angular.rst b/docs/integrations/angular.rst index 1af2c1e92c51..fef2afdaf6e4 100644 --- a/docs/integrations/angular.rst +++ b/docs/integrations/angular.rst @@ -24,7 +24,7 @@ Example: .. sourcecode:: html - + Note that this CDN build auto-initializes the Angular plugin. diff --git a/docs/integrations/backbone.rst b/docs/integrations/backbone.rst index f293e15128fd..18aa4c23bbc8 100644 --- a/docs/integrations/backbone.rst +++ b/docs/integrations/backbone.rst @@ -9,7 +9,7 @@ after you load all other external libraries (like jQuery), but before your code. .. sourcecode:: html - + Configuring the Client ---------------------- diff --git a/docs/integrations/ember.rst b/docs/integrations/ember.rst index 8188f25f63e3..cbc62cd977d9 100644 --- a/docs/integrations/ember.rst +++ b/docs/integrations/ember.rst @@ -23,7 +23,7 @@ Example: .. sourcecode:: html - + Note that this CDN build auto-initializes the Ember plugin. diff --git a/docs/integrations/react.rst b/docs/integrations/react.rst index a2419c7cd5f0..84e3ae549b60 100644 --- a/docs/integrations/react.rst +++ b/docs/integrations/react.rst @@ -9,7 +9,7 @@ after you load all other external libraries (like jQuery), but before your code. .. sourcecode:: html - + Configuring the Client ---------------------- diff --git a/docs/integrations/vue.rst b/docs/integrations/vue.rst index cd7a5d9d26d9..ed47f8019ff5 100644 --- a/docs/integrations/vue.rst +++ b/docs/integrations/vue.rst @@ -27,7 +27,7 @@ Example: .. sourcecode:: html - + Note that this CDN build auto-initializes the Vue plugin. diff --git a/package.json b/package.json index c42b9e388c8e..1e7fa0a381a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.4.1", + "version": "3.5.0", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", "scripts": { diff --git a/src/raven.js b/src/raven.js index 203ca4ba6b9a..d9ca09bc62bf 100644 --- a/src/raven.js +++ b/src/raven.js @@ -89,7 +89,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.4.1', + VERSION: '3.5.0', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 8e1dba5f615b..acf4455b76f6 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1008,7 +1008,7 @@ describe('globals', function() { extra: {'session:duration': 100}, }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.4.1', + sentry_client: 'raven-js/3.5.0', sentry_key: 'abc', sentry_version: '7' }); @@ -1055,7 +1055,7 @@ describe('globals', function() { extra: {'session:duration': 100}, }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.4.1', + sentry_client: 'raven-js/3.5.0', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7'