Skip to content
Snippets Groups Projects
index.js 8.75 MiB
Newer Older
  • Learn to ignore specific revisions
  • 200001 200002 200003 200004 200005 200006 200007 200008 200009 200010 200011 200012 200013 200014 200015 200016 200017 200018 200019 200020 200021 200022 200023 200024 200025 200026 200027 200028 200029 200030 200031 200032 200033 200034 200035 200036 200037 200038 200039 200040 200041 200042 200043 200044 200045 200046 200047 200048 200049 200050 200051 200052 200053 200054 200055 200056 200057 200058 200059 200060 200061 200062 200063 200064 200065 200066 200067 200068 200069 200070 200071 200072 200073 200074 200075 200076 200077 200078 200079 200080 200081 200082 200083 200084 200085 200086 200087 200088 200089 200090 200091 200092 200093 200094 200095 200096 200097 200098 200099 200100 200101 200102 200103 200104 200105 200106 200107 200108 200109 200110 200111 200112 200113 200114 200115 200116 200117 200118 200119 200120 200121 200122 200123 200124 200125 200126 200127 200128 200129 200130 200131 200132 200133 200134 200135 200136 200137 200138 200139 200140 200141 200142 200143 200144 200145 200146 200147 200148 200149 200150 200151 200152 200153 200154 200155 200156 200157 200158 200159 200160 200161 200162 200163 200164 200165 200166 200167 200168 200169 200170 200171 200172 200173 200174 200175 200176 200177 200178 200179 200180 200181 200182 200183 200184 200185 200186 200187 200188 200189 200190 200191 200192 200193 200194 200195 200196 200197 200198 200199 200200 200201 200202 200203 200204 200205 200206 200207 200208 200209 200210 200211 200212 200213 200214 200215 200216 200217 200218 200219 200220 200221 200222 200223 200224 200225 200226 200227 200228 200229 200230 200231 200232 200233 200234 200235 200236 200237 200238 200239 200240 200241 200242 200243 200244 200245 200246 200247 200248 200249 200250 200251 200252 200253 200254 200255 200256 200257 200258 200259 200260 200261 200262 200263 200264 200265 200266 200267 200268 200269 200270 200271 200272 200273 200274 200275 200276 200277 200278 200279 200280 200281 200282 200283 200284 200285 200286 200287 200288 200289 200290 200291 200292 200293 200294 200295 200296 200297 200298 200299 200300 200301 200302 200303 200304 200305 200306 200307 200308 200309 200310 200311 200312 200313 200314 200315 200316 200317 200318 200319
    
    /***/ }),
    /* 1479 */
    /***/ (function(module, exports) {
    
    /**
     * Appends the elements of `values` to `array`.
     *
     * @private
     * @param {Array} array The array to modify.
     * @param {Array} values The values to append.
     * @returns {Array} Returns `array`.
     */
    function arrayPush(array, values) {
      var index = -1,
          length = values.length,
          offset = array.length;
    
      while (++index < length) {
        array[offset + index] = values[index];
      }
      return array;
    }
    
    module.exports = arrayPush;
    
    
    /***/ }),
    /* 1480 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var overArg = __webpack_require__(1465);
    
    /** Built-in value references. */
    var getPrototype = overArg(Object.getPrototypeOf, Object);
    
    module.exports = getPrototype;
    
    
    /***/ }),
    /* 1481 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var baseGetAllKeys = __webpack_require__(1482),
        getSymbols = __webpack_require__(1474),
        keys = __webpack_require__(1447);
    
    /**
     * Creates an array of own enumerable property names and symbols of `object`.
     *
     * @private
     * @param {Object} object The object to query.
     * @returns {Array} Returns the array of property names and symbols.
     */
    function getAllKeys(object) {
      return baseGetAllKeys(object, keys, getSymbols);
    }
    
    module.exports = getAllKeys;
    
    
    /***/ }),
    /* 1482 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var arrayPush = __webpack_require__(1479),
        isArray = __webpack_require__(1453);
    
    /**
     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
     * symbols of `object`.
     *
     * @private
     * @param {Object} object The object to query.
     * @param {Function} keysFunc The function to get the keys of `object`.
     * @param {Function} symbolsFunc The function to get the symbols of `object`.
     * @returns {Array} Returns the array of property names and symbols.
     */
    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
      var result = keysFunc(object);
      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
    }
    
    module.exports = baseGetAllKeys;
    
    
    /***/ }),
    /* 1483 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var baseGetAllKeys = __webpack_require__(1482),
        getSymbolsIn = __webpack_require__(1478),
        keysIn = __webpack_require__(1468);
    
    /**
     * Creates an array of own and inherited enumerable property names and
     * symbols of `object`.
     *
     * @private
     * @param {Object} object The object to query.
     * @returns {Array} Returns the array of property names and symbols.
     */
    function getAllKeysIn(object) {
      return baseGetAllKeys(object, keysIn, getSymbolsIn);
    }
    
    module.exports = getAllKeysIn;
    
    
    /***/ }),
    /* 1484 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var DataView = __webpack_require__(1485),
        Map = __webpack_require__(1411),
        Promise = __webpack_require__(1486),
        Set = __webpack_require__(1487),
        WeakMap = __webpack_require__(1488),
        baseGetTag = __webpack_require__(1415),
        toSource = __webpack_require__(1424);
    
    /** `Object#toString` result references. */
    var mapTag = '[object Map]',
        objectTag = '[object Object]',
        promiseTag = '[object Promise]',
        setTag = '[object Set]',
        weakMapTag = '[object WeakMap]';
    
    var dataViewTag = '[object DataView]';
    
    /** Used to detect maps, sets, and weakmaps. */
    var dataViewCtorString = toSource(DataView),
        mapCtorString = toSource(Map),
        promiseCtorString = toSource(Promise),
        setCtorString = toSource(Set),
        weakMapCtorString = toSource(WeakMap);
    
    /**
     * Gets the `toStringTag` of `value`.
     *
     * @private
     * @param {*} value The value to query.
     * @returns {string} Returns the `toStringTag`.
     */
    var getTag = baseGetTag;
    
    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
        (Map && getTag(new Map) != mapTag) ||
        (Promise && getTag(Promise.resolve()) != promiseTag) ||
        (Set && getTag(new Set) != setTag) ||
        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
      getTag = function(value) {
        var result = baseGetTag(value),
            Ctor = result == objectTag ? value.constructor : undefined,
            ctorString = Ctor ? toSource(Ctor) : '';
    
        if (ctorString) {
          switch (ctorString) {
            case dataViewCtorString: return dataViewTag;
            case mapCtorString: return mapTag;
            case promiseCtorString: return promiseTag;
            case setCtorString: return setTag;
            case weakMapCtorString: return weakMapTag;
          }
        }
        return result;
      };
    }
    
    module.exports = getTag;
    
    
    /***/ }),
    /* 1485 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var getNative = __webpack_require__(1412),
        root = __webpack_require__(1417);
    
    /* Built-in method references that are verified to be native. */
    var DataView = getNative(root, 'DataView');
    
    module.exports = DataView;
    
    
    /***/ }),
    /* 1486 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var getNative = __webpack_require__(1412),
        root = __webpack_require__(1417);
    
    /* Built-in method references that are verified to be native. */
    var Promise = getNative(root, 'Promise');
    
    module.exports = Promise;
    
    
    /***/ }),
    /* 1487 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var getNative = __webpack_require__(1412),
        root = __webpack_require__(1417);
    
    /* Built-in method references that are verified to be native. */
    var Set = getNative(root, 'Set');
    
    module.exports = Set;
    
    
    /***/ }),
    /* 1488 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var getNative = __webpack_require__(1412),
        root = __webpack_require__(1417);
    
    /* Built-in method references that are verified to be native. */
    var WeakMap = getNative(root, 'WeakMap');
    
    module.exports = WeakMap;
    
    
    /***/ }),
    /* 1489 */
    /***/ (function(module, exports) {
    
    /** Used for built-in method references. */
    var objectProto = Object.prototype;
    
    /** Used to check objects for own properties. */
    var hasOwnProperty = objectProto.hasOwnProperty;
    
    /**
     * Initializes an array clone.
     *
     * @private
     * @param {Array} array The array to clone.
     * @returns {Array} Returns the initialized clone.
     */
    function initCloneArray(array) {
      var length = array.length,
          result = new array.constructor(length);
    
      // Add properties assigned by `RegExp#exec`.
      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
        result.index = array.index;
        result.input = array.input;
      }
      return result;
    }
    
    module.exports = initCloneArray;
    
    
    /***/ }),
    /* 1490 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var cloneArrayBuffer = __webpack_require__(1491),
        cloneDataView = __webpack_require__(1493),
        cloneRegExp = __webpack_require__(1494),
        cloneSymbol = __webpack_require__(1495),
        cloneTypedArray = __webpack_require__(1496);
    
    /** `Object#toString` result references. */
    var boolTag = '[object Boolean]',
        dateTag = '[object Date]',
        mapTag = '[object Map]',
        numberTag = '[object Number]',
        regexpTag = '[object RegExp]',
        setTag = '[object Set]',
        stringTag = '[object String]',
        symbolTag = '[object Symbol]';
    
    var arrayBufferTag = '[object ArrayBuffer]',
        dataViewTag = '[object DataView]',
        float32Tag = '[object Float32Array]',
        float64Tag = '[object Float64Array]',
        int8Tag = '[object Int8Array]',
        int16Tag = '[object Int16Array]',
        int32Tag = '[object Int32Array]',
        uint8Tag = '[object Uint8Array]',
        uint8ClampedTag = '[object Uint8ClampedArray]',
        uint16Tag = '[object Uint16Array]',
        uint32Tag = '[object Uint32Array]';
    
    /**
     * Initializes an object clone based on its `toStringTag`.
     *
     * **Note:** This function only supports cloning values with tags of
     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
     *
     * @private
     * @param {Object} object The object to clone.
     * @param {string} tag The `toStringTag` of the object to clone.
     * @param {boolean} [isDeep] Specify a deep clone.
     * @returns {Object} Returns the initialized clone.
     */
    function initCloneByTag(object, tag, isDeep) {
      var Ctor = object.constructor;
      switch (tag) {
        case arrayBufferTag:
          return cloneArrayBuffer(object);
    
        case boolTag:
        case dateTag:
          return new Ctor(+object);
    
        case dataViewTag:
          return cloneDataView(object, isDeep);
    
        case float32Tag: case float64Tag:
        case int8Tag: case int16Tag: case int32Tag:
        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
          return cloneTypedArray(object, isDeep);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
        case mapTag:
          return new Ctor;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
        case numberTag:
        case stringTag:
          return new Ctor(object);
    
        case regexpTag:
          return cloneRegExp(object);
    
        case setTag:
          return new Ctor;
    
        case symbolTag:
          return cloneSymbol(object);
    
    module.exports = initCloneByTag;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    /* 1491 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var Uint8Array = __webpack_require__(1492);
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * Creates a clone of `arrayBuffer`.
    
    Romain CREY's avatar
    Romain CREY committed
     *
     * @private
    
     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
     * @returns {ArrayBuffer} Returns the cloned array buffer.
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function cloneArrayBuffer(arrayBuffer) {
      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
      return result;
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = cloneArrayBuffer;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var root = __webpack_require__(1417);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Built-in value references. */
    var Uint8Array = root.Uint8Array;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = Uint8Array;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var cloneArrayBuffer = __webpack_require__(1491);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Creates a clone of `dataView`.
     *
     * @private
     * @param {Object} dataView The data view to clone.
     * @param {boolean} [isDeep] Specify a deep clone.
     * @returns {Object} Returns the cloned data view.
     */
    function cloneDataView(dataView, isDeep) {
      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = cloneDataView;
    
    /***/ }),
    /* 1494 */
    /***/ (function(module, exports) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Used to match `RegExp` flags from their coerced string values. */
    var reFlags = /\w*$/;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Creates a clone of `regexp`.
     *
     * @private
     * @param {Object} regexp The regexp to clone.
     * @returns {Object} Returns the cloned regexp.
     */
    function cloneRegExp(regexp) {
      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
      result.lastIndex = regexp.lastIndex;
      return result;
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = cloneRegExp;
    
    
    Romain CREY's avatar
    Romain CREY committed
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var Symbol = __webpack_require__(1416);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Used to convert symbols to primitives and strings. */
    var symbolProto = Symbol ? Symbol.prototype : undefined,
        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Creates a clone of the `symbol` object.
     *
     * @private
     * @param {Object} symbol The symbol object to clone.
     * @returns {Object} Returns the cloned symbol object.
     */
    function cloneSymbol(symbol) {
      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = cloneSymbol;
    
    /***/ }),
    /* 1496 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var cloneArrayBuffer = __webpack_require__(1491);
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * Creates a clone of `typedArray`.
     *
     * @private
     * @param {Object} typedArray The typed array to clone.
     * @param {boolean} [isDeep] Specify a deep clone.
     * @returns {Object} Returns the cloned typed array.
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function cloneTypedArray(typedArray, isDeep) {
      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = cloneTypedArray;
    
    /***/ }),
    /* 1497 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var baseCreate = __webpack_require__(1498),
        getPrototype = __webpack_require__(1480),
        isPrototype = __webpack_require__(1463);
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * Initializes an object clone.
     *
     * @private
     * @param {Object} object The object to clone.
     * @returns {Object} Returns the initialized clone.
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function initCloneObject(object) {
      return (typeof object.constructor == 'function' && !isPrototype(object))
        ? baseCreate(getPrototype(object))
        : {};
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = initCloneObject;
    
    /***/ }),
    /* 1498 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var isObject = __webpack_require__(1421);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Built-in value references. */
    var objectCreate = Object.create;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * The base implementation of `_.create` without support for assigning
     * properties to the created object.
     *
     * @private
     * @param {Object} proto The object to inherit from.
     * @returns {Object} Returns the new object.
     */
    var baseCreate = (function() {
      function object() {}
      return function(proto) {
        if (!isObject(proto)) {
          return {};
        }
        if (objectCreate) {
          return objectCreate(proto);
        }
        object.prototype = proto;
        var result = new object;
        object.prototype = undefined;
        return result;
      };
    }());
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = baseCreate;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var baseIsMap = __webpack_require__(1500),
        baseUnary = __webpack_require__(1460),
        nodeUtil = __webpack_require__(1461);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /* Node.js helper references. */
    var nodeIsMap = nodeUtil && nodeUtil.isMap;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Checks if `value` is classified as a `Map` object.
     *
     * @static
     * @memberOf _
     * @since 4.3.0
     * @category Lang
     * @param {*} value The value to check.
     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
     * @example
     *
     * _.isMap(new Map);
     * // => true
     *
     * _.isMap(new WeakMap);
     * // => false
     */
    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = isMap;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var getTag = __webpack_require__(1484),
        isObjectLike = __webpack_require__(1452);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** `Object#toString` result references. */
    var mapTag = '[object Map]';
    
    /**
     * The base implementation of `_.isMap` without Node.js optimizations.
     *
     * @private
     * @param {*} value The value to check.
     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
     */
    function baseIsMap(value) {
      return isObjectLike(value) && getTag(value) == mapTag;
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = baseIsMap;
    
    
    Romain CREY's avatar
    Romain CREY committed
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var baseIsSet = __webpack_require__(1502),
        baseUnary = __webpack_require__(1460),
        nodeUtil = __webpack_require__(1461);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /* Node.js helper references. */
    var nodeIsSet = nodeUtil && nodeUtil.isSet;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Checks if `value` is classified as a `Set` object.
     *
     * @static
     * @memberOf _
     * @since 4.3.0
     * @category Lang
     * @param {*} value The value to check.
     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
     * @example
     *
     * _.isSet(new Set);
     * // => true
     *
     * _.isSet(new WeakSet);
     * // => false
     */
    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = isSet;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var getTag = __webpack_require__(1484),
        isObjectLike = __webpack_require__(1452);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** `Object#toString` result references. */
    var setTag = '[object Set]';
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * The base implementation of `_.isSet` without Node.js optimizations.
     *
     * @private
     * @param {*} value The value to check.
     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function baseIsSet(value) {
      return isObjectLike(value) && getTag(value) == setTag;
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = baseIsSet;
    
    /***/ }),
    /* 1503 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var castPath = __webpack_require__(1504),
        last = __webpack_require__(1512),
        parent = __webpack_require__(1513),
        toKey = __webpack_require__(1515);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * The base implementation of `_.unset`.
     *
     * @private
     * @param {Object} object The object to modify.
     * @param {Array|string} path The property path to unset.
     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
     */
    function baseUnset(object, path) {
      path = castPath(path, object);
      object = parent(object, path);
      return object == null || delete object[toKey(last(path))];
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = baseUnset;
    
    /***/ }),
    /* 1504 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var isArray = __webpack_require__(1453),
        isKey = __webpack_require__(1505),
        stringToPath = __webpack_require__(1507),
        toString = __webpack_require__(1510);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Casts `value` to a path array if it's not one.
     *
     * @private
     * @param {*} value The value to inspect.
     * @param {Object} [object] The object to query keys on.
     * @returns {Array} Returns the cast property path array.
     */
    function castPath(value, object) {
      if (isArray(value)) {
        return value;
    
    Romain CREY's avatar
    Romain CREY committed
      }
    
      return isKey(value, object) ? [value] : stringToPath(toString(value));
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = castPath;
    
    /***/ }),
    /* 1505 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var isArray = __webpack_require__(1453),
        isSymbol = __webpack_require__(1506);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Used to match property names within property paths. */
    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
        reIsPlainProp = /^\w*$/;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Checks if `value` is a property name and not a property path.
     *
     * @private
     * @param {*} value The value to check.
     * @param {Object} [object] The object to query keys on.
     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
     */
    function isKey(value, object) {
      if (isArray(value)) {
        return false;
    
    Romain CREY's avatar
    Romain CREY committed
      }
    
      var type = typeof value;
      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
          value == null || isSymbol(value)) {
        return true;
    
    Romain CREY's avatar
    Romain CREY committed
      }
    
      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
        (object != null && value in Object(object));
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = isKey;
    
    /***/ }),
    /* 1506 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var baseGetTag = __webpack_require__(1415),
        isObjectLike = __webpack_require__(1452);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** `Object#toString` result references. */
    var symbolTag = '[object Symbol]';
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Checks if `value` is classified as a `Symbol` primitive or object.
     *
     * @static
     * @memberOf _
     * @since 4.0.0
     * @category Lang
     * @param {*} value The value to check.
     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
     * @example
     *
     * _.isSymbol(Symbol.iterator);
     * // => true
     *
     * _.isSymbol('abc');
     * // => false
     */
    function isSymbol(value) {
      return typeof value == 'symbol' ||
        (isObjectLike(value) && baseGetTag(value) == symbolTag);
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = isSymbol;
    
    /***/ }),
    /* 1507 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var memoizeCapped = __webpack_require__(1508);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Used to match property names within property paths. */
    var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Used to match backslashes in property paths. */
    var reEscapeChar = /\\(\\)?/g;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Converts `string` to a property path array.
     *
     * @private
     * @param {string} string The string to convert.
     * @returns {Array} Returns the property path array.
     */
    var stringToPath = memoizeCapped(function(string) {
      var result = [];
      if (string.charCodeAt(0) === 46 /* . */) {
        result.push('');
    
    Romain CREY's avatar
    Romain CREY committed
      }
    
      string.replace(rePropName, function(match, number, quote, subString) {
        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
      });
      return result;
    });
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = stringToPath;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var memoize = __webpack_require__(1509);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Used as the maximum memoize cache size. */
    var MAX_MEMOIZE_SIZE = 500;
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * A specialized version of `_.memoize` which clears the memoized function's
     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
    
    Romain CREY's avatar
    Romain CREY committed
     *
    
     * @private
     * @param {Function} func The function to have its output memoized.
     * @returns {Function} Returns the new memoized function.
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function memoizeCapped(func) {
      var result = memoize(func, function(key) {
        if (cache.size === MAX_MEMOIZE_SIZE) {
          cache.clear();
        }
        return key;
    
    Romain CREY's avatar
    Romain CREY committed
      });
    
    
      var cache = result.cache;
    
    Romain CREY's avatar
    Romain CREY committed
      return result;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = memoizeCapped;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var MapCache = __webpack_require__(1426);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /** Error message constants. */
    var FUNC_ERROR_TEXT = 'Expected a function';
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * Creates a function that memoizes the result of `func`. If `resolver` is
     * provided, it determines the cache key for storing the result based on the
     * arguments provided to the memoized function. By default, the first argument
     * provided to the memoized function is used as the map cache key. The `func`
     * is invoked with the `this` binding of the memoized function.
    
    Romain CREY's avatar
    Romain CREY committed
     *
    
     * **Note:** The cache is exposed as the `cache` property on the memoized
     * function. Its creation may be customized by replacing the `_.memoize.Cache`
     * constructor with one whose instances implement the
     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
     *
     * @static
     * @memberOf _
     * @since 0.1.0
     * @category Function
     * @param {Function} func The function to have its output memoized.
     * @param {Function} [resolver] The function to resolve the cache key.
     * @returns {Function} Returns the new memoized function.
     * @example
     *
     * var object = { 'a': 1, 'b': 2 };
     * var other = { 'c': 3, 'd': 4 };
     *
     * var values = _.memoize(_.values);
     * values(object);
     * // => [1, 2]
     *
     * values(other);
     * // => [3, 4]
     *
     * object.a = 2;
     * values(object);
     * // => [1, 2]
     *
     * // Modify the result cache.
     * values.cache.set(object, ['a', 'b']);
     * values(object);
     * // => ['a', 'b']
     *
     * // Replace `_.memoize.Cache`.
     * _.memoize.Cache = WeakMap;
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function memoize(func, resolver) {
      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
        throw new TypeError(FUNC_ERROR_TEXT);
    
    Romain CREY's avatar
    Romain CREY committed
      }
    
      var memoized = function() {
        var args = arguments,
            key = resolver ? resolver.apply(this, args) : args[0],
            cache = memoized.cache;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
        if (cache.has(key)) {
          return cache.get(key);
    
    Romain CREY's avatar
    Romain CREY committed
        }
    
        var result = func.apply(this, args);
        memoized.cache = cache.set(key, result) || cache;
        return result;
      };
      memoized.cache = new (memoize.Cache || MapCache);
      return memoized;
    }
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    // Expose `MapCache`.
    memoize.Cache = MapCache;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    module.exports = memoize;
    
    /***/ }),
    /* 1510 */
    /***/ (function(module, exports, __webpack_require__) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    var baseToString = __webpack_require__(1511);
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /**
     * Converts `value` to a string. An empty string is returned for `null`
     * and `undefined` values. The sign of `-0` is preserved.
     *
     * @static
     * @memberOf _
     * @since 4.0.0
     * @category Lang
     * @param {*} value The value to convert.
     * @returns {string} Returns the converted string.
     * @example
     *
     * _.toString(null);
     * // => ''
     *
     * _.toString(-0);
     * // => '-0'
     *
     * _.toString([1, 2, 3]);
     * // => '1,2,3'
     */
    function toString(value) {
      return value == null ? '' : baseToString(value);
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = toString;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    Romain CREY's avatar
    Romain CREY committed
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var Symbol = __webpack_require__(1416),
        arrayMap = __webpack_require__(1395),
        isArray = __webpack_require__(1453),
        isSymbol = __webpack_require__(1506);
    
    /** Used as references for various `Number` constants. */
    var INFINITY = 1 / 0;
    
    /** Used to convert symbols to primitives and strings. */
    var symbolProto = Symbol ? Symbol.prototype : undefined,
        symbolToString = symbolProto ? symbolProto.toString : undefined;
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * The base implementation of `_.toString` which doesn't convert nullish
     * values to empty strings.
    
    Romain CREY's avatar
    Romain CREY committed
     *
     * @private
    
     * @param {*} value The value to process.
     * @returns {string} Returns the string.
    
    Romain CREY's avatar
    Romain CREY committed
     */
    
    function baseToString(value) {
      // Exit early for strings to avoid a performance hit in some environments.
      if (typeof value == 'string') {
        return value;
      }
      if (isArray(value)) {
        // Recursively convert values (susceptible to call stack limits).
        return arrayMap(value, baseToString) + '';
      }
      if (isSymbol(value)) {
        return symbolToString ? symbolToString.call(value) : '';
      }
      var result = (value + '');
      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
    
    Romain CREY's avatar
    Romain CREY committed
    }
    
    
    module.exports = baseToString;
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    /***/ }),
    
    /* 1512 */
    /***/ (function(module, exports) {
    
    Romain CREY's avatar
    Romain CREY committed
    
    /**
    
     * Gets the last element of `array`.
    
    Romain CREY's avatar
    Romain CREY committed
     *
    
     * @static
     * @memberOf _
     * @since 0.1.0
     * @category Array
     * @param {Array} array The array to query.
     * @returns {*} Returns the last element of `array`.
     * @example
     *
     * _.last([1, 2, 3]);