Giant blob of minor changes
[dotfiles/.git] / .config / BraveSoftware / Brave-Browser / Default / Extensions / liecbddmkiiihnedobmlmillhodjkdmb / 3.6.22_0 / 3rd / inboxsdk.js
diff --git a/.config/BraveSoftware/Brave-Browser/Default/Extensions/liecbddmkiiihnedobmlmillhodjkdmb/3.6.22_0/3rd/inboxsdk.js b/.config/BraveSoftware/Brave-Browser/Default/Extensions/liecbddmkiiihnedobmlmillhodjkdmb/3.6.22_0/3rd/inboxsdk.js
deleted file mode 100644 (file)
index 611c98d..0000000
+++ /dev/null
@@ -1,2353 +0,0 @@
-/*!
- * InboxSDK
- * https://www.inboxsdk.com/
- *
- * The use of InboxSDK is governed by the Terms of Services located at
- * https://www.inboxsdk.com/terms
-
-
- *  __    __            _     _          _                _                      ___                 _ _ ___
- * / / /\ \ \__ _ _ __ | |_  | |_ ___   | |__   __ _  ___| | __   ___  _ __     / _ \_ __ ___   __ _(_) / _ \
- * \ \/  \/ / _` | '_ \| __| | __/ _ \  | '_ \ / _` |/ __| |/ /  / _ \| '_ \   / /_\/ '_ ` _ \ / _` | | \// /
- *  \  /\  / (_| | | | | |_  | || (_) | | | | | (_| | (__|   <  | (_) | | | | / /_\\| | | | | | (_| | | | \/
- *   \/  \/ \__,_|_| |_|\__|  \__\___/  |_| |_|\__,_|\___|_|\_\  \___/|_| |_| \____/|_| |_| |_|\__,_|_|_| ()
- *
- * Like complex reverse engineering? Want to make Gmail and Inbox a hackable platform?
- *
- * Join us at: www.streak.com/careers?source=sdk
- */
-
-(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;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-module.exports = { "default": require("core-js/library/fn/json/stringify"), __esModule: true };
-},{"core-js/library/fn/json/stringify":3}],2:[function(require,module,exports){
-module.exports = { "default": require("core-js/library/fn/object/assign"), __esModule: true };
-},{"core-js/library/fn/object/assign":4}],3:[function(require,module,exports){
-var core  = require('../../modules/_core')
-  , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
-module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
-  return $JSON.stringify.apply($JSON, arguments);
-};
-},{"../../modules/_core":9}],4:[function(require,module,exports){
-require('../../modules/es6.object.assign');
-module.exports = require('../../modules/_core').Object.assign;
-},{"../../modules/_core":9,"../../modules/es6.object.assign":39}],5:[function(require,module,exports){
-module.exports = function(it){
-  if(typeof it != 'function')throw TypeError(it + ' is not a function!');
-  return it;
-};
-},{}],6:[function(require,module,exports){
-var isObject = require('./_is-object');
-module.exports = function(it){
-  if(!isObject(it))throw TypeError(it + ' is not an object!');
-  return it;
-};
-},{"./_is-object":22}],7:[function(require,module,exports){
-// false -> Array#indexOf
-// true  -> Array#includes
-var toIObject = require('./_to-iobject')
-  , toLength  = require('./_to-length')
-  , toIndex   = require('./_to-index');
-module.exports = function(IS_INCLUDES){
-  return function($this, el, fromIndex){
-    var O      = toIObject($this)
-      , length = toLength(O.length)
-      , index  = toIndex(fromIndex, length)
-      , value;
-    // Array#includes uses SameValueZero equality algorithm
-    if(IS_INCLUDES && el != el)while(length > index){
-      value = O[index++];
-      if(value != value)return true;
-    // Array#toIndex ignores holes, Array#includes - not
-    } else for(;length > index; index++)if(IS_INCLUDES || index in O){
-      if(O[index] === el)return IS_INCLUDES || index || 0;
-    } return !IS_INCLUDES && -1;
-  };
-};
-},{"./_to-index":32,"./_to-iobject":34,"./_to-length":35}],8:[function(require,module,exports){
-var toString = {}.toString;
-
-module.exports = function(it){
-  return toString.call(it).slice(8, -1);
-};
-},{}],9:[function(require,module,exports){
-var core = module.exports = {version: '2.4.0'};
-if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
-},{}],10:[function(require,module,exports){
-// optional / simple context binding
-var aFunction = require('./_a-function');
-module.exports = function(fn, that, length){
-  aFunction(fn);
-  if(that === undefined)return fn;
-  switch(length){
-    case 1: return function(a){
-      return fn.call(that, a);
-    };
-    case 2: return function(a, b){
-      return fn.call(that, a, b);
-    };
-    case 3: return function(a, b, c){
-      return fn.call(that, a, b, c);
-    };
-  }
-  return function(/* ...args */){
-    return fn.apply(that, arguments);
-  };
-};
-},{"./_a-function":5}],11:[function(require,module,exports){
-// 7.2.1 RequireObjectCoercible(argument)
-module.exports = function(it){
-  if(it == undefined)throw TypeError("Can't call method on  " + it);
-  return it;
-};
-},{}],12:[function(require,module,exports){
-// Thank's IE8 for his funny defineProperty
-module.exports = !require('./_fails')(function(){
-  return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
-});
-},{"./_fails":16}],13:[function(require,module,exports){
-var isObject = require('./_is-object')
-  , document = require('./_global').document
-  // in old IE typeof document.createElement is 'object'
-  , is = isObject(document) && isObject(document.createElement);
-module.exports = function(it){
-  return is ? document.createElement(it) : {};
-};
-},{"./_global":17,"./_is-object":22}],14:[function(require,module,exports){
-// IE 8- don't enum bug keys\r
-module.exports = (\r
-  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\r
-).split(',');
-},{}],15:[function(require,module,exports){
-var global    = require('./_global')
-  , core      = require('./_core')
-  , ctx       = require('./_ctx')
-  , hide      = require('./_hide')
-  , PROTOTYPE = 'prototype';
-
-var $export = function(type, name, source){
-  var IS_FORCED = type & $export.F
-    , IS_GLOBAL = type & $export.G
-    , IS_STATIC = type & $export.S
-    , IS_PROTO  = type & $export.P
-    , IS_BIND   = type & $export.B
-    , IS_WRAP   = type & $export.W
-    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})
-    , expProto  = exports[PROTOTYPE]
-    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
-    , key, own, out;
-  if(IS_GLOBAL)source = name;
-  for(key in source){
-    // contains in native
-    own = !IS_FORCED && target && target[key] !== undefined;
-    if(own && key in exports)continue;
-    // export native or passed
-    out = own ? target[key] : source[key];
-    // prevent global pollution for namespaces
-    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
-    // bind timers to global for call from export context
-    : IS_BIND && own ? ctx(out, global)
-    // wrap global constructors for prevent change them in library
-    : IS_WRAP && target[key] == out ? (function(C){
-      var F = function(a, b, c){
-        if(this instanceof C){
-          switch(arguments.length){
-            case 0: return new C;
-            case 1: return new C(a);
-            case 2: return new C(a, b);
-          } return new C(a, b, c);
-        } return C.apply(this, arguments);
-      };
-      F[PROTOTYPE] = C[PROTOTYPE];
-      return F;
-    // make static versions for prototype methods
-    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
-    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
-    if(IS_PROTO){
-      (exports.virtual || (exports.virtual = {}))[key] = out;
-      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
-      if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
-    }
-  }
-};
-// type bitmap
-$export.F = 1;   // forced
-$export.G = 2;   // global
-$export.S = 4;   // static
-$export.P = 8;   // proto
-$export.B = 16;  // bind
-$export.W = 32;  // wrap
-$export.U = 64;  // safe
-$export.R = 128; // real proto method for `library` 
-module.exports = $export;
-},{"./_core":9,"./_ctx":10,"./_global":17,"./_hide":19}],16:[function(require,module,exports){
-module.exports = function(exec){
-  try {
-    return !!exec();
-  } catch(e){
-    return true;
-  }
-};
-},{}],17:[function(require,module,exports){
-// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
-var global = module.exports = typeof window != 'undefined' && window.Math == Math
-  ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
-if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
-},{}],18:[function(require,module,exports){
-var hasOwnProperty = {}.hasOwnProperty;
-module.exports = function(it, key){
-  return hasOwnProperty.call(it, key);
-};
-},{}],19:[function(require,module,exports){
-var dP         = require('./_object-dp')
-  , createDesc = require('./_property-desc');
-module.exports = require('./_descriptors') ? function(object, key, value){
-  return dP.f(object, key, createDesc(1, value));
-} : function(object, key, value){
-  object[key] = value;
-  return object;
-};
-},{"./_descriptors":12,"./_object-dp":24,"./_property-desc":29}],20:[function(require,module,exports){
-module.exports = !require('./_descriptors') && !require('./_fails')(function(){\r
-  return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\r
-});
-},{"./_descriptors":12,"./_dom-create":13,"./_fails":16}],21:[function(require,module,exports){
-// fallback for non-array-like ES3 and non-enumerable old V8 strings
-var cof = require('./_cof');
-module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
-  return cof(it) == 'String' ? it.split('') : Object(it);
-};
-},{"./_cof":8}],22:[function(require,module,exports){
-module.exports = function(it){
-  return typeof it === 'object' ? it !== null : typeof it === 'function';
-};
-},{}],23:[function(require,module,exports){
-'use strict';
-// 19.1.2.1 Object.assign(target, source, ...)
-var getKeys  = require('./_object-keys')
-  , gOPS     = require('./_object-gops')
-  , pIE      = require('./_object-pie')
-  , toObject = require('./_to-object')
-  , IObject  = require('./_iobject')
-  , $assign  = Object.assign;
-
-// should work with symbols and should have deterministic property order (V8 bug)
-module.exports = !$assign || require('./_fails')(function(){
-  var A = {}
-    , B = {}
-    , S = Symbol()
-    , K = 'abcdefghijklmnopqrst';
-  A[S] = 7;
-  K.split('').forEach(function(k){ B[k] = k; });
-  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
-}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
-  var T     = toObject(target)
-    , aLen  = arguments.length
-    , index = 1
-    , getSymbols = gOPS.f
-    , isEnum     = pIE.f;
-  while(aLen > index){
-    var S      = IObject(arguments[index++])
-      , keys   = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
-      , length = keys.length
-      , j      = 0
-      , key;
-    while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
-  } return T;
-} : $assign;
-},{"./_fails":16,"./_iobject":21,"./_object-gops":25,"./_object-keys":27,"./_object-pie":28,"./_to-object":36}],24:[function(require,module,exports){
-var anObject       = require('./_an-object')
-  , IE8_DOM_DEFINE = require('./_ie8-dom-define')
-  , toPrimitive    = require('./_to-primitive')
-  , dP             = Object.defineProperty;
-
-exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){
-  anObject(O);
-  P = toPrimitive(P, true);
-  anObject(Attributes);
-  if(IE8_DOM_DEFINE)try {
-    return dP(O, P, Attributes);
-  } catch(e){ /* empty */ }
-  if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
-  if('value' in Attributes)O[P] = Attributes.value;
-  return O;
-};
-},{"./_an-object":6,"./_descriptors":12,"./_ie8-dom-define":20,"./_to-primitive":37}],25:[function(require,module,exports){
-exports.f = Object.getOwnPropertySymbols;
-},{}],26:[function(require,module,exports){
-var has          = require('./_has')\r
-  , toIObject    = require('./_to-iobject')\r
-  , arrayIndexOf = require('./_array-includes')(false)\r
-  , IE_PROTO     = require('./_shared-key')('IE_PROTO');\r
-\r
-module.exports = function(object, names){\r
-  var O      = toIObject(object)\r
-    , i      = 0\r
-    , result = []\r
-    , key;\r
-  for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\r
-  // Don't enum bug & hidden keys\r
-  while(names.length > i)if(has(O, key = names[i++])){\r
-    ~arrayIndexOf(result, key) || result.push(key);\r
-  }\r
-  return result;\r
-};
-},{"./_array-includes":7,"./_has":18,"./_shared-key":30,"./_to-iobject":34}],27:[function(require,module,exports){
-// 19.1.2.14 / 15.2.3.14 Object.keys(O)\r
-var $keys       = require('./_object-keys-internal')\r
-  , enumBugKeys = require('./_enum-bug-keys');\r
-\r
-module.exports = Object.keys || function keys(O){\r
-  return $keys(O, enumBugKeys);\r
-};
-},{"./_enum-bug-keys":14,"./_object-keys-internal":26}],28:[function(require,module,exports){
-exports.f = {}.propertyIsEnumerable;
-},{}],29:[function(require,module,exports){
-module.exports = function(bitmap, value){
-  return {
-    enumerable  : !(bitmap & 1),
-    configurable: !(bitmap & 2),
-    writable    : !(bitmap & 4),
-    value       : value
-  };
-};
-},{}],30:[function(require,module,exports){
-var shared = require('./_shared')('keys')\r
-  , uid    = require('./_uid');\r
-module.exports = function(key){\r
-  return shared[key] || (shared[key] = uid(key));\r
-};
-},{"./_shared":31,"./_uid":38}],31:[function(require,module,exports){
-var global = require('./_global')
-  , SHARED = '__core-js_shared__'
-  , store  = global[SHARED] || (global[SHARED] = {});
-module.exports = function(key){
-  return store[key] || (store[key] = {});
-};
-},{"./_global":17}],32:[function(require,module,exports){
-var toInteger = require('./_to-integer')
-  , max       = Math.max
-  , min       = Math.min;
-module.exports = function(index, length){
-  index = toInteger(index);
-  return index < 0 ? max(index + length, 0) : min(index, length);
-};
-},{"./_to-integer":33}],33:[function(require,module,exports){
-// 7.1.4 ToInteger
-var ceil  = Math.ceil
-  , floor = Math.floor;
-module.exports = function(it){
-  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
-};
-},{}],34:[function(require,module,exports){
-// to indexed object, toObject with fallback for non-array-like ES3 strings
-var IObject = require('./_iobject')
-  , defined = require('./_defined');
-module.exports = function(it){
-  return IObject(defined(it));
-};
-},{"./_defined":11,"./_iobject":21}],35:[function(require,module,exports){
-// 7.1.15 ToLength
-var toInteger = require('./_to-integer')
-  , min       = Math.min;
-module.exports = function(it){
-  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
-};
-},{"./_to-integer":33}],36:[function(require,module,exports){
-// 7.1.13 ToObject(argument)
-var defined = require('./_defined');
-module.exports = function(it){
-  return Object(defined(it));
-};
-},{"./_defined":11}],37:[function(require,module,exports){
-// 7.1.1 ToPrimitive(input [, PreferredType])
-var isObject = require('./_is-object');
-// instead of the ES6 spec version, we didn't implement @@toPrimitive case
-// and the second argument - flag - preferred type is a string
-module.exports = function(it, S){
-  if(!isObject(it))return it;
-  var fn, val;
-  if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
-  if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
-  if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
-  throw TypeError("Can't convert object to primitive value");
-};
-},{"./_is-object":22}],38:[function(require,module,exports){
-var id = 0
-  , px = Math.random();
-module.exports = function(key){
-  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
-};
-},{}],39:[function(require,module,exports){
-// 19.1.3.1 Object.assign(target, source)
-var $export = require('./_export');
-
-$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});
-},{"./_export":15,"./_object-assign":23}],40:[function(require,module,exports){
-var isArray = require('../lang/isArray');
-
-/**
- * The inverse of `_.pairs`; this method returns an object composed from arrays
- * of property names and values. Provide either a single two dimensional array,
- * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names
- * and one of corresponding values.
- *
- * @static
- * @memberOf _
- * @alias object
- * @category Array
- * @param {Array} props The property names.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObject([['fred', 30], ['barney', 40]]);
- * // => { 'fred': 30, 'barney': 40 }
- *
- * _.zipObject(['fred', 'barney'], [30, 40]);
- * // => { 'fred': 30, 'barney': 40 }
- */
-function zipObject(props, values) {
-  var index = -1,
-      length = props ? props.length : 0,
-      result = {};
-
-  if (length && !values && !isArray(props[0])) {
-    values = [];
-  }
-  while (++index < length) {
-    var key = props[index];
-    if (values) {
-      result[key] = values[index];
-    } else if (key) {
-      result[key[0]] = key[1];
-    }
-  }
-  return result;
-}
-
-module.exports = zipObject;
-
-},{"../lang/isArray":61}],41:[function(require,module,exports){
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery('#add').on('click', _.before(5, addContactToList));
- * // => allows adding up to 4 contacts to the list
- */
-function before(n, func) {
-  var result;
-  if (typeof func != 'function') {
-    if (typeof n == 'function') {
-      var temp = n;
-      n = func;
-      func = temp;
-    } else {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-  }
-  return function() {
-    if (--n > 0) {
-      result = func.apply(this, arguments);
-    }
-    if (n <= 1) {
-      func = undefined;
-    }
-    return result;
-  };
-}
-
-module.exports = before;
-
-},{}],42:[function(require,module,exports){
-var baseDelay = require('../internal/baseDelay'),
-    restParam = require('./restParam');
-
-/**
- * Defers invoking the `func` until the current call stack has cleared. Any
- * additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to defer.
- * @param {...*} [args] The arguments to invoke the function with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.defer(function(text) {
- *   console.log(text);
- * }, 'deferred');
- * // logs 'deferred' after one or more milliseconds
- */
-var defer = restParam(function(func, args) {
-  return baseDelay(func, 1, args);
-});
-
-module.exports = defer;
-
-},{"../internal/baseDelay":45,"./restParam":44}],43:[function(require,module,exports){
-var before = require('./before');
-
-/**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first call. The `func` is invoked
- * with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // `initialize` invokes `createApplication` once
- */
-function once(func) {
-  return before(2, func);
-}
-
-module.exports = once;
-
-},{"./before":41}],44:[function(require,module,exports){
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the
- * created function and arguments from `start` and beyond provided as an array.
- *
- * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.restParam(function(what, names) {
- *   return what + ' ' + _.initial(names).join(', ') +
- *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
- * });
- *
- * say('hello', 'fred', 'barney', 'pebbles');
- * // => 'hello fred, barney, & pebbles'
- */
-function restParam(func, start) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
-  return function() {
-    var args = arguments,
-        index = -1,
-        length = nativeMax(args.length - start, 0),
-        rest = Array(length);
-
-    while (++index < length) {
-      rest[index] = args[start + index];
-    }
-    switch (start) {
-      case 0: return func.call(this, rest);
-      case 1: return func.call(this, args[0], rest);
-      case 2: return func.call(this, args[0], args[1], rest);
-    }
-    var otherArgs = Array(start + 1);
-    index = -1;
-    while (++index < start) {
-      otherArgs[index] = args[index];
-    }
-    otherArgs[start] = rest;
-    return func.apply(this, otherArgs);
-  };
-}
-
-module.exports = restParam;
-
-},{}],45:[function(require,module,exports){
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * The base implementation of `_.delay` and `_.defer` which accepts an index
- * of where to slice the arguments to provide to `func`.
- *
- * @private
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {Object} args The arguments provide to `func`.
- * @returns {number} Returns the timer id.
- */
-function baseDelay(func, wait, args) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  return setTimeout(function() { func.apply(undefined, args); }, wait);
-}
-
-module.exports = baseDelay;
-
-},{}],46:[function(require,module,exports){
-var createBaseFor = require('./createBaseFor');
-
-/**
- * The base implementation of `baseForIn` and `baseForOwn` which iterates
- * over `object` properties returned by `keysFunc` invoking `iteratee` for
- * each property. Iteratee functions may exit iteration early by explicitly
- * returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
-var baseFor = createBaseFor();
-
-module.exports = baseFor;
-
-},{"./createBaseFor":50}],47:[function(require,module,exports){
-var baseFor = require('./baseFor'),
-    keys = require('../object/keys');
-
-/**
- * The base implementation of `_.forOwn` without support for callback
- * shorthands and `this` binding.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
-function baseForOwn(object, iteratee) {
-  return baseFor(object, iteratee, keys);
-}
-
-module.exports = baseForOwn;
-
-},{"../object/keys":66,"./baseFor":46}],48:[function(require,module,exports){
-/**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new function.
- */
-function baseProperty(key) {
-  return function(object) {
-    return object == null ? undefined : object[key];
-  };
-}
-
-module.exports = baseProperty;
-
-},{}],49:[function(require,module,exports){
-var identity = require('../utility/identity');
-
-/**
- * A specialized version of `baseCallback` which only supports `this` binding
- * and specifying the number of arguments to provide to `func`.
- *
- * @private
- * @param {Function} func The function to bind.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {number} [argCount] The number of arguments to provide to `func`.
- * @returns {Function} Returns the callback.
- */
-function bindCallback(func, thisArg, argCount) {
-  if (typeof func != 'function') {
-    return identity;
-  }
-  if (thisArg === undefined) {
-    return func;
-  }
-  switch (argCount) {
-    case 1: return function(value) {
-      return func.call(thisArg, value);
-    };
-    case 3: return function(value, index, collection) {
-      return func.call(thisArg, value, index, collection);
-    };
-    case 4: return function(accumulator, value, index, collection) {
-      return func.call(thisArg, accumulator, value, index, collection);
-    };
-    case 5: return function(value, other, key, object, source) {
-      return func.call(thisArg, value, other, key, object, source);
-    };
-  }
-  return function() {
-    return func.apply(thisArg, arguments);
-  };
-}
-
-module.exports = bindCallback;
-
-},{"../utility/identity":68}],50:[function(require,module,exports){
-var toObject = require('./toObject');
-
-/**
- * Creates a base function for `_.forIn` or `_.forInRight`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseFor(fromRight) {
-  return function(object, iteratee, keysFunc) {
-    var iterable = toObject(object),
-        props = keysFunc(object),
-        length = props.length,
-        index = fromRight ? length : -1;
-
-    while ((fromRight ? index-- : ++index < length)) {
-      var key = props[index];
-      if (iteratee(iterable[key], key, iterable) === false) {
-        break;
-      }
-    }
-    return object;
-  };
-}
-
-module.exports = createBaseFor;
-
-},{"./toObject":59}],51:[function(require,module,exports){
-var bindCallback = require('./bindCallback');
-
-/**
- * Creates a function for `_.forOwn` or `_.forOwnRight`.
- *
- * @private
- * @param {Function} objectFunc The function to iterate over an object.
- * @returns {Function} Returns the new each function.
- */
-function createForOwn(objectFunc) {
-  return function(object, iteratee, thisArg) {
-    if (typeof iteratee != 'function' || thisArg !== undefined) {
-      iteratee = bindCallback(iteratee, thisArg, 3);
-    }
-    return objectFunc(object, iteratee);
-  };
-}
-
-module.exports = createForOwn;
-
-},{"./bindCallback":49}],52:[function(require,module,exports){
-var baseProperty = require('./baseProperty');
-
-/**
- * Gets the "length" property value of `object`.
- *
- * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
- * that affects Safari on at least iOS 8.1-8.3 ARM64.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {*} Returns the "length" value.
- */
-var getLength = baseProperty('length');
-
-module.exports = getLength;
-
-},{"./baseProperty":48}],53:[function(require,module,exports){
-var isNative = require('../lang/isNative');
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
-  var value = object == null ? undefined : object[key];
-  return isNative(value) ? value : undefined;
-}
-
-module.exports = getNative;
-
-},{"../lang/isNative":63}],54:[function(require,module,exports){
-var getLength = require('./getLength'),
-    isLength = require('./isLength');
-
-/**
- * Checks if `value` is array-like.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- */
-function isArrayLike(value) {
-  return value != null && isLength(getLength(value));
-}
-
-module.exports = isArrayLike;
-
-},{"./getLength":52,"./isLength":56}],55:[function(require,module,exports){
-/** Used to detect unsigned integer values. */
-var reIsUint = /^\d+$/;
-
-/**
- * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
- * of an array-like value.
- */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
-  value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
-  length = length == null ? MAX_SAFE_INTEGER : length;
-  return value > -1 && value % 1 == 0 && value < length;
-}
-
-module.exports = isIndex;
-
-},{}],56:[function(require,module,exports){
-/**
- * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
- * of an array-like value.
- */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- */
-function isLength(value) {
-  return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-module.exports = isLength;
-
-},{}],57:[function(require,module,exports){
-/**
- * Checks if `value` is object-like.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- */
-function isObjectLike(value) {
-  return !!value && typeof value == 'object';
-}
-
-module.exports = isObjectLike;
-
-},{}],58:[function(require,module,exports){
-var isArguments = require('../lang/isArguments'),
-    isArray = require('../lang/isArray'),
-    isIndex = require('./isIndex'),
-    isLength = require('./isLength'),
-    keysIn = require('../object/keysIn');
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * A fallback implementation of `Object.keys` which creates an array of the
- * own enumerable property names of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function shimKeys(object) {
-  var props = keysIn(object),
-      propsLength = props.length,
-      length = propsLength && object.length;
-
-  var allowIndexes = !!length && isLength(length) &&
-    (isArray(object) || isArguments(object));
-
-  var index = -1,
-      result = [];
-
-  while (++index < propsLength) {
-    var key = props[index];
-    if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = shimKeys;
-
-},{"../lang/isArguments":60,"../lang/isArray":61,"../object/keysIn":67,"./isIndex":55,"./isLength":56}],59:[function(require,module,exports){
-var isObject = require('../lang/isObject');
-
-/**
- * Converts `value` to an object if it's not one.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {Object} Returns the object.
- */
-function toObject(value) {
-  return isObject(value) ? value : Object(value);
-}
-
-module.exports = toObject;
-
-},{"../lang/isObject":64}],60:[function(require,module,exports){
-var isArrayLike = require('../internal/isArrayLike'),
-    isObjectLike = require('../internal/isObjectLike');
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Native method references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-/**
- * Checks if `value` is classified as an `arguments` object.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-function isArguments(value) {
-  return isObjectLike(value) && isArrayLike(value) &&
-    hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
-}
-
-module.exports = isArguments;
-
-},{"../internal/isArrayLike":54,"../internal/isObjectLike":57}],61:[function(require,module,exports){
-var getNative = require('../internal/getNative'),
-    isLength = require('../internal/isLength'),
-    isObjectLike = require('../internal/isObjectLike');
-
-/** `Object#toString` result references. */
-var arrayTag = '[object Array]';
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objToString = objectProto.toString;
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeIsArray = getNative(Array, 'isArray');
-
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(function() { return arguments; }());
- * // => false
- */
-var isArray = nativeIsArray || function(value) {
-  return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
-};
-
-module.exports = isArray;
-
-},{"../internal/getNative":53,"../internal/isLength":56,"../internal/isObjectLike":57}],62:[function(require,module,exports){
-var isObject = require('./isObject');
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]';
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objToString = objectProto.toString;
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
-  // The use of `Object#toString` avoids issues with the `typeof` operator
-  // in older versions of Chrome and Safari which return 'function' for regexes
-  // and Safari 8 which returns 'object' for typed array constructors.
-  return isObject(value) && objToString.call(value) == funcTag;
-}
-
-module.exports = isFunction;
-
-},{"./isObject":64}],63:[function(require,module,exports){
-var isFunction = require('./isFunction'),
-    isObjectLike = require('../internal/isObjectLike');
-
-/** Used to detect host constructors (Safari > 5). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var fnToString = Function.prototype.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
-  fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
-  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/**
- * Checks if `value` is a native function.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
- * @example
- *
- * _.isNative(Array.prototype.push);
- * // => true
- *
- * _.isNative(_);
- * // => false
- */
-function isNative(value) {
-  if (value == null) {
-    return false;
-  }
-  if (isFunction(value)) {
-    return reIsNative.test(fnToString.call(value));
-  }
-  return isObjectLike(value) && reIsHostCtor.test(value);
-}
-
-module.exports = isNative;
-
-},{"../internal/isObjectLike":57,"./isFunction":62}],64:[function(require,module,exports){
-/**
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(1);
- * // => false
- */
-function isObject(value) {
-  // Avoid a V8 JIT bug in Chrome 19-20.
-  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
-  var type = typeof value;
-  return !!value && (type == 'object' || type == 'function');
-}
-
-module.exports = isObject;
-
-},{}],65:[function(require,module,exports){
-var baseForOwn = require('../internal/baseForOwn'),
-    createForOwn = require('../internal/createForOwn');
-
-/**
- * Iterates over own enumerable properties of an object invoking `iteratee`
- * for each property. The `iteratee` is bound to `thisArg` and invoked with
- * three arguments: (value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Object} Returns `object`.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwn(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => logs 'a' and 'b' (iteration order is not guaranteed)
- */
-var forOwn = createForOwn(baseForOwn);
-
-module.exports = forOwn;
-
-},{"../internal/baseForOwn":47,"../internal/createForOwn":51}],66:[function(require,module,exports){
-var getNative = require('../internal/getNative'),
-    isArrayLike = require('../internal/isArrayLike'),
-    isObject = require('../lang/isObject'),
-    shimKeys = require('../internal/shimKeys');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeKeys = getNative(Object, 'keys');
-
-/**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
-var keys = !nativeKeys ? shimKeys : function(object) {
-  var Ctor = object == null ? undefined : object.constructor;
-  if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
-      (typeof object != 'function' && isArrayLike(object))) {
-    return shimKeys(object);
-  }
-  return isObject(object) ? nativeKeys(object) : [];
-};
-
-module.exports = keys;
-
-},{"../internal/getNative":53,"../internal/isArrayLike":54,"../internal/shimKeys":58,"../lang/isObject":64}],67:[function(require,module,exports){
-var isArguments = require('../lang/isArguments'),
-    isArray = require('../lang/isArray'),
-    isIndex = require('../internal/isIndex'),
-    isLength = require('../internal/isLength'),
-    isObject = require('../lang/isObject');
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an array of the own and inherited enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keysIn(new Foo);
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
- */
-function keysIn(object) {
-  if (object == null) {
-    return [];
-  }
-  if (!isObject(object)) {
-    object = Object(object);
-  }
-  var length = object.length;
-  length = (length && isLength(length) &&
-    (isArray(object) || isArguments(object)) && length) || 0;
-
-  var Ctor = object.constructor,
-      index = -1,
-      isProto = typeof Ctor == 'function' && Ctor.prototype === object,
-      result = Array(length),
-      skipIndexes = length > 0;
-
-  while (++index < length) {
-    result[index] = (index + '');
-  }
-  for (var key in object) {
-    if (!(skipIndexes && isIndex(key, length)) &&
-        !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = keysIn;
-
-},{"../internal/isIndex":55,"../internal/isLength":56,"../lang/isArguments":60,"../lang/isArray":61,"../lang/isObject":64}],68:[function(require,module,exports){
-/**
- * This method returns the first argument provided to it.
- *
- * @static
- * @memberOf _
- * @category Utility
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'user': 'fred' };
- *
- * _.identity(object) === object;
- * // => true
- */
-function identity(value) {
-  return value;
-}
-
-module.exports = identity;
-
-},{}],69:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-// If obj.hasOwnProperty has been overridden, then calling
-// obj.hasOwnProperty(prop) will break.
-// See: https://github.com/joyent/node/issues/1707
-function hasOwnProperty(obj, prop) {
-  return Object.prototype.hasOwnProperty.call(obj, prop);
-}
-
-module.exports = function(qs, sep, eq, options) {
-  sep = sep || '&';
-  eq = eq || '=';
-  var obj = {};
-
-  if (typeof qs !== 'string' || qs.length === 0) {
-    return obj;
-  }
-
-  var regexp = /\+/g;
-  qs = qs.split(sep);
-
-  var maxKeys = 1000;
-  if (options && typeof options.maxKeys === 'number') {
-    maxKeys = options.maxKeys;
-  }
-
-  var len = qs.length;
-  // maxKeys <= 0 means that we should not limit keys count
-  if (maxKeys > 0 && len > maxKeys) {
-    len = maxKeys;
-  }
-
-  for (var i = 0; i < len; ++i) {
-    var x = qs[i].replace(regexp, '%20'),
-        idx = x.indexOf(eq),
-        kstr, vstr, k, v;
-
-    if (idx >= 0) {
-      kstr = x.substr(0, idx);
-      vstr = x.substr(idx + 1);
-    } else {
-      kstr = x;
-      vstr = '';
-    }
-
-    k = decodeURIComponent(kstr);
-    v = decodeURIComponent(vstr);
-
-    if (!hasOwnProperty(obj, k)) {
-      obj[k] = v;
-    } else if (isArray(obj[k])) {
-      obj[k].push(v);
-    } else {
-      obj[k] = [obj[k], v];
-    }
-  }
-
-  return obj;
-};
-
-var isArray = Array.isArray || function (xs) {
-  return Object.prototype.toString.call(xs) === '[object Array]';
-};
-
-},{}],70:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-var stringifyPrimitive = function(v) {
-  switch (typeof v) {
-    case 'string':
-      return v;
-
-    case 'boolean':
-      return v ? 'true' : 'false';
-
-    case 'number':
-      return isFinite(v) ? v : '';
-
-    default:
-      return '';
-  }
-};
-
-module.exports = function(obj, sep, eq, name) {
-  sep = sep || '&';
-  eq = eq || '=';
-  if (obj === null) {
-    obj = undefined;
-  }
-
-  if (typeof obj === 'object') {
-    return map(objectKeys(obj), function(k) {
-      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
-      if (isArray(obj[k])) {
-        return map(obj[k], function(v) {
-          return ks + encodeURIComponent(stringifyPrimitive(v));
-        }).join(sep);
-      } else {
-        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
-      }
-    }).join(sep);
-
-  }
-
-  if (!name) return '';
-  return encodeURIComponent(stringifyPrimitive(name)) + eq +
-         encodeURIComponent(stringifyPrimitive(obj));
-};
-
-var isArray = Array.isArray || function (xs) {
-  return Object.prototype.toString.call(xs) === '[object Array]';
-};
-
-function map (xs, f) {
-  if (xs.map) return xs.map(f);
-  var res = [];
-  for (var i = 0; i < xs.length; i++) {
-    res.push(f(xs[i], i));
-  }
-  return res;
-}
-
-var objectKeys = Object.keys || function (obj) {
-  var res = [];
-  for (var key in obj) {
-    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
-  }
-  return res;
-};
-
-},{}],71:[function(require,module,exports){
-'use strict';
-
-exports.decode = exports.parse = require('./decode');
-exports.encode = exports.stringify = require('./encode');
-
-},{"./decode":69,"./encode":70}],72:[function(require,module,exports){
-(function (global){
-"use strict";
-
-// We only target browsers that natively support Promises, so we replace
-// Babel's Promise helper with a reference to the native promise.
-module.exports = {
-  __esModule: true,
-  default: global.Promise
-};
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{}],73:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _assign = require('babel-runtime/core-js/object/assign');
-
-var _assign2 = _interopRequireDefault(_assign);
-
-var _promise = require('babel-runtime/core-js/promise');
-
-var _promise2 = _interopRequireDefault(_promise);
-
-exports.default = ajax;
-
-var _querystring = require('querystring');
-
-var _querystring2 = _interopRequireDefault(_querystring);
-
-var _delay = require('./delay');
-
-var _delay2 = _interopRequireDefault(_delay);
-
-var _cachebustUrl = require('./cachebust-url');
-
-var _cachebustUrl2 = _interopRequireDefault(_cachebustUrl);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-//jshint ignore:start
-
-var forOwn = require('lodash/object/forOwn');
-
-
-var MAX_TIMEOUT = 64 * 1000; //64 seconds
-var MAX_RETRIES = 5;
-var serversToIgnore = {};
-
-// Simple ajax helper.
-// opts:
-// * url
-// * [method]
-// * [cachebust] - boolean
-// * [headers] - object
-// * [xhrFields] - object
-// * [data]
-function ajax(opts) {
-  if (!opts || typeof opts.url !== 'string') {
-    throw new Error('URL must be given');
-  }
-  return new _promise2.default(function (resolve, reject) {
-    var method = opts.method ? opts.method : "GET";
-    var url = opts.url;
-    var stringData = undefined;
-    if (opts.data) {
-      stringData = typeof opts.data === "string" ? opts.data : _querystring2.default.stringify(opts.data);
-      if (method === "GET" || method === "HEAD") {
-        url += (/\?/.test(url) ? "&" : "?") + stringData;
-        stringData = null;
-      }
-    }
-
-    var match = url.match(/(?:(?:[a-z]+:)?\/\/)?([^/]*)\//);
-    if (!match) {
-      throw new Error("Failed to match url");
-    }
-    var server = match[1];
-    if (Object.prototype.hasOwnProperty.call(serversToIgnore, server)) {
-      reject(new Error('Server at ' + url + ' has told us to stop connecting'));
-      return;
-    }
-
-    if (opts.cachebust) {
-      url = (0, _cachebustUrl2.default)(url);
-    }
-
-    var xhr = new XMLHttpRequest();
-    (0, _assign2.default)(xhr, opts.xhrFields);
-    xhr.onerror = function (event) {
-      if ((opts.retryNum || 0) < MAX_RETRIES) {
-        if (xhr.status === 502 || (xhr.status === 0 || xhr.status >= 500) && (method === "GET" || method === "HEAD" || opts.canRetry === true)) {
-          resolve(_retry(opts));
-          return;
-        }
-      }
-
-      var err = (0, _assign2.default)(new Error('Failed to load ' + url), {
-        event: event, xhr: xhr, status: xhr.status
-      });
-
-      // give a way for a server to tell us to go away for now. Good fallback
-      // in case a bug ever causes clients to spam a server with requests.
-      if (xhr.status == 490) {
-        serversToIgnore[server] = true;
-      }
-      reject(err);
-    };
-    xhr.onload = function (event) {
-      if (xhr.status === 200) {
-        resolve({
-          xhr: xhr,
-          text: xhr.responseText
-        });
-      } else {
-        xhr.onerror(event);
-      }
-    };
-    xhr.open(method, url, true);
-    forOwn(opts.headers, function (value, name) {
-      xhr.setRequestHeader(name, value);
-    });
-    xhr.send(stringData);
-  });
-}
-
-function _retry(opts) {
-  var retryNum = (opts.retryNum || 0) + 1;
-
-  // 2000 4000 8000...
-  var retryTimeout = Math.min(Math.pow(2, retryNum) * 1000, MAX_TIMEOUT);
-
-  return (0, _delay2.default)(retryTimeout).then(function () {
-    return ajax((0, _assign2.default)({}, opts, { retryNum: retryNum }));
-  });
-}
-module.exports = exports['default'];
-
-},{"./cachebust-url":74,"./delay":76,"babel-runtime/core-js/object/assign":2,"babel-runtime/core-js/promise":72,"lodash/object/forOwn":65,"querystring":71}],74:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = cachebustUrl;
-
-//jshint ignore:start
-
-var r = /([?&])_=[^&]*/;
-var nonce = Date.now() + Math.floor(Math.random() * Math.pow(2, 32));
-
-function cachebustUrl(url) {
-  if (r.test(url)) {
-    return url.replace(r, "$1_=" + nonce++);
-  } else {
-    return url + (/\?/.test(url) ? "&" : "?") + "_=" + nonce++;
-  }
-}
-module.exports = exports["default"];
-
-},{}],75:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _promise = require('babel-runtime/core-js/promise');
-
-var _promise2 = _interopRequireDefault(_promise);
-
-exports.default = connectivityTest;
-
-var _cachebustUrl = require('./cachebust-url');
-
-var _cachebustUrl2 = _interopRequireDefault(_cachebustUrl);
-
-var _zipObject = require('lodash/array/zipObject');
-
-var _zipObject2 = _interopRequireDefault(_zipObject);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-//jshint ignore:start
-
-var URLS = ['https://mailfoogae.appspot.com/build/images/composeOverflowToggle.png', 'https://www.streak.com/build/images/composeOverflowToggle.png', 'https://www.inboxsdk.com/images/logo-red.png'];
-
-function imageTest(url) {
-  return new _promise2.default(function (resolve, reject) {
-    var img = document.createElement('img');
-    img.onload = function () {
-      resolve(true);
-    };
-    img.onloadend = img.onerror = function () {
-      resolve(false);
-    };
-    img.src = (0, _cachebustUrl2.default)(url);
-  });
-}
-
-function connectivityTest() {
-  return _promise2.default.all(URLS.map(function (url) {
-    return imageTest(url).then(function (success) {
-      return [url, success];
-    });
-  })).then(function (results) {
-    return (0, _zipObject2.default)(results);
-  });
-}
-module.exports = exports['default'];
-
-},{"./cachebust-url":74,"babel-runtime/core-js/promise":72,"lodash/array/zipObject":40}],76:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _promise = require("babel-runtime/core-js/promise");
-
-var _promise2 = _interopRequireDefault(_promise);
-
-exports.default = delay;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-//jshint ignore:start
-
-function delay(time, value) {
-  return new _promise2.default(function (resolve, reject) {
-    setTimeout(function () {
-      return resolve(value);
-    }, time);
-  });
-}
-module.exports = exports["default"];
-
-},{"babel-runtime/core-js/promise":72}],77:[function(require,module,exports){
-(function (global){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = getExtensionId;
-
-//jshint ignore:start
-
-function getExtensionId() {
-  if (global.chrome && global.chrome.extension && global.chrome.extension.getURL) {
-    return global.chrome.extension.getURL('');
-  }
-  return null;
-}
-module.exports = exports['default'];
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{}],78:[function(require,module,exports){
-(function (global){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = getSessionId;
-
-//jshint ignore:start
-
-function getSessionId() {
-  if (global.document && document.documentElement.hasAttribute('data-inboxsdk-session-id')) {
-    return document.documentElement.getAttribute('data-inboxsdk-session-id');
-  } else {
-    var sessionId = Date.now() + '-' + Math.random();
-    if (global.document) {
-      document.documentElement.setAttribute('data-inboxsdk-session-id', sessionId);
-    }
-    return sessionId;
-  }
-}
-module.exports = exports['default'];
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{}],79:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = getStackTrace;
-
-//jshint ignore:start
-
-function getStackTrace() {
-  var err = new Error("Stack saver");
-  // Cut the first two lines off. The first line has the error name, and the
-  // second line is inside this function.
-  return ("" + err.stack).replace(/^([^\n]*\n){2}/, '');
-}
-module.exports = exports["default"];
-
-},{}],80:[function(require,module,exports){
-(function (global){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _promise = require('babel-runtime/core-js/promise');
-
-var _promise2 = _interopRequireDefault(_promise);
-
-exports.default = loadScript;
-
-var _connectivityTest = require('./connectivity-test');
-
-var _connectivityTest2 = _interopRequireDefault(_connectivityTest);
-
-var _logError = require('./log-error');
-
-var _logError2 = _interopRequireDefault(_logError);
-
-var _ajax = require('./ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _delay = require('./delay');
-
-var _delay2 = _interopRequireDefault(_delay);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-//jshint ignore:start
-
-var once = require('lodash/function/once');
-var defer = require('lodash/function/defer');
-
-
-var isContentScript = once(function () {
-  if (global.chrome && global.chrome.extension) return true;
-  if (global.safari && global.safari.extension) return true;
-  return false;
-});
-
-function addScriptToPage(url, cors) {
-  var script = document.createElement('script');
-  script.type = 'text/javascript';
-  if (cors) {
-    script.crossOrigin = 'anonymous';
-  }
-
-  var promise = new _promise2.default(function (resolve, reject) {
-    script.addEventListener('error', function (event) {
-      reject(event.error || new Error(event.message || "Load failure: " + url, event.filename, event.lineno, event.column));
-    }, false);
-    script.addEventListener('load', function () {
-      // Make sure the script has a moment to execute before this promise
-      // resolves.
-      defer(resolve);
-    }, false);
-  });
-
-  script.src = url;
-  document.head.appendChild(script);
-  return promise;
-}
-
-function loadScript(url, opts) {
-  var pr = void 0;
-  if (isContentScript()) {
-    (function () {
-      var attempt = function attempt(retryNum, lastErr) {
-        if (retryNum > 3) {
-          throw lastErr || new Error("Ran out of loadScript attempts for unknown reason");
-        }
-
-        return (0, _ajax2.default)({
-          url: url, cachebust: retryNum > 0
-        }).then(function (response) {
-          // jshint evil:true
-
-          // Q: Why put the code into a function before executing it instead of
-          //    evaling it immediately?
-          // A: Chrome would execute it before applying any remembered
-          //    breakpoints.
-          // Q: Why not just use `... = new Function(...)`?
-          // A: The sourcemaps would be off by one line in Chrome because of
-          //    https://code.google.com/p/chromium/issues/detail?id=109362
-          // Q: indirectEval?
-          // A: Using the eval value rather than the eval keyword causes the
-          //    code passed to it to be run in the global scope instead of the
-          //    current scope. (Seriously, it's a javascript thing.)
-          var originalCode = response.text;
-          var indirectEval = eval;
-
-          var codeParts = [];
-          if (opts && opts.disableSourceMappingURL) {
-            // Don't remove a data: URI sourcemap (used in dev)
-            codeParts.push(originalCode.replace(/\/\/# sourceMappingURL=(?!data:)[^\n]*\n?$/, ''));
-          } else {
-            codeParts.push(originalCode);
-          }
-
-          if (!opts || !opts.nowrap) {
-            codeParts.unshift("(function(){");
-            codeParts.push("\n});");
-          }
-
-          codeParts.push("\n//# sourceURL=" + url + "\n");
-
-          var codeToRun = codeParts.join('');
-          var program = void 0;
-          try {
-            program = indirectEval(codeToRun);
-          } catch (err) {
-            if (err && err.name === 'SyntaxError') {
-              (0, _logError2.default)(err, {
-                retryNum: retryNum,
-                caughtSyntaxError: true,
-                url: url,
-                message: 'SyntaxError in loading ' + url + '. Did we not load it fully? Trying again...'
-              }, {});
-              return (0, _delay2.default)(5000).then(function () {
-                return attempt(retryNum + 1, err);
-              });
-            }
-            // SyntaxErrors are the only errors that can happen during eval that we
-            // retry because sometimes AppEngine doesn't serve the full javascript.
-            // No other error is retried because other errors aren't likely to be
-            // transient.
-            throw err;
-          }
-          if (!opts || !opts.nowrap) {
-            program();
-          }
-        });
-      };
-
-      pr = attempt(0, null);
-    })();
-  } else {
-    // Try to add script as CORS first so we can get error stack data from it.
-    pr = addScriptToPage(url, true).catch(function () {
-      // Only show the warning if we successfully load the script on retry.
-      return addScriptToPage(url, false).then(function () {
-        console.warn("Script " + url + " included without CORS headers. Error logs might be censored by the browser.");
-      });
-    });
-  }
-  pr.catch(function (err) {
-    return (0, _connectivityTest2.default)().then(function (connectivityTestResults) {
-      (0, _logError2.default)(err, {
-        url: url,
-        connectivityTestResults: connectivityTestResults,
-        status: err && err.status,
-        response: err && err.xhr ? err.xhr.responseText : null,
-        message: 'Failed to load script'
-      }, {});
-    });
-  });
-  return pr;
-}
-module.exports = exports['default'];
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{"./ajax":73,"./connectivity-test":75,"./delay":76,"./log-error":81,"babel-runtime/core-js/promise":72,"lodash/function/defer":42,"lodash/function/once":43}],81:[function(require,module,exports){
-(function (global){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _stringify = require('babel-runtime/core-js/json/stringify');
-
-var _stringify2 = _interopRequireDefault(_stringify);
-
-exports.default = logError;
-
-var _ajax = require('./ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _rateLimit = require('./rate-limit');
-
-var _rateLimit2 = _interopRequireDefault(_rateLimit);
-
-var _getStackTrace = require('./get-stack-trace');
-
-var _getStackTrace2 = _interopRequireDefault(_getStackTrace);
-
-var _getExtensionId = require('./get-extension-id');
-
-var _getExtensionId2 = _interopRequireDefault(_getExtensionId);
-
-var _getSessionId = require('./get-session-id');
-
-var _getSessionId2 = _interopRequireDefault(_getSessionId);
-
-var _version = require('./version');
-
-var _isObject = require('lodash/lang/isObject');
-
-var _isObject2 = _interopRequireDefault(_isObject);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var sessionId = (0, _getSessionId2.default)();
-
-// code inside the platform-implementation should use logger.js instead of
-// interacting with this directly!
-
-//jshint ignore:start
-
-function logError(err, details, context) {
-  if (!global.document) {
-    // In tests, just throw the error.
-    throw err;
-  }
-
-  var args = arguments;
-
-  // It's important that we can't throw an error or leave a rejected promise
-  // unheard while logging an error in order to make sure to avoid ever
-  // getting into an infinite loop of reporting uncaught errors.
-  try {
-    if (haveWeSeenThisErrorAlready(err)) {
-      return;
-    } else {
-      markErrorAsSeen(err);
-    }
-
-    if (!(err instanceof Error)) {
-      console.warn('First parameter to Logger.error was not an error object:', err);
-      err = new Error("Logger.error called with non-error: " + err);
-      markErrorAsSeen(err);
-    }
-    var appId = context.appId;
-    var appIds = context.appIds;
-    var implVersion = context.implVersion;
-    var userEmailHash = context.userEmailHash;
-
-    var _loaderVersion = context.loaderVersion || _version.BUILD_VERSION;
-    var _sentByApp = !!context.sentByApp;
-
-    // Might not have been passed a useful error object with a stack, so get
-    // our own current stack just in case.
-    var nowStack = (0, _getStackTrace2.default)();
-
-    var stuffToLog = ["Error logged:", err];
-    if (err && err.stack) {
-      stuffToLog = stuffToLog.concat(["\n\nOriginal error stack:\n" + err.stack]);
-    }
-    stuffToLog = stuffToLog.concat(["\n\nError logged from:\n" + nowStack]);
-    if (details) {
-      stuffToLog = stuffToLog.concat(["\n\nError details:", details]);
-    }
-    stuffToLog = stuffToLog.concat(["\n\nExtension App Ids:", (0, _stringify2.default)(appIds, null, 2)]);
-    stuffToLog = stuffToLog.concat(["\nSent by App:", _sentByApp]);
-    stuffToLog = stuffToLog.concat(["\nSession Id:", sessionId]);
-    stuffToLog = stuffToLog.concat(["\nExtension Id:", (0, _getExtensionId2.default)()]);
-    stuffToLog = stuffToLog.concat(["\nInboxSDK Loader Version:", _loaderVersion]);
-    stuffToLog = stuffToLog.concat(["\nInboxSDK Implementation Version:", implVersion]);
-
-    console.error.apply(console, stuffToLog);
-
-    var report = {
-      message: err && err.message || err,
-      stack: err && err.stack,
-      loggedFrom: nowStack,
-      details: details,
-      appIds: appIds,
-      sentByApp: _sentByApp,
-      sessionId: sessionId,
-      emailHash: userEmailHash,
-      extensionId: (0, _getExtensionId2.default)(),
-      loaderVersion: _loaderVersion,
-      implementationVersion: implVersion,
-      origin: document.location.origin,
-      timestamp: Date.now() * 1000
-    };
-
-    sendError(report);
-  } catch (err2) {
-    tooManyErrors(err2, args);
-  }
-}
-
-var _extensionSeenErrors = function () {
-  // Safari <9 doesn't have WeakSet and we don't want to pull in the polyfill,
-  // so we make one out of a WeakMap.
-  if (!global.__inboxsdk_extensionSeenErrors && global.WeakMap) {
-    Object.defineProperty(global, '__inboxsdk_extensionSeenErrors', {
-      value: new global.WeakMap()
-    });
-  }
-  return {
-    has: function has(e) {
-      if (global.__inboxsdk_extensionSeenErrors) {
-        return global.__inboxsdk_extensionSeenErrors.has(e);
-      } else {
-        try {
-          return !!e.__inboxsdk_extensionHasSeenError;
-        } catch (err) {
-          console.error(err);
-          return false;
-        }
-      }
-    },
-    add: function add(e) {
-      if (global.__inboxsdk_extensionSeenErrors && global.__inboxsdk_extensionSeenErrors.set) {
-        // It's a WeakMap.
-        global.__inboxsdk_extensionSeenErrors.set(e, true);
-      } else if (global.__inboxsdk_extensionSeenErrors && global.__inboxsdk_extensionSeenErrors.add) {
-        // Older versions of inboxsdk.js initialized it as a WeakSet instead,
-        // so handle that too.
-        global.__inboxsdk_extensionSeenErrors.add(e);
-      } else {
-        try {
-          Object.defineProperty(e, '__inboxsdk_extensionHasSeenError', {
-            value: true
-          });
-        } catch (err) {
-          console.error(err);
-        }
-      }
-    }
-  };
-}();
-
-function haveWeSeenThisErrorAlready(error) {
-  if ((0, _isObject2.default)(error)) {
-    return _extensionSeenErrors.has(error);
-  }
-  return false;
-}
-
-function markErrorAsSeen(error) {
-  if ((0, _isObject2.default)(error)) {
-    _extensionSeenErrors.add(error);
-  }
-}
-
-// Only let 10 errors be sent per minute.
-var sendError = (0, _rateLimit2.default)(function (report) {
-  var args = arguments;
-
-  try {
-    (0, _ajax2.default)({
-      url: 'https://www.inboxsdk.com/api/v2/errors',
-      method: 'POST',
-      headers: {
-        'Content-Type': 'application/json'
-      },
-      data: (0, _stringify2.default)(report)
-    }).catch(function (err2) {
-      tooManyErrors(err2, args);
-    });
-  } catch (err2) {
-    tooManyErrors(err2, args);
-  }
-}, 60 * 1000, 10);
-
-function tooManyErrors(err2, originalArgs) {
-  console.error("ERROR REPORTING ERROR", err2);
-  console.error("ORIGINAL ERROR", originalArgs);
-}
-module.exports = exports['default'];
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{"./ajax":73,"./get-extension-id":77,"./get-session-id":78,"./get-stack-trace":79,"./rate-limit":82,"./version":83,"babel-runtime/core-js/json/stringify":1,"lodash/lang/isObject":64}],82:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = rateLimit;
-
-//jshint ignore:start
-
-// Returns a wrapped version of the function which throws an exception if it's
-// called more than count times within period amount of time.
-function rateLimit(fn, period, count) {
-  var calls = [];
-  return function () {
-    var now = Date.now();
-    calls = calls.filter(function (time) {
-      return time > now - period;
-    });
-    if (calls.length >= count) {
-      throw new Error("Function rate limit exceeded");
-    }
-    calls.push(now);
-    return fn.apply(this, arguments);
-  };
-}
-module.exports = exports["default"];
-
-},{}],83:[function(require,module,exports){
-"use strict";
-
-//jshint ignore:start
-
-// This is in its own file so that updates to the version value don't cause a
-// reload of everything.
-
-exports.BUILD_VERSION = "0.7.21-1466467956470-7c17f4be535fde9c";
-
-if (module.hot) {
-  module.hot.accept();
-}
-
-},{}],84:[function(require,module,exports){
-(function (global){
-"use strict";
-
-function checkRequirements(opts) {
-  if (!opts.TEMPORARY_INTERNAL_skipWeakMapRequirement && !global.WeakMap) {
-    throw new Error("Browser does not support WeakMap");
-  }
-}
-
-module.exports = checkRequirements;
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{}],85:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _assign = require('babel-runtime/core-js/object/assign');
-
-var _assign2 = _interopRequireDefault(_assign);
-
-var _logError = require('../common/log-error');
-
-var _logError2 = _interopRequireDefault(_logError);
-
-var _platformImplementationLoader = require('./loading/platform-implementation-loader');
-
-var _platformImplementationLoader2 = _interopRequireDefault(_platformImplementationLoader);
-
-var _checkRequirements = require('./check-requirements');
-
-var _checkRequirements2 = _interopRequireDefault(_checkRequirements);
-
-var _version = require('../common/version');
-
-var _loadScript = require('../common/load-script');
-
-var _loadScript2 = _interopRequireDefault(_loadScript);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var InboxSDK = {
-  LOADER_VERSION: _version.BUILD_VERSION,
-  loadScript: _loadScript2.default,
-  load: function load(version, appId, opts) {
-    opts = (0, _assign2.default)({
-      // defaults
-      globalErrorLogging: true
-    }, opts, {
-      // stuff that can't be overridden, such as extra stuff this file passes to
-      // the implementation script.
-      VERSION: InboxSDK.LOADER_VERSION,
-      REQUESTED_API_VERSION: version
-    });
-
-    (0, _checkRequirements2.default)(opts);
-
-    return _platformImplementationLoader2.default.load(appId, opts);
-  }
-};
-
-if (['https://mail.google.com', 'https://inbox.google.com'].indexOf(document.location.origin) != -1) {
-  _platformImplementationLoader2.default.preload();
-}
-
-exports.default = InboxSDK;
-module.exports = exports['default'];
-
-},{"../common/load-script":80,"../common/log-error":81,"../common/version":83,"./check-requirements":84,"./loading/platform-implementation-loader":86,"babel-runtime/core-js/object/assign":2}],86:[function(require,module,exports){
-(function (global){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _promise = require('babel-runtime/core-js/promise');
-
-var _promise2 = _interopRequireDefault(_promise);
-
-var _loadScript = require('../../common/load-script');
-
-var _loadScript2 = _interopRequireDefault(_loadScript);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-//jshint ignore:start
-
-var once = require('lodash/function/once');
-
-
-var PlatformImplementationLoader = {
-  load: function load(appId, opts) {
-    return _promise2.default.resolve().then(function () {
-      if (!global.__InboxSDKImpLoader) {
-        return PlatformImplementationLoader._loadScript().then(function () {
-          if (!global.__InboxSDKImpLoader) {
-            throw new Error("Implementation file did not load correctly");
-          }
-        });
-      }
-    }).then(function () {
-      return global.__InboxSDKImpLoader.load("0.1", appId, opts);
-    });
-  },
-
-
-  _loadScript: once(function () {
-    var disableSourceMappingURL = true;
-    if (window.localStorage) {
-      try {
-        disableSourceMappingURL = localStorage.getItem('inboxsdk__enable_sourcemap') !== 'true';
-      } catch (err) {
-        console.error(err);
-      }
-    }
-
-    return (0, _loadScript2.default)("https://www.inboxsdk.com/build/platform-implementation.js", {
-      nowrap: true, // platform-implementation has no top-level vars so no need for function wrapping
-      disableSourceMappingURL: disableSourceMappingURL
-    });
-  }),
-
-  preload: function preload() {
-    // Prime the load by calling it and letting the promise be memoized.
-    this._loadScript();
-  }
-};
-
-exports.default = PlatformImplementationLoader;
-module.exports = exports['default'];
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{"../../common/load-script":80,"babel-runtime/core-js/promise":72,"lodash/function/once":43}],87:[function(require,module,exports){
-"use strict";
-
-var oldDefine;
-try {
-  if (typeof define !== "undefined" && define && define.amd) {
-    // work around amd compatibility issue
-    // https://groups.google.com/forum/#!msg/inboxsdk/U_bq82Exmwc/I3iIinxxCAAJ
-    oldDefine = define;
-    define = null;
-  }
-  // exposes main as a global for browsers
-  window.InboxSDK = require('./inboxsdk');
-} finally {
-  if (oldDefine) {
-    define = oldDefine;
-  }
-}
-
-},{"./inboxsdk":85}]},{},[87])
-