Welcome to mirror list, hosted at ThFree Co, Russian Federation.

files_fileinfo.js.map « dist « js « core - github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a53454ef110cae631f4a673334f0c5ad6270c313 (plain)
1
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./core/src/files/fileinfo.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/underscore/modules/index.js","webpack:///./node_modules/underscore/modules/index-default.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","OC","FileInfo","data","self","this","_","each","isFunction","isUndefined","id","parseInt","path","type","mimetype","icon","permissions","mtime","etag","mountType","hasPreview","sharePermissions","Files","g","Function","e","window","root","global","ArrayProto","Array","ObjProto","SymbolProto","push","slice","toString","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","_isNaN","isNaN","_isFinite","isFinite","Ctor","obj","_wrapped","VERSION","optimizeCb","func","context","argCount","index","collection","accumulator","apply","arguments","baseIteratee","identity","isObject","matcher","iteratee","Infinity","cb","restArguments","startIndex","length","Math","max","rest","args","baseCreate","result","shallowProperty","_has","deepGet","MAX_ARRAY_INDEX","pow","getLength","isArrayLike","_keys","map","results","currentKey","createReduce","dir","reducer","memo","initial","reduce","reduceRight","find","predicate","findIndex","findKey","filter","list","reject","negate","every","some","contains","item","fromIndex","guard","values","indexOf","invoke","contextPath","method","pluck","where","attrs","findWhere","computed","lastComputed","v","min","shuffle","sample","random","clone","last","rand","temp","sortBy","criteria","sort","left","right","a","b","group","behavior","partition","groupBy","indexBy","countBy","reStrSymbol","toArray","isString","match","size","pass","first","array","compact","Boolean","_flatten","input","shallow","strict","output","idx","isArguments","j","len","flatten","without","otherArrays","difference","uniq","isSorted","isBoolean","seen","union","arrays","intersection","argsLength","unzip","zip","createPredicateIndexFinder","findLastIndex","sortedIndex","low","high","mid","floor","createIndexFinder","predicateFind","lastIndexOf","range","start","stop","step","ceil","chunk","count","executeBound","sourceFunc","boundFunc","callingContext","TypeError","bound","callArgs","concat","partial","boundArgs","placeholder","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","throttled","_now","remaining","clearTimeout","trailing","cancel","debounce","immediate","debounced","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","collectNonEnumProps","nonEnumIdx","constructor","proto","prop","allKeys","mapObject","pairs","invert","functions","names","createAssigner","keysFunc","defaults","source","extend","extendOwn","keyInObj","pick","omit","String","props","tap","interceptor","isMatch","eq","aStack","bStack","className","valueOf","areArrays","aCtor","bCtor","pop","deepEq","isEqual","isEmpty","isElement","nodeType","tagTester","isNumber","isDate","isRegExp","isError","isSymbol","isMap","isWeakMap","isSet","isWeakSet","nodelist","document","childNodes","parseFloat","isNull","has","constant","noop","propertyOf","accum","Int8Array","Date","getTime","escapeMap","unescapeMap","createEscaper","escaper","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","template","text","settings","oldSettings","render","offset","variable","argument","chain","instance","_chain","chainResult","mixin","toJSON"],"mappings":"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","file":"files_fileinfo.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1073);\n","/* eslint-disable */\n/*\n * Copyright (c) 2015\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC) {\n\n\t/**\n\t * @class OC.Files.FileInfo\n\t * @classdesc File information\n\t *\n\t * @param {Object} data file data, see attributes for details\n\t *\n\t * @since 8.2\n\t */\n\tconst FileInfo = function(data) {\n\t\tconst self = this\n\t\t_.each(data, function(value, key) {\n\t\t\tif (!_.isFunction(value)) {\n\t\t\t\tself[key] = value\n\t\t\t}\n\t\t})\n\n\t\tif (!_.isUndefined(this.id)) {\n\t\t\tthis.id = parseInt(data.id, 10)\n\t\t}\n\n\t\t// TODO: normalize path\n\t\tthis.path = data.path || ''\n\n\t\tif (this.type === 'dir') {\n\t\t\tthis.mimetype = 'httpd/unix-directory'\n\t\t} else {\n\t\t\tthis.mimetype = this.mimetype || 'application/octet-stream'\n\t\t}\n\n\t\tif (!this.type) {\n\t\t\tif (this.mimetype === 'httpd/unix-directory') {\n\t\t\t\tthis.type = 'dir'\n\t\t\t} else {\n\t\t\t\tthis.type = 'file'\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @memberof OC.Files\n\t */\n\tFileInfo.prototype = {\n\t\t/**\n\t\t * File id\n\t\t *\n\t\t * @type int\n\t\t */\n\t\tid: null,\n\n\t\t/**\n\t\t * File name\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tname: null,\n\n\t\t/**\n\t\t * Path leading to the file, without the file name,\n\t\t * and with a leading slash.\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tpath: null,\n\n\t\t/**\n\t\t * Mime type\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tmimetype: null,\n\n\t\t/**\n\t\t * Icon URL.\n\t\t *\n\t\t * Can be used to override the mime type icon.\n\t\t *\n\t\t * @type String\n\t\t */\n\t\ticon: null,\n\n\t\t/**\n\t\t * File type. 'file'  for files, 'dir' for directories.\n\t\t *\n\t\t * @type String\n\t\t * @deprecated rely on mimetype instead\n\t\t */\n\t\ttype: null,\n\n\t\t/**\n\t\t * Permissions.\n\t\t *\n\t\t * @see OC#PERMISSION_ALL for permissions\n\t\t * @type int\n\t\t */\n\t\tpermissions: null,\n\n\t\t/**\n\t\t * Modification time\n\t\t *\n\t\t * @type int\n\t\t */\n\t\tmtime: null,\n\n\t\t/**\n\t\t * Etag\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tetag: null,\n\n\t\t/**\n\t\t * Mount type.\n\t\t *\n\t\t * One of null, \"external-root\", \"shared\" or \"shared-root\"\n\t\t *\n\t\t * @type string\n\t\t */\n\t\tmountType: null,\n\n\t\t/**\n\t\t * @type boolean\n\t\t */\n\t\thasPreview: true,\n\n\t\t/**\n\t\t * @type int\n\t\t */\n\t\tsharePermissions: null,\n\t}\n\n\tif (!OC.Files) {\n\t\tOC.Files = {}\n\t}\n\tOC.Files.FileInfo = FileInfo\n})(OC)\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","//     Underscore.js 1.10.2\n//     https://underscorejs.org\n//     (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\n\n// Baseline setup\n// --------------\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n          typeof global == 'object' && global.global === global && global ||\n          Function('return this')() ||\n          {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n    slice = ArrayProto.slice,\n    toString = ObjProto.toString,\n    hasOwnProperty = ObjProto.hasOwnProperty;\n\n// All **ECMAScript 5** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n    nativeKeys = Object.keys,\n    nativeCreate = Object.create;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = root.isNaN,\n    _isFinite = root.isFinite;\n\n// Naked function reference for surrogate-prototype-swapping.\nvar Ctor = function(){};\n\n// The Underscore object. All exported functions below are added to it in the\n// modules/index-all.js using the mixin function.\nexport default function _(obj) {\n  if (obj instanceof _) return obj;\n  if (!(this instanceof _)) return new _(obj);\n  this._wrapped = obj;\n}\n\n// Current version.\nexport var VERSION = _.VERSION = '1.10.2';\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n  if (context === void 0) return func;\n  switch (argCount == null ? 3 : argCount) {\n    case 1: return function(value) {\n      return func.call(context, value);\n    };\n    // The 2-argument case is omitted because we’re not using it.\n    case 3: return function(value, index, collection) {\n      return func.call(context, value, index, collection);\n    };\n    case 4: return function(accumulator, value, index, collection) {\n      return func.call(context, accumulator, value, index, collection);\n    };\n  }\n  return function() {\n    return func.apply(context, arguments);\n  };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n  if (value == null) return identity;\n  if (isFunction(value)) return optimizeCb(value, context, argCount);\n  if (isObject(value) && !isArray(value)) return matcher(value);\n  return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only argCount argument.\n_.iteratee = iteratee;\nexport function iteratee(value, context) {\n  return baseIteratee(value, context, Infinity);\n}\n\n// The function we actually call internally. It invokes _.iteratee if\n// overridden, otherwise baseIteratee.\nfunction cb(value, context, argCount) {\n  if (_.iteratee !== iteratee) return _.iteratee(value, context);\n  return baseIteratee(value, context, argCount);\n}\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport function restArguments(func, startIndex) {\n  startIndex = startIndex == null ? func.length - 1 : +startIndex;\n  return function() {\n    var length = Math.max(arguments.length - startIndex, 0),\n        rest = Array(length),\n        index = 0;\n    for (; index < length; index++) {\n      rest[index] = arguments[index + startIndex];\n    }\n    switch (startIndex) {\n      case 0: return func.call(this, rest);\n      case 1: return func.call(this, arguments[0], rest);\n      case 2: return func.call(this, arguments[0], arguments[1], rest);\n    }\n    var args = Array(startIndex + 1);\n    for (index = 0; index < startIndex; index++) {\n      args[index] = arguments[index];\n    }\n    args[startIndex] = rest;\n    return func.apply(this, args);\n  };\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n  if (!isObject(prototype)) return {};\n  if (nativeCreate) return nativeCreate(prototype);\n  Ctor.prototype = prototype;\n  var result = new Ctor;\n  Ctor.prototype = null;\n  return result;\n}\n\nfunction shallowProperty(key) {\n  return function(obj) {\n    return obj == null ? void 0 : obj[key];\n  };\n}\n\nfunction _has(obj, path) {\n  return obj != null && hasOwnProperty.call(obj, path);\n}\n\nfunction deepGet(obj, path) {\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    if (obj == null) return void 0;\n    obj = obj[path[i]];\n  }\n  return length ? obj : void 0;\n}\n\n// Helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\nvar getLength = shallowProperty('length');\nfunction isArrayLike(collection) {\n  var length = getLength(collection);\n  return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n}\n\n// Collection Functions\n// --------------------\n\n// The cornerstone, an `each` implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport function each(obj, iteratee, context) {\n  iteratee = optimizeCb(iteratee, context);\n  var i, length;\n  if (isArrayLike(obj)) {\n    for (i = 0, length = obj.length; i < length; i++) {\n      iteratee(obj[i], i, obj);\n    }\n  } else {\n    var _keys = keys(obj);\n    for (i = 0, length = _keys.length; i < length; i++) {\n      iteratee(obj[_keys[i]], _keys[i], obj);\n    }\n  }\n  return obj;\n}\nexport { each as forEach };\n\n// Return the results of applying the iteratee to each element.\nexport function map(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length,\n      results = Array(length);\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    results[index] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\nexport { map as collect };\n\n// Create a reducing function iterating left or right.\nfunction createReduce(dir) {\n  // Wrap code that reassigns argument variables in a separate function than\n  // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n  var reducer = function(obj, iteratee, memo, initial) {\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length,\n        index = dir > 0 ? 0 : length - 1;\n    if (!initial) {\n      memo = obj[_keys ? _keys[index] : index];\n      index += dir;\n    }\n    for (; index >= 0 && index < length; index += dir) {\n      var currentKey = _keys ? _keys[index] : index;\n      memo = iteratee(memo, obj[currentKey], currentKey, obj);\n    }\n    return memo;\n  };\n\n  return function(obj, iteratee, memo, context) {\n    var initial = arguments.length >= 3;\n    return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n  };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport var reduce = createReduce(1);\nexport { reduce as foldl, reduce as inject };\n\n// The right-associative version of reduce, also known as `foldr`.\nexport var reduceRight = createReduce(-1);\nexport { reduceRight as foldr };\n\n// Return the first value which passes a truth test.\nexport function find(obj, predicate, context) {\n  var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n  var key = keyFinder(obj, predicate, context);\n  if (key !== void 0 && key !== -1) return obj[key];\n}\nexport { find as detect };\n\n// Return all the elements that pass a truth test.\nexport function filter(obj, predicate, context) {\n  var results = [];\n  predicate = cb(predicate, context);\n  each(obj, function(value, index, list) {\n    if (predicate(value, index, list)) results.push(value);\n  });\n  return results;\n}\nexport { filter as select };\n\n// Return all the elements for which a truth test fails.\nexport function reject(obj, predicate, context) {\n  return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements match a truth test.\nexport function every(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (!predicate(obj[currentKey], currentKey, obj)) return false;\n  }\n  return true;\n}\nexport { every as all };\n\n// Determine if at least one element in the object matches a truth test.\nexport function some(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (predicate(obj[currentKey], currentKey, obj)) return true;\n  }\n  return false;\n}\nexport { some as any };\n\n// Determine if the array or object contains a given item (using `===`).\nexport function contains(obj, item, fromIndex, guard) {\n  if (!isArrayLike(obj)) obj = values(obj);\n  if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n  return indexOf(obj, item, fromIndex) >= 0;\n}\nexport { contains as includes, contains as include };\n\n// Invoke a method (with arguments) on every item in a collection.\nexport var invoke = restArguments(function(obj, path, args) {\n  var contextPath, func;\n  if (isFunction(path)) {\n    func = path;\n  } else if (isArray(path)) {\n    contextPath = path.slice(0, -1);\n    path = path[path.length - 1];\n  }\n  return map(obj, function(context) {\n    var method = func;\n    if (!method) {\n      if (contextPath && contextPath.length) {\n        context = deepGet(context, contextPath);\n      }\n      if (context == null) return void 0;\n      method = context[path];\n    }\n    return method == null ? method : method.apply(context, args);\n  });\n});\n\n// Convenience version of a common use case of `map`: fetching a property.\nexport function pluck(obj, key) {\n  return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `filter`: selecting only objects\n// containing specific `key:value` pairs.\nexport function where(obj, attrs) {\n  return filter(obj, matcher(attrs));\n}\n\n// Convenience version of a common use case of `find`: getting the first object\n// containing specific `key:value` pairs.\nexport function findWhere(obj, attrs) {\n  return find(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nexport function max(obj, iteratee, context) {\n  var result = -Infinity, lastComputed = -Infinity,\n      value, computed;\n  if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value > result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n\n// Return the minimum element (or element-based computation).\nexport function min(obj, iteratee, context) {\n  var result = Infinity, lastComputed = Infinity,\n      value, computed;\n  if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value < result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed < lastComputed || computed === Infinity && result === Infinity) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n\n// Shuffle a collection.\nexport function shuffle(obj) {\n  return sample(obj, Infinity);\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `map`.\nexport function sample(obj, n, guard) {\n  if (n == null || guard) {\n    if (!isArrayLike(obj)) obj = values(obj);\n    return obj[random(obj.length - 1)];\n  }\n  var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n  var length = getLength(sample);\n  n = Math.max(Math.min(n, length), 0);\n  var last = length - 1;\n  for (var index = 0; index < n; index++) {\n    var rand = random(index, last);\n    var temp = sample[index];\n    sample[index] = sample[rand];\n    sample[rand] = temp;\n  }\n  return sample.slice(0, n);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport function sortBy(obj, iteratee, context) {\n  var index = 0;\n  iteratee = cb(iteratee, context);\n  return pluck(map(obj, function(value, key, list) {\n    return {\n      value: value,\n      index: index++,\n      criteria: iteratee(value, key, list)\n    };\n  }).sort(function(left, right) {\n    var a = left.criteria;\n    var b = right.criteria;\n    if (a !== b) {\n      if (a > b || a === void 0) return 1;\n      if (a < b || b === void 0) return -1;\n    }\n    return left.index - right.index;\n  }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n  return function(obj, iteratee, context) {\n    var result = partition ? [[], []] : {};\n    iteratee = cb(iteratee, context);\n    each(obj, function(value, index) {\n      var key = iteratee(value, index, obj);\n      behavior(result, value, key);\n    });\n    return result;\n  };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport var groupBy = group(function(result, value, key) {\n  if (_has(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `groupBy`, but for\n// when you know that your index values will be unique.\nexport var indexBy = group(function(result, value, key) {\n  result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport var countBy = group(function(result, value, key) {\n  if (_has(result, key)) result[key]++; else result[key] = 1;\n});\n\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n// Safely create a real, live array from anything iterable.\nexport function toArray(obj) {\n  if (!obj) return [];\n  if (isArray(obj)) return slice.call(obj);\n  if (isString(obj)) {\n    // Keep surrogate pair characters together\n    return obj.match(reStrSymbol);\n  }\n  if (isArrayLike(obj)) return map(obj, identity);\n  return values(obj);\n}\n\n// Return the number of elements in an object.\nexport function size(obj) {\n  if (obj == null) return 0;\n  return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Split a collection into two arrays: one whose elements all satisfy the given\n// predicate, and one whose elements all do not satisfy the predicate.\nexport var partition = group(function(result, value, pass) {\n  result[pass ? 0 : 1].push(value);\n}, true);\n\n// Array Functions\n// ---------------\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `map`.\nexport function first(array, n, guard) {\n  if (array == null || array.length < 1) return n == null ? void 0 : [];\n  if (n == null || guard) return array[0];\n  return initial(array, array.length - n);\n}\nexport { first as head, first as take };\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport function initial(array, n, guard) {\n  return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport function last(array, n, guard) {\n  if (array == null || array.length < 1) return n == null ? void 0 : [];\n  if (n == null || guard) return array[array.length - 1];\n  return rest(array, Math.max(0, array.length - n));\n}\n\n// Returns everything but the first entry of the array. Especially useful on\n// the arguments object. Passing an **n** will return the rest N values in the\n// array.\nexport function rest(array, n, guard) {\n  return slice.call(array, n == null || guard ? 1 : n);\n}\nexport { rest as tail, rest as drop };\n\n// Trim out all falsy values from an array.\nexport function compact(array) {\n  return filter(array, Boolean);\n}\n\n// Internal implementation of a recursive `flatten` function.\nfunction _flatten(input, shallow, strict, output) {\n  output = output || [];\n  var idx = output.length;\n  for (var i = 0, length = getLength(input); i < length; i++) {\n    var value = input[i];\n    if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n      // Flatten current level of array or arguments object.\n      if (shallow) {\n        var j = 0, len = value.length;\n        while (j < len) output[idx++] = value[j++];\n      } else {\n        _flatten(value, shallow, strict, output);\n        idx = output.length;\n      }\n    } else if (!strict) {\n      output[idx++] = value;\n    }\n  }\n  return output;\n}\n\n// Flatten out an array, either recursively (by default), or just one level.\nexport function flatten(array, shallow) {\n  return _flatten(array, shallow, false);\n}\n\n// Return a version of the array that does not contain the specified value(s).\nexport var without = restArguments(function(array, otherArrays) {\n  return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport function uniq(array, isSorted, iteratee, context) {\n  if (!isBoolean(isSorted)) {\n    context = iteratee;\n    iteratee = isSorted;\n    isSorted = false;\n  }\n  if (iteratee != null) iteratee = cb(iteratee, context);\n  var result = [];\n  var seen = [];\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var value = array[i],\n        computed = iteratee ? iteratee(value, i, array) : value;\n    if (isSorted && !iteratee) {\n      if (!i || seen !== computed) result.push(value);\n      seen = computed;\n    } else if (iteratee) {\n      if (!contains(seen, computed)) {\n        seen.push(computed);\n        result.push(value);\n      }\n    } else if (!contains(result, value)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\nexport { uniq as unique };\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport var union = restArguments(function(arrays) {\n  return uniq(_flatten(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport function intersection(array) {\n  var result = [];\n  var argsLength = arguments.length;\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var item = array[i];\n    if (contains(result, item)) continue;\n    var j;\n    for (j = 1; j < argsLength; j++) {\n      if (!contains(arguments[j], item)) break;\n    }\n    if (j === argsLength) result.push(item);\n  }\n  return result;\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport var difference = restArguments(function(array, rest) {\n  rest = _flatten(rest, true, true);\n  return filter(array, function(value){\n    return !contains(rest, value);\n  });\n});\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport function unzip(array) {\n  var length = array && max(array, getLength).length || 0;\n  var result = Array(length);\n\n  for (var index = 0; index < length; index++) {\n    result[index] = pluck(array, index);\n  }\n  return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport var zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of pairs.\nexport function object(list, values) {\n  var result = {};\n  for (var i = 0, length = getLength(list); i < length; i++) {\n    if (values) {\n      result[list[i]] = values[i];\n    } else {\n      result[list[i][0]] = list[i][1];\n    }\n  }\n  return result;\n}\n\n// Generator function to create the findIndex and findLastIndex functions.\nfunction createPredicateIndexFinder(dir) {\n  return function(array, predicate, context) {\n    predicate = cb(predicate, context);\n    var length = getLength(array);\n    var index = dir > 0 ? 0 : length - 1;\n    for (; index >= 0 && index < length; index += dir) {\n      if (predicate(array[index], index, array)) return index;\n    }\n    return -1;\n  };\n}\n\n// Returns the first index on an array-like that passes a predicate test.\nexport var findIndex = createPredicateIndexFinder(1);\nexport var findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport function sortedIndex(array, obj, iteratee, context) {\n  iteratee = cb(iteratee, context, 1);\n  var value = iteratee(obj);\n  var low = 0, high = getLength(array);\n  while (low < high) {\n    var mid = Math.floor((low + high) / 2);\n    if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n  }\n  return low;\n}\n\n// Generator function to create the indexOf and lastIndexOf functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n  return function(array, item, idx) {\n    var i = 0, length = getLength(array);\n    if (typeof idx == 'number') {\n      if (dir > 0) {\n        i = idx >= 0 ? idx : Math.max(idx + length, i);\n      } else {\n        length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n      }\n    } else if (sortedIndex && idx && length) {\n      idx = sortedIndex(array, item);\n      return array[idx] === item ? idx : -1;\n    }\n    if (item !== item) {\n      idx = predicateFind(slice.call(array, i, length), isNaN);\n      return idx >= 0 ? idx + i : -1;\n    }\n    for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n      if (array[idx] === item) return idx;\n    }\n    return -1;\n  };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport var indexOf = createIndexFinder(1, findIndex, sortedIndex);\nexport var lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport function range(start, stop, step) {\n  if (stop == null) {\n    stop = start || 0;\n    start = 0;\n  }\n  if (!step) {\n    step = stop < start ? -1 : 1;\n  }\n\n  var length = Math.max(Math.ceil((stop - start) / step), 0);\n  var range = Array(length);\n\n  for (var idx = 0; idx < length; idx++, start += step) {\n    range[idx] = start;\n  }\n\n  return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport function chunk(array, count) {\n  if (count == null || count < 1) return [];\n  var result = [];\n  var i = 0, length = array.length;\n  while (i < length) {\n    result.push(slice.call(array, i, i += count));\n  }\n  return result;\n}\n\n// Function (ahem) Functions\n// ------------------\n\n// Determines whether to execute a function as a constructor\n// or a normal function with the provided arguments.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n  if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n  var self = baseCreate(sourceFunc.prototype);\n  var result = sourceFunc.apply(self, args);\n  if (isObject(result)) return result;\n  return self;\n}\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n// available.\nexport var bind = restArguments(function(func, context, args) {\n  if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n  var bound = restArguments(function(callArgs) {\n    return executeBound(func, bound, context, this, args.concat(callArgs));\n  });\n  return bound;\n});\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. _ acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `partial.placeholder` for a custom placeholder argument.\nexport var partial = restArguments(function(func, boundArgs) {\n  var placeholder = partial.placeholder;\n  var bound = function() {\n    var position = 0, length = boundArgs.length;\n    var args = Array(length);\n    for (var i = 0; i < length; i++) {\n      args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n    }\n    while (position < arguments.length) args.push(arguments[position++]);\n    return executeBound(func, bound, this, this, args);\n  };\n  return bound;\n});\n\npartial.placeholder = _;\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport var bindAll = restArguments(function(obj, _keys) {\n  _keys = _flatten(_keys, false, false);\n  var index = _keys.length;\n  if (index < 1) throw new Error('bindAll must be passed function names');\n  while (index--) {\n    var key = _keys[index];\n    obj[key] = bind(obj[key], obj);\n  }\n});\n\n// Memoize an expensive function by storing its results.\nexport function memoize(func, hasher) {\n  var memoize = function(key) {\n    var cache = memoize.cache;\n    var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n    if (!_has(cache, address)) cache[address] = func.apply(this, arguments);\n    return cache[address];\n  };\n  memoize.cache = {};\n  return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport var delay = restArguments(function(func, wait, args) {\n  return setTimeout(function() {\n    return func.apply(null, args);\n  }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport var defer = partial(delay, _, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport function throttle(func, wait, options) {\n  var timeout, context, args, result;\n  var previous = 0;\n  if (!options) options = {};\n\n  var later = function() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function() {\n    var _now = now();\n    if (!previous && options.leading === false) previous = _now;\n    var remaining = wait - (_now - previous);\n    context = this;\n    args = arguments;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = _now;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n\n  throttled.cancel = function() {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nexport function debounce(func, wait, immediate) {\n  var timeout, result;\n\n  var later = function(context, args) {\n    timeout = null;\n    if (args) result = func.apply(context, args);\n  };\n\n  var debounced = restArguments(function(args) {\n    if (timeout) clearTimeout(timeout);\n    if (immediate) {\n      var callNow = !timeout;\n      timeout = setTimeout(later, wait);\n      if (callNow) result = func.apply(this, args);\n    } else {\n      timeout = delay(later, wait, this, args);\n    }\n\n    return result;\n  });\n\n  debounced.cancel = function() {\n    clearTimeout(timeout);\n    timeout = null;\n  };\n\n  return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport function wrap(func, wrapper) {\n  return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nexport function negate(predicate) {\n  return function() {\n    return !predicate.apply(this, arguments);\n  };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport function compose() {\n  var args = arguments;\n  var start = args.length - 1;\n  return function() {\n    var i = start;\n    var result = args[start].apply(this, arguments);\n    while (i--) result = args[i].call(this, result);\n    return result;\n  };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nexport function after(times, func) {\n  return function() {\n    if (--times < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n\n// Returns a function that will only be executed up to (but not including) the Nth call.\nexport function before(times, func) {\n  var memo;\n  return function() {\n    if (--times > 0) {\n      memo = func.apply(this, arguments);\n    }\n    if (times <= 1) func = null;\n    return memo;\n  };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport var once = partial(before, 2);\n\n// Object Functions\n// ----------------\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n  'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\nfunction collectNonEnumProps(obj, _keys) {\n  var nonEnumIdx = nonEnumerableProps.length;\n  var constructor = obj.constructor;\n  var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n  // Constructor is a special case.\n  var prop = 'constructor';\n  if (_has(obj, prop) && !contains(_keys, prop)) _keys.push(prop);\n\n  while (nonEnumIdx--) {\n    prop = nonEnumerableProps[nonEnumIdx];\n    if (prop in obj && obj[prop] !== proto[prop] && !contains(_keys, prop)) {\n      _keys.push(prop);\n    }\n  }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport function keys(obj) {\n  if (!isObject(obj)) return [];\n  if (nativeKeys) return nativeKeys(obj);\n  var _keys = [];\n  for (var key in obj) if (_has(obj, key)) _keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, _keys);\n  return _keys;\n}\n\n// Retrieve all the property names of an object.\nexport function allKeys(obj) {\n  if (!isObject(obj)) return [];\n  var _keys = [];\n  for (var key in obj) _keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, _keys);\n  return _keys;\n}\n\n// Retrieve the values of an object's properties.\nexport function values(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var values = Array(length);\n  for (var i = 0; i < length; i++) {\n    values[i] = obj[_keys[i]];\n  }\n  return values;\n}\n\n// Returns the results of applying the iteratee to each element of the object.\n// In contrast to map it returns an object.\nexport function mapObject(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = keys(obj),\n      length = _keys.length,\n      results = {};\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys[index];\n    results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of object.\nexport function pairs(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var pairs = Array(length);\n  for (var i = 0; i < length; i++) {\n    pairs[i] = [_keys[i], obj[_keys[i]]];\n  }\n  return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nexport function invert(obj) {\n  var result = {};\n  var _keys = keys(obj);\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    result[obj[_keys[i]]] = _keys[i];\n  }\n  return result;\n}\n\n// Return a sorted list of the function names available on the object.\nexport function functions(obj) {\n  var names = [];\n  for (var key in obj) {\n    if (isFunction(obj[key])) names.push(key);\n  }\n  return names.sort();\n}\nexport { functions as methods };\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n  return function(obj) {\n    var length = arguments.length;\n    if (defaults) obj = Object(obj);\n    if (length < 2 || obj == null) return obj;\n    for (var index = 1; index < length; index++) {\n      var source = arguments[index],\n          _keys = keysFunc(source),\n          l = _keys.length;\n      for (var i = 0; i < l; i++) {\n        var key = _keys[i];\n        if (!defaults || obj[key] === void 0) obj[key] = source[key];\n      }\n    }\n    return obj;\n  };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nexport var extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport var extendOwn = createAssigner(keys);\nexport { extendOwn as assign };\n\n// Returns the first key on an object that passes a predicate test.\nexport function findKey(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = keys(obj), key;\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    key = _keys[i];\n    if (predicate(obj[key], key, obj)) return key;\n  }\n}\n\n// Internal pick helper function to determine if `obj` has key `key`.\nfunction keyInObj(value, key, obj) {\n  return key in obj;\n}\n\n// Return a copy of the object only containing the whitelisted properties.\nexport var pick = restArguments(function(obj, _keys) {\n  var result = {}, iteratee = _keys[0];\n  if (obj == null) return result;\n  if (isFunction(iteratee)) {\n    if (_keys.length > 1) iteratee = optimizeCb(iteratee, _keys[1]);\n    _keys = allKeys(obj);\n  } else {\n    iteratee = keyInObj;\n    _keys = _flatten(_keys, false, false);\n    obj = Object(obj);\n  }\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    var key = _keys[i];\n    var value = obj[key];\n    if (iteratee(value, key, obj)) result[key] = value;\n  }\n  return result;\n});\n\n// Return a copy of the object without the blacklisted properties.\nexport var omit = restArguments(function(obj, _keys) {\n  var iteratee = _keys[0], context;\n  if (isFunction(iteratee)) {\n    iteratee = negate(iteratee);\n    if (_keys.length > 1) context = _keys[1];\n  } else {\n    _keys = map(_flatten(_keys, false, false), String);\n    iteratee = function(value, key) {\n      return !contains(_keys, key);\n    };\n  }\n  return pick(obj, iteratee, context);\n});\n\n// Fill in a given object with default properties.\nexport var defaults = createAssigner(allKeys, true);\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport function create(prototype, props) {\n  var result = baseCreate(prototype);\n  if (props) extendOwn(result, props);\n  return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nexport function clone(obj) {\n  if (!isObject(obj)) return obj;\n  return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes interceptor with the obj, and then returns obj.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport function tap(obj, interceptor) {\n  interceptor(obj);\n  return obj;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport function isMatch(object, attrs) {\n  var _keys = keys(attrs), length = _keys.length;\n  if (object == null) return !length;\n  var obj = Object(object);\n  for (var i = 0; i < length; i++) {\n    var key = _keys[i];\n    if (attrs[key] !== obj[key] || !(key in obj)) return false;\n  }\n  return true;\n}\n\n\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, aStack, bStack) {\n  // Identical objects are equal. `0 === -0`, but they aren't identical.\n  // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n  if (a === b) return a !== 0 || 1 / a === 1 / b;\n  // `null` or `undefined` only equal to itself (strict comparison).\n  if (a == null || b == null) return false;\n  // `NaN`s are equivalent, but non-reflexive.\n  if (a !== a) return b !== b;\n  // Exhaust primitive checks\n  var type = typeof a;\n  if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n  return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n  // Unwrap any wrapped objects.\n  if (a instanceof _) a = a._wrapped;\n  if (b instanceof _) b = b._wrapped;\n  // Compare `[[Class]]` names.\n  var className = toString.call(a);\n  if (className !== toString.call(b)) return false;\n  switch (className) {\n    // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n    case '[object RegExp]':\n    // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n    case '[object String]':\n      // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n      // equivalent to `new String(\"5\")`.\n      return '' + a === '' + b;\n    case '[object Number]':\n      // `NaN`s are equivalent, but non-reflexive.\n      // Object(NaN) is equivalent to NaN.\n      if (+a !== +a) return +b !== +b;\n      // An `egal` comparison is performed for other numeric values.\n      return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n    case '[object Date]':\n    case '[object Boolean]':\n      // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a === +b;\n    case '[object Symbol]':\n      return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n  }\n\n  var areArrays = className === '[object Array]';\n  if (!areArrays) {\n    if (typeof a != 'object' || typeof b != 'object') return false;\n\n    // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n    // from different frames are.\n    var aCtor = a.constructor, bCtor = b.constructor;\n    if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n                             isFunction(bCtor) && bCtor instanceof bCtor)\n                        && ('constructor' in a && 'constructor' in b)) {\n      return false;\n    }\n  }\n  // Assume equality for cyclic structures. The algorithm for detecting cyclic\n  // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n  // Initializing stack of traversed objects.\n  // It's done here since we only need them for objects and arrays comparison.\n  aStack = aStack || [];\n  bStack = bStack || [];\n  var length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    if (aStack[length] === a) return bStack[length] === b;\n  }\n\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n\n  // Recursively compare objects and arrays.\n  if (areArrays) {\n    // Compare array lengths to determine if a deep comparison is necessary.\n    length = a.length;\n    if (length !== b.length) return false;\n    // Deep compare the contents, ignoring non-numeric properties.\n    while (length--) {\n      if (!eq(a[length], b[length], aStack, bStack)) return false;\n    }\n  } else {\n    // Deep compare objects.\n    var _keys = keys(a), key;\n    length = _keys.length;\n    // Ensure that both objects contain the same number of properties before comparing deep equality.\n    if (keys(b).length !== length) return false;\n    while (length--) {\n      // Deep compare each member\n      key = _keys[length];\n      if (!(_has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n  return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport function isEqual(a, b) {\n  return eq(a, b);\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport function isEmpty(obj) {\n  if (obj == null) return true;\n  if (isArrayLike(obj) && (isArray(obj) || isString(obj) || isArguments(obj))) return obj.length === 0;\n  return keys(obj).length === 0;\n}\n\n// Is a given value a DOM element?\nexport function isElement(obj) {\n  return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a toString-based type tester.\nfunction tagTester(name) {\n  return function(obj) {\n    return toString.call(obj) === '[object ' + name + ']';\n  };\n}\n\n// Is a given value an array?\n// Delegates to ECMA5's native Array.isArray\nexport var isArray = nativeIsArray || tagTester('Array');\n\n// Is a given variable an object?\nexport function isObject(obj) {\n  var type = typeof obj;\n  return type === 'function' || type === 'object' && !!obj;\n}\n\n// Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\nexport var isArguments = tagTester('Arguments');\nexport var isFunction = tagTester('Function');\nexport var isString = tagTester('String');\nexport var isNumber = tagTester('Number');\nexport var isDate = tagTester('Date');\nexport var isRegExp = tagTester('RegExp');\nexport var isError = tagTester('Error');\nexport var isSymbol = tagTester('Symbol');\nexport var isMap = tagTester('Map');\nexport var isWeakMap = tagTester('WeakMap');\nexport var isSet = tagTester('Set');\nexport var isWeakSet = tagTester('WeakSet');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n  if (!isArguments(arguments)) {\n    isArguments = function(obj) {\n      return _has(obj, 'callee');\n    };\n  }\n}());\n\n// Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n// IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n  isFunction = function(obj) {\n    return typeof obj == 'function' || false;\n  };\n}\n\n// Is a given object a finite number?\nexport function isFinite(obj) {\n  return !isSymbol(obj) && _isFinite(obj) && !_isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nexport function isNaN(obj) {\n  return isNumber(obj) && _isNaN(obj);\n}\n\n// Is a given value a boolean?\nexport function isBoolean(obj) {\n  return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value equal to null?\nexport function isNull(obj) {\n  return obj === null;\n}\n\n// Is a given variable undefined?\nexport function isUndefined(obj) {\n  return obj === void 0;\n}\n\n// Shortcut function for checking if an object has a given property directly\n// on itself (in other words, not on a prototype).\nexport function has(obj, path) {\n  if (!isArray(path)) {\n    return _has(obj, path);\n  }\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    var key = path[i];\n    if (obj == null || !hasOwnProperty.call(obj, key)) {\n      return false;\n    }\n    obj = obj[key];\n  }\n  return !!length;\n}\n\n// Utility Functions\n// -----------------\n\n// Keep the identity function around for default iteratees.\nexport function identity(value) {\n  return value;\n}\n\n// Predicate-generating functions. Often useful outside of Underscore.\nexport function constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport function noop(){}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indexes.\nexport function property(path) {\n  if (!isArray(path)) {\n    return shallowProperty(path);\n  }\n  return function(obj) {\n    return deepGet(obj, path);\n  };\n}\n\n// Generates a function for a given object that returns a given property.\nexport function propertyOf(obj) {\n  if (obj == null) {\n    return function(){};\n  }\n  return function(path) {\n    return !isArray(path) ? obj[path] : deepGet(obj, path);\n  };\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport function matcher(attrs) {\n  attrs = extendOwn({}, attrs);\n  return function(obj) {\n    return isMatch(obj, attrs);\n  };\n}\nexport { matcher as matches };\n\n// Run a function **n** times.\nexport function times(n, iteratee, context) {\n  var accum = Array(Math.max(0, n));\n  iteratee = optimizeCb(iteratee, context, 1);\n  for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n  return accum;\n}\n\n// Return a random integer between min and max (inclusive).\nexport function random(min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n  return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nexport var now = Date.now || function() {\n  return new Date().getTime();\n};\n\n// List of HTML entities for escaping.\nvar escapeMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;'\n};\nvar unescapeMap = invert(escapeMap);\n\n// Functions for escaping and unescaping strings to/from HTML interpolation.\nfunction createEscaper(map) {\n  var escaper = function(match) {\n    return map[match];\n  };\n  // Regexes for identifying a key that needs to be escaped.\n  var source = '(?:' + keys(map).join('|') + ')';\n  var testRegexp = RegExp(source);\n  var replaceRegexp = RegExp(source, 'g');\n  return function(string) {\n    string = string == null ? '' : '' + string;\n    return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n  };\n}\nexport var escape = createEscaper(escapeMap);\nexport var unescape = createEscaper(unescapeMap);\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport function result(obj, path, fallback) {\n  if (!isArray(path)) path = [path];\n  var length = path.length;\n  if (!length) {\n    return isFunction(fallback) ? fallback.call(obj) : fallback;\n  }\n  for (var i = 0; i < length; i++) {\n    var prop = obj == null ? void 0 : obj[path[i]];\n    if (prop === void 0) {\n      prop = fallback;\n      i = length; // Ensure we don't continue iterating.\n    }\n    obj = isFunction(prop) ? prop.call(obj) : prop;\n  }\n  return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport function uniqueId(prefix) {\n  var id = ++idCounter + '';\n  return prefix ? prefix + id : id;\n}\n\n// By default, Underscore uses ERB-style template delimiters, change the\n// following template settings to use alternative delimiters.\nexport var templateSettings = _.templateSettings = {\n  evaluate: /<%([\\s\\S]+?)%>/g,\n  interpolate: /<%=([\\s\\S]+?)%>/g,\n  escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n  \"'\": \"'\",\n  '\\\\': '\\\\',\n  '\\r': 'r',\n  '\\n': 'n',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nvar escapeChar = function(match) {\n  return '\\\\' + escapes[match];\n};\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport function template(text, settings, oldSettings) {\n  if (!settings && oldSettings) settings = oldSettings;\n  settings = defaults({}, settings, _.templateSettings);\n\n  // Combine delimiters into one regular expression via alternation.\n  var matcher = RegExp([\n    (settings.escape || noMatch).source,\n    (settings.interpolate || noMatch).source,\n    (settings.evaluate || noMatch).source\n  ].join('|') + '|$', 'g');\n\n  // Compile the template source, escaping string literals appropriately.\n  var index = 0;\n  var source = \"__p+='\";\n  text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n    source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n    index = offset + match.length;\n\n    if (escape) {\n      source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n    } else if (interpolate) {\n      source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n    } else if (evaluate) {\n      source += \"';\\n\" + evaluate + \"\\n__p+='\";\n    }\n\n    // Adobe VMs need the match returned to produce the correct offset.\n    return match;\n  });\n  source += \"';\\n\";\n\n  // If a variable is not specified, place data values in local scope.\n  if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n  source = \"var __t,__p='',__j=Array.prototype.join,\" +\n    \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n    source + 'return __p;\\n';\n\n  var render;\n  try {\n    render = new Function(settings.variable || 'obj', '_', source);\n  } catch (e) {\n    e.source = source;\n    throw e;\n  }\n\n  var template = function(data) {\n    return render.call(this, data, _);\n  };\n\n  // Provide the compiled source as a convenience for precompilation.\n  var argument = settings.variable || 'obj';\n  template.source = 'function(' + argument + '){\\n' + source + '}';\n\n  return template;\n}\n\n// Add a \"chain\" function. Start chaining a wrapped Underscore object.\nexport function chain(obj) {\n  var instance = _(obj);\n  instance._chain = true;\n  return instance;\n}\n\n// OOP\n// ---------------\n// If Underscore is called as a function, it returns a wrapped object that\n// can be used OO-style. This wrapper holds altered versions of all the\n// underscore functions. Wrapped objects may be chained.\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n  return instance._chain ? _(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nexport function mixin(obj) {\n  each(functions(obj), function(name) {\n    var func = _[name] = obj[name];\n    _.prototype[name] = function() {\n      var args = [this._wrapped];\n      push.apply(args, arguments);\n      return chainResult(this, func.apply(_, args));\n    };\n  });\n  return _;\n}\n\n// Add all mutator Array functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    method.apply(obj, arguments);\n    if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n    return chainResult(this, obj);\n  };\n});\n\n// Add all accessor Array functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    return chainResult(this, method.apply(this._wrapped, arguments));\n  };\n});\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n  return this._wrapped;\n};\n\n// Provide unwrapping proxy for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n  return String(this._wrapped);\n};\n","import * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API\n_._ = _;\n// Export the Underscore API.\nexport default _;\n"],"sourceRoot":""}