fluxxor-rails 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b3e701a956a47f55842451daa987fde6143ec77
4
- data.tar.gz: 322cb20dc13cd402d51cc7f9accd2e0d69639b28
3
+ metadata.gz: bbd6cb4298d572680aba085a4d1ad7b42204c653
4
+ data.tar.gz: 038d256abed43d5804695d6a3627bbff82e11332
5
5
  SHA512:
6
- metadata.gz: 782eaee92bee84f7d0107475f4708cf4458c8e1dfc5e718fd21721862e06f344a688b8e3747fb401bd19feae4a1d00dc7b8cbde01afb156ec07aeb176a485f37
7
- data.tar.gz: 2dade992b852bcaea20563afba1bffbaa102fa61d699b47a050baa5948af6b65abd72d3f9051323ebd326b695c9b8dd29bbdf2f14d45b074ceae0509c2309526
6
+ metadata.gz: 394236b88d156d33edf592f42e2bd22f3f80408e97ae2798331dac4056024b0fc99813789737cc5356b5ba2ae65429180bdefc1d716d387ea965808b5b00701b
7
+ data.tar.gz: 617f0dd4b1b2272f361d23387890e519a009f6a3b0853db65d96a9514cca6483059a8c6d40bff0adf0b4add2487c85b51eea96ea396b2cf50c7a944abb520cc6
@@ -1,5 +1,5 @@
1
1
  module Fluxxor
2
2
  module Rails
3
- VERSION = '1.7.0'
3
+ VERSION = '1.7.1'
4
4
  end
5
5
  end
@@ -78,16 +78,16 @@ return /******/ (function(modules) { // webpackBootstrap
78
78
  /* 1 */
79
79
  /***/ function(module, exports, __webpack_require__) {
80
80
 
81
- var _clone = __webpack_require__(18),
82
- _mapValues = __webpack_require__(19),
83
- _forOwn = __webpack_require__(20),
84
- _intersection = __webpack_require__(23),
85
- _keys = __webpack_require__(21),
86
- _map = __webpack_require__(14),
87
- _each = __webpack_require__(12),
88
- _size = __webpack_require__(15),
89
- _findKey = __webpack_require__(22),
90
- _uniq = __webpack_require__(24);
81
+ var _clone = __webpack_require__(12),
82
+ _mapValues = __webpack_require__(15),
83
+ _forOwn = __webpack_require__(16),
84
+ _intersection = __webpack_require__(19),
85
+ _keys = __webpack_require__(17),
86
+ _map = __webpack_require__(21),
87
+ _each = __webpack_require__(22),
88
+ _size = __webpack_require__(23),
89
+ _findKey = __webpack_require__(18),
90
+ _uniq = __webpack_require__(20);
91
91
 
92
92
  var defaultDispatchInterceptor = function(action, dispatch) {
93
93
  dispatch(action);
@@ -249,10 +249,10 @@ return /******/ (function(modules) { // webpackBootstrap
249
249
  var EventEmitter = __webpack_require__(10),
250
250
  inherits = __webpack_require__(8),
251
251
  objectPath = __webpack_require__(11),
252
- _each = __webpack_require__(12),
253
- _reduce = __webpack_require__(13),
254
- _isFunction = __webpack_require__(16),
255
- _isString = __webpack_require__(17);
252
+ _each = __webpack_require__(22),
253
+ _reduce = __webpack_require__(24),
254
+ _isFunction = __webpack_require__(13),
255
+ _isString = __webpack_require__(14);
256
256
 
257
257
  var Dispatcher = __webpack_require__(1);
258
258
 
@@ -453,7 +453,7 @@ return /******/ (function(modules) { // webpackBootstrap
453
453
  /* 5 */
454
454
  /***/ function(module, exports, __webpack_require__) {
455
455
 
456
- var _each = __webpack_require__(12);
456
+ var _each = __webpack_require__(22);
457
457
 
458
458
  var StoreWatchMixin = function() {
459
459
  var storeNames = Array.prototype.slice.call(arguments);
@@ -497,8 +497,8 @@ return /******/ (function(modules) { // webpackBootstrap
497
497
  /* 6 */
498
498
  /***/ function(module, exports, __webpack_require__) {
499
499
 
500
- var _each = __webpack_require__(12),
501
- _isFunction = __webpack_require__(16),
500
+ var _each = __webpack_require__(22),
501
+ _isFunction = __webpack_require__(13),
502
502
  Store = __webpack_require__(9),
503
503
  inherits = __webpack_require__(8);
504
504
 
@@ -543,7 +543,7 @@ return /******/ (function(modules) { // webpackBootstrap
543
543
  /* 7 */
544
544
  /***/ function(module, exports, __webpack_require__) {
545
545
 
546
- module.exports = "1.7.0"
546
+ module.exports = "1.7.1"
547
547
 
548
548
  /***/ },
549
549
  /* 8 */
@@ -600,7 +600,7 @@ return /******/ (function(modules) { // webpackBootstrap
600
600
 
601
601
  var EventEmitter = __webpack_require__(10),
602
602
  inherits = __webpack_require__(8),
603
- _isFunction = __webpack_require__(16),
603
+ _isFunction = __webpack_require__(13),
604
604
  _isObject = __webpack_require__(25);
605
605
 
606
606
  function Store(dispatcher) {
@@ -1155,210 +1155,83 @@ return /******/ (function(modules) { // webpackBootstrap
1155
1155
  /* 12 */
1156
1156
  /***/ function(module, exports, __webpack_require__) {
1157
1157
 
1158
- var arrayEach = __webpack_require__(30),
1159
- baseEach = __webpack_require__(31),
1160
- createForEach = __webpack_require__(32);
1158
+ var baseClone = __webpack_require__(26),
1159
+ bindCallback = __webpack_require__(27),
1160
+ isIterateeCall = __webpack_require__(28);
1161
1161
 
1162
1162
  /**
1163
- * Iterates over elements of `collection` invoking `iteratee` for each element.
1164
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1165
- * (value, index|key, collection). Iteratee functions may exit iteration early
1166
- * by explicitly returning `false`.
1167
- *
1168
- * **Note:** As with other "Collections" methods, objects with a "length" property
1169
- * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1170
- * may be used for object iteration.
1171
- *
1172
- * @static
1173
- * @memberOf _
1174
- * @alias each
1175
- * @category Collection
1176
- * @param {Array|Object|string} collection The collection to iterate over.
1177
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1178
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1179
- * @returns {Array|Object|string} Returns `collection`.
1180
- * @example
1181
- *
1182
- * _([1, 2]).forEach(function(n) {
1183
- * console.log(n);
1184
- * }).value();
1185
- * // => logs each value from left to right and returns the array
1186
- *
1187
- * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1188
- * console.log(n, key);
1189
- * });
1190
- * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1191
- */
1192
- var forEach = createForEach(arrayEach, baseEach);
1193
-
1194
- module.exports = forEach;
1195
-
1196
-
1197
- /***/ },
1198
- /* 13 */
1199
- /***/ function(module, exports, __webpack_require__) {
1200
-
1201
- var arrayReduce = __webpack_require__(33),
1202
- baseEach = __webpack_require__(31),
1203
- createReduce = __webpack_require__(34);
1204
-
1205
- /**
1206
- * Reduces `collection` to a value which is the accumulated result of running
1207
- * each element in `collection` through `iteratee`, where each successive
1208
- * invocation is supplied the return value of the previous. If `accumulator`
1209
- * is not provided the first element of `collection` is used as the initial
1210
- * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1211
- * (accumulator, value, index|key, collection).
1212
- *
1213
- * Many lodash methods are guarded to work as interatees for methods like
1214
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
1215
- *
1216
- * The guarded methods are:
1217
- * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
1218
- *
1219
- * @static
1220
- * @memberOf _
1221
- * @alias foldl, inject
1222
- * @category Collection
1223
- * @param {Array|Object|string} collection The collection to iterate over.
1224
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1225
- * @param {*} [accumulator] The initial value.
1226
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1227
- * @returns {*} Returns the accumulated value.
1228
- * @example
1229
- *
1230
- * _.reduce([1, 2], function(total, n) {
1231
- * return total + n;
1232
- * });
1233
- * // => 3
1234
- *
1235
- * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1236
- * result[key] = n * 3;
1237
- * return result;
1238
- * }, {});
1239
- * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
1240
- */
1241
- var reduce = createReduce(arrayReduce, baseEach);
1242
-
1243
- module.exports = reduce;
1244
-
1245
-
1246
- /***/ },
1247
- /* 14 */
1248
- /***/ function(module, exports, __webpack_require__) {
1249
-
1250
- var arrayMap = __webpack_require__(26),
1251
- baseCallback = __webpack_require__(27),
1252
- baseMap = __webpack_require__(28),
1253
- isArray = __webpack_require__(29);
1254
-
1255
- /**
1256
- * Creates an array of values by running each element in `collection` through
1257
- * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1258
- * arguments: (value, index|key, collection).
1259
- *
1260
- * If a property name is provided for `iteratee` the created `_.property`
1261
- * style callback returns the property value of the given element.
1262
- *
1263
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1264
- * style callback returns `true` for elements that have a matching property
1265
- * value, else `false`.
1266
- *
1267
- * If an object is provided for `iteratee` the created `_.matches` style
1268
- * callback returns `true` for elements that have the properties of the given
1269
- * object, else `false`.
1270
- *
1271
- * Many lodash methods are guarded to work as interatees for methods like
1272
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1163
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1164
+ * otherwise they are assigned by reference. If `customizer` is provided it's
1165
+ * invoked to produce the cloned values. If `customizer` returns `undefined`
1166
+ * cloning is handled by the method instead. The `customizer` is bound to
1167
+ * `thisArg` and invoked with up to three argument; (value [, index|key, object]).
1273
1168
  *
1274
- * The guarded methods are:
1275
- * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
1276
- * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
1277
- * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
1278
- * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
1279
- * `sum`, `uniq`, and `words`
1169
+ * **Note:** This method is loosely based on the
1170
+ * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1171
+ * The enumerable properties of `arguments` objects and objects created by
1172
+ * constructors other than `Object` are cloned to plain `Object` objects. An
1173
+ * empty object is returned for uncloneable values such as functions, DOM nodes,
1174
+ * Maps, Sets, and WeakMaps.
1280
1175
  *
1281
1176
  * @static
1282
1177
  * @memberOf _
1283
- * @alias collect
1284
- * @category Collection
1285
- * @param {Array|Object|string} collection The collection to iterate over.
1286
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1287
- * per iteration.
1288
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1289
- * @returns {Array} Returns the new mapped array.
1178
+ * @category Lang
1179
+ * @param {*} value The value to clone.
1180
+ * @param {boolean} [isDeep] Specify a deep clone.
1181
+ * @param {Function} [customizer] The function to customize cloning values.
1182
+ * @param {*} [thisArg] The `this` binding of `customizer`.
1183
+ * @returns {*} Returns the cloned value.
1290
1184
  * @example
1291
1185
  *
1292
- * function timesThree(n) {
1293
- * return n * 3;
1294
- * }
1295
- *
1296
- * _.map([1, 2], timesThree);
1297
- * // => [3, 6]
1298
- *
1299
- * _.map({ 'a': 1, 'b': 2 }, timesThree);
1300
- * // => [3, 6] (iteration order is not guaranteed)
1301
- *
1302
1186
  * var users = [
1303
1187
  * { 'user': 'barney' },
1304
1188
  * { 'user': 'fred' }
1305
1189
  * ];
1306
1190
  *
1307
- * // using the `_.property` callback shorthand
1308
- * _.map(users, 'user');
1309
- * // => ['barney', 'fred']
1310
- */
1311
- function map(collection, iteratee, thisArg) {
1312
- var func = isArray(collection) ? arrayMap : baseMap;
1313
- iteratee = baseCallback(iteratee, thisArg, 3);
1314
- return func(collection, iteratee);
1315
- }
1316
-
1317
- module.exports = map;
1318
-
1319
-
1320
- /***/ },
1321
- /* 15 */
1322
- /***/ function(module, exports, __webpack_require__) {
1323
-
1324
- var getLength = __webpack_require__(35),
1325
- isLength = __webpack_require__(36),
1326
- keys = __webpack_require__(21);
1327
-
1328
- /**
1329
- * Gets the size of `collection` by returning its length for array-like
1330
- * values or the number of own enumerable properties for objects.
1331
- *
1332
- * @static
1333
- * @memberOf _
1334
- * @category Collection
1335
- * @param {Array|Object|string} collection The collection to inspect.
1336
- * @returns {number} Returns the size of `collection`.
1337
- * @example
1191
+ * var shallow = _.clone(users);
1192
+ * shallow[0] === users[0];
1193
+ * // => true
1338
1194
  *
1339
- * _.size([1, 2, 3]);
1340
- * // => 3
1195
+ * var deep = _.clone(users, true);
1196
+ * deep[0] === users[0];
1197
+ * // => false
1341
1198
  *
1342
- * _.size({ 'a': 1, 'b': 2 });
1343
- * // => 2
1199
+ * // using a customizer callback
1200
+ * var el = _.clone(document.body, function(value) {
1201
+ * if (_.isElement(value)) {
1202
+ * return value.cloneNode(false);
1203
+ * }
1204
+ * });
1344
1205
  *
1345
- * _.size('pebbles');
1346
- * // => 7
1206
+ * el === document.body
1207
+ * // => false
1208
+ * el.nodeName
1209
+ * // => BODY
1210
+ * el.childNodes.length;
1211
+ * // => 0
1347
1212
  */
1348
- function size(collection) {
1349
- var length = collection ? getLength(collection) : 0;
1350
- return isLength(length) ? length : keys(collection).length;
1213
+ function clone(value, isDeep, customizer, thisArg) {
1214
+ if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1215
+ isDeep = false;
1216
+ }
1217
+ else if (typeof isDeep == 'function') {
1218
+ thisArg = customizer;
1219
+ customizer = isDeep;
1220
+ isDeep = false;
1221
+ }
1222
+ return typeof customizer == 'function'
1223
+ ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 3))
1224
+ : baseClone(value, isDeep);
1351
1225
  }
1352
1226
 
1353
- module.exports = size;
1227
+ module.exports = clone;
1354
1228
 
1355
1229
 
1356
1230
  /***/ },
1357
- /* 16 */
1231
+ /* 13 */
1358
1232
  /***/ function(module, exports, __webpack_require__) {
1359
1233
 
1360
- /* WEBPACK VAR INJECTION */(function(global) {var baseIsFunction = __webpack_require__(37),
1361
- isNative = __webpack_require__(38);
1234
+ var isObject = __webpack_require__(25);
1362
1235
 
1363
1236
  /** `Object#toString` result references. */
1364
1237
  var funcTag = '[object Function]';
@@ -1367,14 +1240,11 @@ return /******/ (function(modules) { // webpackBootstrap
1367
1240
  var objectProto = Object.prototype;
1368
1241
 
1369
1242
  /**
1370
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
1243
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
1371
1244
  * of values.
1372
1245
  */
1373
1246
  var objToString = objectProto.toString;
1374
1247
 
1375
- /** Native method references. */
1376
- var Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array;
1377
-
1378
1248
  /**
1379
1249
  * Checks if `value` is classified as a `Function` object.
1380
1250
  *
@@ -1391,22 +1261,21 @@ return /******/ (function(modules) { // webpackBootstrap
1391
1261
  * _.isFunction(/abc/);
1392
1262
  * // => false
1393
1263
  */
1394
- var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
1264
+ function isFunction(value) {
1395
1265
  // The use of `Object#toString` avoids issues with the `typeof` operator
1396
1266
  // in older versions of Chrome and Safari which return 'function' for regexes
1397
- // and Safari 8 equivalents which return 'object' for typed array constructors.
1398
- return objToString.call(value) == funcTag;
1399
- };
1267
+ // and Safari 8 which returns 'object' for typed array constructors.
1268
+ return isObject(value) && objToString.call(value) == funcTag;
1269
+ }
1400
1270
 
1401
1271
  module.exports = isFunction;
1402
-
1403
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1272
+
1404
1273
 
1405
1274
  /***/ },
1406
- /* 17 */
1275
+ /* 14 */
1407
1276
  /***/ function(module, exports, __webpack_require__) {
1408
1277
 
1409
- var isObjectLike = __webpack_require__(43);
1278
+ var isObjectLike = __webpack_require__(29);
1410
1279
 
1411
1280
  /** `Object#toString` result references. */
1412
1281
  var stringTag = '[object String]';
@@ -1415,7 +1284,7 @@ return /******/ (function(modules) { // webpackBootstrap
1415
1284
  var objectProto = Object.prototype;
1416
1285
 
1417
1286
  /**
1418
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
1287
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
1419
1288
  * of values.
1420
1289
  */
1421
1290
  var objToString = objectProto.toString;
@@ -1444,111 +1313,36 @@ return /******/ (function(modules) { // webpackBootstrap
1444
1313
 
1445
1314
 
1446
1315
  /***/ },
1447
- /* 18 */
1316
+ /* 15 */
1448
1317
  /***/ function(module, exports, __webpack_require__) {
1449
1318
 
1450
- var baseClone = __webpack_require__(39),
1451
- bindCallback = __webpack_require__(40),
1452
- isIterateeCall = __webpack_require__(41);
1319
+ var createObjectMapper = __webpack_require__(30);
1453
1320
 
1454
1321
  /**
1455
- * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1456
- * otherwise they are assigned by reference. If `customizer` is provided it is
1457
- * invoked to produce the cloned values. If `customizer` returns `undefined`
1458
- * cloning is handled by the method instead. The `customizer` is bound to
1459
- * `thisArg` and invoked with two argument; (value [, index|key, object]).
1322
+ * Creates an object with the same keys as `object` and values generated by
1323
+ * running each own enumerable property of `object` through `iteratee`. The
1324
+ * iteratee function is bound to `thisArg` and invoked with three arguments:
1325
+ * (value, key, object).
1460
1326
  *
1461
- * **Note:** This method is loosely based on the
1462
- * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1463
- * The enumerable properties of `arguments` objects and objects created by
1464
- * constructors other than `Object` are cloned to plain `Object` objects. An
1465
- * empty object is returned for uncloneable values such as functions, DOM nodes,
1466
- * Maps, Sets, and WeakMaps.
1327
+ * If a property name is provided for `iteratee` the created `_.property`
1328
+ * style callback returns the property value of the given element.
1329
+ *
1330
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1331
+ * style callback returns `true` for elements that have a matching property
1332
+ * value, else `false`.
1333
+ *
1334
+ * If an object is provided for `iteratee` the created `_.matches` style
1335
+ * callback returns `true` for elements that have the properties of the given
1336
+ * object, else `false`.
1467
1337
  *
1468
1338
  * @static
1469
1339
  * @memberOf _
1470
- * @category Lang
1471
- * @param {*} value The value to clone.
1472
- * @param {boolean} [isDeep] Specify a deep clone.
1473
- * @param {Function} [customizer] The function to customize cloning values.
1474
- * @param {*} [thisArg] The `this` binding of `customizer`.
1475
- * @returns {*} Returns the cloned value.
1476
- * @example
1477
- *
1478
- * var users = [
1479
- * { 'user': 'barney' },
1480
- * { 'user': 'fred' }
1481
- * ];
1482
- *
1483
- * var shallow = _.clone(users);
1484
- * shallow[0] === users[0];
1485
- * // => true
1486
- *
1487
- * var deep = _.clone(users, true);
1488
- * deep[0] === users[0];
1489
- * // => false
1490
- *
1491
- * // using a customizer callback
1492
- * var el = _.clone(document.body, function(value) {
1493
- * if (_.isElement(value)) {
1494
- * return value.cloneNode(false);
1495
- * }
1496
- * });
1497
- *
1498
- * el === document.body
1499
- * // => false
1500
- * el.nodeName
1501
- * // => BODY
1502
- * el.childNodes.length;
1503
- * // => 0
1504
- */
1505
- function clone(value, isDeep, customizer, thisArg) {
1506
- if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1507
- isDeep = false;
1508
- }
1509
- else if (typeof isDeep == 'function') {
1510
- thisArg = customizer;
1511
- customizer = isDeep;
1512
- isDeep = false;
1513
- }
1514
- customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
1515
- return baseClone(value, isDeep, customizer);
1516
- }
1517
-
1518
- module.exports = clone;
1519
-
1520
-
1521
- /***/ },
1522
- /* 19 */
1523
- /***/ function(module, exports, __webpack_require__) {
1524
-
1525
- var createObjectMapper = __webpack_require__(42);
1526
-
1527
- /**
1528
- * Creates an object with the same keys as `object` and values generated by
1529
- * running each own enumerable property of `object` through `iteratee`. The
1530
- * iteratee function is bound to `thisArg` and invoked with three arguments:
1531
- * (value, key, object).
1532
- *
1533
- * If a property name is provided for `iteratee` the created `_.property`
1534
- * style callback returns the property value of the given element.
1535
- *
1536
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1537
- * style callback returns `true` for elements that have a matching property
1538
- * value, else `false`.
1539
- *
1540
- * If an object is provided for `iteratee` the created `_.matches` style
1541
- * callback returns `true` for elements that have the properties of the given
1542
- * object, else `false`.
1543
- *
1544
- * @static
1545
- * @memberOf _
1546
- * @category Object
1547
- * @param {Object} object The object to iterate over.
1548
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1549
- * per iteration.
1550
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1551
- * @returns {Object} Returns the new mapped object.
1340
+ * @category Object
1341
+ * @param {Object} object The object to iterate over.
1342
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1343
+ * per iteration.
1344
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1345
+ * @returns {Object} Returns the new mapped object.
1552
1346
  * @example
1553
1347
  *
1554
1348
  * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
@@ -1571,11 +1365,11 @@ return /******/ (function(modules) { // webpackBootstrap
1571
1365
 
1572
1366
 
1573
1367
  /***/ },
1574
- /* 20 */
1368
+ /* 16 */
1575
1369
  /***/ function(module, exports, __webpack_require__) {
1576
1370
 
1577
- var baseForOwn = __webpack_require__(48),
1578
- createForOwn = __webpack_require__(49);
1371
+ var baseForOwn = __webpack_require__(31),
1372
+ createForOwn = __webpack_require__(32);
1579
1373
 
1580
1374
  /**
1581
1375
  * Iterates over own enumerable properties of an object invoking `iteratee`
@@ -1610,22 +1404,22 @@ return /******/ (function(modules) { // webpackBootstrap
1610
1404
 
1611
1405
 
1612
1406
  /***/ },
1613
- /* 21 */
1407
+ /* 17 */
1614
1408
  /***/ function(module, exports, __webpack_require__) {
1615
1409
 
1616
- var isArrayLike = __webpack_require__(47),
1617
- isNative = __webpack_require__(38),
1410
+ var getNative = __webpack_require__(33),
1411
+ isArrayLike = __webpack_require__(34),
1618
1412
  isObject = __webpack_require__(25),
1619
- shimKeys = __webpack_require__(51);
1413
+ shimKeys = __webpack_require__(35);
1620
1414
 
1621
1415
  /* Native method references for those with the same name as other `lodash` methods. */
1622
- var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
1416
+ var nativeKeys = getNative(Object, 'keys');
1623
1417
 
1624
1418
  /**
1625
1419
  * Creates an array of the own enumerable property names of `object`.
1626
1420
  *
1627
1421
  * **Note:** Non-object values are coerced to objects. See the
1628
- * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
1422
+ * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
1629
1423
  * for more details.
1630
1424
  *
1631
1425
  * @static
@@ -1649,7 +1443,7 @@ return /******/ (function(modules) { // webpackBootstrap
1649
1443
  * // => ['0', '1']
1650
1444
  */
1651
1445
  var keys = !nativeKeys ? shimKeys : function(object) {
1652
- var Ctor = object != null && object.constructor;
1446
+ var Ctor = object == null ? undefined : object.constructor;
1653
1447
  if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
1654
1448
  (typeof object != 'function' && isArrayLike(object))) {
1655
1449
  return shimKeys(object);
@@ -1661,11 +1455,11 @@ return /******/ (function(modules) { // webpackBootstrap
1661
1455
 
1662
1456
 
1663
1457
  /***/ },
1664
- /* 22 */
1458
+ /* 18 */
1665
1459
  /***/ function(module, exports, __webpack_require__) {
1666
1460
 
1667
- var baseForOwn = __webpack_require__(48),
1668
- createFindKey = __webpack_require__(50);
1461
+ var baseForOwn = __webpack_require__(31),
1462
+ createFindKey = __webpack_require__(36);
1669
1463
 
1670
1464
  /**
1671
1465
  * This method is like `_.find` except that it returns the key of the first
@@ -1721,17 +1515,18 @@ return /******/ (function(modules) { // webpackBootstrap
1721
1515
 
1722
1516
 
1723
1517
  /***/ },
1724
- /* 23 */
1518
+ /* 19 */
1725
1519
  /***/ function(module, exports, __webpack_require__) {
1726
1520
 
1727
- var baseIndexOf = __webpack_require__(44),
1728
- cacheIndexOf = __webpack_require__(45),
1729
- createCache = __webpack_require__(46),
1730
- isArrayLike = __webpack_require__(47);
1521
+ var baseIndexOf = __webpack_require__(37),
1522
+ cacheIndexOf = __webpack_require__(38),
1523
+ createCache = __webpack_require__(39),
1524
+ isArrayLike = __webpack_require__(34),
1525
+ restParam = __webpack_require__(40);
1731
1526
 
1732
1527
  /**
1733
- * Creates an array of unique values in all provided arrays using
1734
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1528
+ * Creates an array of unique values that are included in all of the provided
1529
+ * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
1735
1530
  * for equality comparisons.
1736
1531
  *
1737
1532
  * @static
@@ -1743,27 +1538,19 @@ return /******/ (function(modules) { // webpackBootstrap
1743
1538
  * _.intersection([1, 2], [4, 2], [2, 1]);
1744
1539
  * // => [2]
1745
1540
  */
1746
- function intersection() {
1747
- var args = [],
1748
- argsIndex = -1,
1749
- argsLength = arguments.length,
1750
- caches = [],
1541
+ var intersection = restParam(function(arrays) {
1542
+ var othLength = arrays.length,
1543
+ othIndex = othLength,
1544
+ caches = Array(length),
1751
1545
  indexOf = baseIndexOf,
1752
1546
  isCommon = true,
1753
1547
  result = [];
1754
1548
 
1755
- while (++argsIndex < argsLength) {
1756
- var value = arguments[argsIndex];
1757
- if (isArrayLike(value)) {
1758
- args.push(value);
1759
- caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null);
1760
- }
1761
- }
1762
- argsLength = args.length;
1763
- if (argsLength < 2) {
1764
- return result;
1549
+ while (othIndex--) {
1550
+ var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
1551
+ caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
1765
1552
  }
1766
- var array = args[0],
1553
+ var array = arrays[0],
1767
1554
  index = -1,
1768
1555
  length = array ? array.length : 0,
1769
1556
  seen = caches[0];
@@ -1772,10 +1559,10 @@ return /******/ (function(modules) { // webpackBootstrap
1772
1559
  while (++index < length) {
1773
1560
  value = array[index];
1774
1561
  if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
1775
- argsIndex = argsLength;
1776
- while (--argsIndex) {
1777
- var cache = caches[argsIndex];
1778
- if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) {
1562
+ var othIndex = othLength;
1563
+ while (--othIndex) {
1564
+ var cache = caches[othIndex];
1565
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
1779
1566
  continue outer;
1780
1567
  }
1781
1568
  }
@@ -1786,26 +1573,26 @@ return /******/ (function(modules) { // webpackBootstrap
1786
1573
  }
1787
1574
  }
1788
1575
  return result;
1789
- }
1576
+ });
1790
1577
 
1791
1578
  module.exports = intersection;
1792
1579
 
1793
1580
 
1794
1581
  /***/ },
1795
- /* 24 */
1582
+ /* 20 */
1796
1583
  /***/ function(module, exports, __webpack_require__) {
1797
1584
 
1798
- var baseCallback = __webpack_require__(27),
1799
- baseUniq = __webpack_require__(52),
1800
- isIterateeCall = __webpack_require__(41),
1801
- sortedUniq = __webpack_require__(53);
1585
+ var baseCallback = __webpack_require__(41),
1586
+ baseUniq = __webpack_require__(42),
1587
+ isIterateeCall = __webpack_require__(28),
1588
+ sortedUniq = __webpack_require__(43);
1802
1589
 
1803
1590
  /**
1804
1591
  * Creates a duplicate-free version of an array, using
1805
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1592
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
1806
1593
  * for equality comparisons, in which only the first occurence of each element
1807
1594
  * is kept. Providing `true` for `isSorted` performs a faster search algorithm
1808
- * for sorted arrays. If an iteratee function is provided it is invoked for
1595
+ * for sorted arrays. If an iteratee function is provided it's invoked for
1809
1596
  * each element in the array to generate the criterion by which uniqueness
1810
1597
  * is computed. The `iteratee` is bound to `thisArg` and invoked with three
1811
1598
  * arguments: (value, index, array).
@@ -1856,7 +1643,7 @@ return /******/ (function(modules) { // webpackBootstrap
1856
1643
  }
1857
1644
  if (isSorted != null && typeof isSorted != 'boolean') {
1858
1645
  thisArg = iteratee;
1859
- iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
1646
+ iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;
1860
1647
  isSorted = false;
1861
1648
  }
1862
1649
  iteratee = iteratee == null ? iteratee : baseCallback(iteratee, thisArg, 3);
@@ -1869,457 +1656,254 @@ return /******/ (function(modules) { // webpackBootstrap
1869
1656
 
1870
1657
 
1871
1658
  /***/ },
1872
- /* 25 */
1659
+ /* 21 */
1873
1660
  /***/ function(module, exports, __webpack_require__) {
1874
1661
 
1662
+ var arrayMap = __webpack_require__(44),
1663
+ baseCallback = __webpack_require__(41),
1664
+ baseMap = __webpack_require__(45),
1665
+ isArray = __webpack_require__(46);
1666
+
1875
1667
  /**
1876
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1877
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1668
+ * Creates an array of values by running each element in `collection` through
1669
+ * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1670
+ * arguments: (value, index|key, collection).
1671
+ *
1672
+ * If a property name is provided for `iteratee` the created `_.property`
1673
+ * style callback returns the property value of the given element.
1674
+ *
1675
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1676
+ * style callback returns `true` for elements that have a matching property
1677
+ * value, else `false`.
1678
+ *
1679
+ * If an object is provided for `iteratee` the created `_.matches` style
1680
+ * callback returns `true` for elements that have the properties of the given
1681
+ * object, else `false`.
1682
+ *
1683
+ * Many lodash methods are guarded to work as iteratees for methods like
1684
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1685
+ *
1686
+ * The guarded methods are:
1687
+ * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
1688
+ * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
1689
+ * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
1690
+ * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
1691
+ * `sum`, `uniq`, and `words`
1878
1692
  *
1879
1693
  * @static
1880
1694
  * @memberOf _
1881
- * @category Lang
1882
- * @param {*} value The value to check.
1883
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1695
+ * @alias collect
1696
+ * @category Collection
1697
+ * @param {Array|Object|string} collection The collection to iterate over.
1698
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1699
+ * per iteration.
1700
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1701
+ * @returns {Array} Returns the new mapped array.
1884
1702
  * @example
1885
1703
  *
1886
- * _.isObject({});
1887
- * // => true
1704
+ * function timesThree(n) {
1705
+ * return n * 3;
1706
+ * }
1888
1707
  *
1889
- * _.isObject([1, 2, 3]);
1890
- * // => true
1708
+ * _.map([1, 2], timesThree);
1709
+ * // => [3, 6]
1891
1710
  *
1892
- * _.isObject(1);
1893
- * // => false
1711
+ * _.map({ 'a': 1, 'b': 2 }, timesThree);
1712
+ * // => [3, 6] (iteration order is not guaranteed)
1713
+ *
1714
+ * var users = [
1715
+ * { 'user': 'barney' },
1716
+ * { 'user': 'fred' }
1717
+ * ];
1718
+ *
1719
+ * // using the `_.property` callback shorthand
1720
+ * _.map(users, 'user');
1721
+ * // => ['barney', 'fred']
1894
1722
  */
1895
- function isObject(value) {
1896
- // Avoid a V8 JIT bug in Chrome 19-20.
1897
- // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1898
- var type = typeof value;
1899
- return type == 'function' || (!!value && type == 'object');
1723
+ function map(collection, iteratee, thisArg) {
1724
+ var func = isArray(collection) ? arrayMap : baseMap;
1725
+ iteratee = baseCallback(iteratee, thisArg, 3);
1726
+ return func(collection, iteratee);
1900
1727
  }
1901
1728
 
1902
- module.exports = isObject;
1729
+ module.exports = map;
1903
1730
 
1904
1731
 
1905
1732
  /***/ },
1906
- /* 26 */
1733
+ /* 22 */
1907
1734
  /***/ function(module, exports, __webpack_require__) {
1908
1735
 
1736
+ var arrayEach = __webpack_require__(47),
1737
+ baseEach = __webpack_require__(48),
1738
+ createForEach = __webpack_require__(49);
1739
+
1909
1740
  /**
1910
- * A specialized version of `_.map` for arrays without support for callback
1911
- * shorthands and `this` binding.
1741
+ * Iterates over elements of `collection` invoking `iteratee` for each element.
1742
+ * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1743
+ * (value, index|key, collection). Iteratee functions may exit iteration early
1744
+ * by explicitly returning `false`.
1912
1745
  *
1913
- * @private
1914
- * @param {Array} array The array to iterate over.
1915
- * @param {Function} iteratee The function invoked per iteration.
1916
- * @returns {Array} Returns the new mapped array.
1746
+ * **Note:** As with other "Collections" methods, objects with a "length" property
1747
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1748
+ * may be used for object iteration.
1749
+ *
1750
+ * @static
1751
+ * @memberOf _
1752
+ * @alias each
1753
+ * @category Collection
1754
+ * @param {Array|Object|string} collection The collection to iterate over.
1755
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1756
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1757
+ * @returns {Array|Object|string} Returns `collection`.
1758
+ * @example
1759
+ *
1760
+ * _([1, 2]).forEach(function(n) {
1761
+ * console.log(n);
1762
+ * }).value();
1763
+ * // => logs each value from left to right and returns the array
1764
+ *
1765
+ * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1766
+ * console.log(n, key);
1767
+ * });
1768
+ * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1917
1769
  */
1918
- function arrayMap(array, iteratee) {
1919
- var index = -1,
1920
- length = array.length,
1921
- result = Array(length);
1922
-
1923
- while (++index < length) {
1924
- result[index] = iteratee(array[index], index, array);
1925
- }
1926
- return result;
1927
- }
1770
+ var forEach = createForEach(arrayEach, baseEach);
1928
1771
 
1929
- module.exports = arrayMap;
1772
+ module.exports = forEach;
1930
1773
 
1931
1774
 
1932
1775
  /***/ },
1933
- /* 27 */
1776
+ /* 23 */
1934
1777
  /***/ function(module, exports, __webpack_require__) {
1935
1778
 
1936
- var baseMatches = __webpack_require__(54),
1937
- baseMatchesProperty = __webpack_require__(55),
1938
- bindCallback = __webpack_require__(40),
1939
- identity = __webpack_require__(56),
1940
- property = __webpack_require__(57);
1779
+ var getLength = __webpack_require__(50),
1780
+ isLength = __webpack_require__(51),
1781
+ keys = __webpack_require__(17);
1941
1782
 
1942
1783
  /**
1943
- * The base implementation of `_.callback` which supports specifying the
1944
- * number of arguments to provide to `func`.
1784
+ * Gets the size of `collection` by returning its length for array-like
1785
+ * values or the number of own enumerable properties for objects.
1945
1786
  *
1946
- * @private
1947
- * @param {*} [func=_.identity] The value to convert to a callback.
1948
- * @param {*} [thisArg] The `this` binding of `func`.
1949
- * @param {number} [argCount] The number of arguments to provide to `func`.
1950
- * @returns {Function} Returns the callback.
1787
+ * @static
1788
+ * @memberOf _
1789
+ * @category Collection
1790
+ * @param {Array|Object|string} collection The collection to inspect.
1791
+ * @returns {number} Returns the size of `collection`.
1792
+ * @example
1793
+ *
1794
+ * _.size([1, 2, 3]);
1795
+ * // => 3
1796
+ *
1797
+ * _.size({ 'a': 1, 'b': 2 });
1798
+ * // => 2
1799
+ *
1800
+ * _.size('pebbles');
1801
+ * // => 7
1951
1802
  */
1952
- function baseCallback(func, thisArg, argCount) {
1953
- var type = typeof func;
1954
- if (type == 'function') {
1955
- return thisArg === undefined
1956
- ? func
1957
- : bindCallback(func, thisArg, argCount);
1958
- }
1959
- if (func == null) {
1960
- return identity;
1961
- }
1962
- if (type == 'object') {
1963
- return baseMatches(func);
1964
- }
1965
- return thisArg === undefined
1966
- ? property(func)
1967
- : baseMatchesProperty(func, thisArg);
1803
+ function size(collection) {
1804
+ var length = collection ? getLength(collection) : 0;
1805
+ return isLength(length) ? length : keys(collection).length;
1968
1806
  }
1969
1807
 
1970
- module.exports = baseCallback;
1808
+ module.exports = size;
1971
1809
 
1972
1810
 
1973
1811
  /***/ },
1974
- /* 28 */
1812
+ /* 24 */
1975
1813
  /***/ function(module, exports, __webpack_require__) {
1976
1814
 
1977
- var baseEach = __webpack_require__(31),
1978
- isArrayLike = __webpack_require__(47);
1815
+ var arrayReduce = __webpack_require__(52),
1816
+ baseEach = __webpack_require__(48),
1817
+ createReduce = __webpack_require__(53);
1979
1818
 
1980
1819
  /**
1981
- * The base implementation of `_.map` without support for callback shorthands
1982
- * and `this` binding.
1983
- *
1984
- * @private
1985
- * @param {Array|Object|string} collection The collection to iterate over.
1986
- * @param {Function} iteratee The function invoked per iteration.
1987
- * @returns {Array} Returns the new mapped array.
1988
- */
1989
- function baseMap(collection, iteratee) {
1990
- var index = -1,
1991
- result = isArrayLike(collection) ? Array(collection.length) : [];
1992
-
1993
- baseEach(collection, function(value, key, collection) {
1994
- result[++index] = iteratee(value, key, collection);
1995
- });
1996
- return result;
1997
- }
1998
-
1999
- module.exports = baseMap;
2000
-
2001
-
2002
- /***/ },
2003
- /* 29 */
2004
- /***/ function(module, exports, __webpack_require__) {
2005
-
2006
- var isLength = __webpack_require__(36),
2007
- isNative = __webpack_require__(38),
2008
- isObjectLike = __webpack_require__(43);
2009
-
2010
- /** `Object#toString` result references. */
2011
- var arrayTag = '[object Array]';
2012
-
2013
- /** Used for native method references. */
2014
- var objectProto = Object.prototype;
2015
-
2016
- /**
2017
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2018
- * of values.
2019
- */
2020
- var objToString = objectProto.toString;
2021
-
2022
- /* Native method references for those with the same name as other `lodash` methods. */
2023
- var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
2024
-
2025
- /**
2026
- * Checks if `value` is classified as an `Array` object.
2027
- *
2028
- * @static
2029
- * @memberOf _
2030
- * @category Lang
2031
- * @param {*} value The value to check.
2032
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
2033
- * @example
2034
- *
2035
- * _.isArray([1, 2, 3]);
2036
- * // => true
1820
+ * Reduces `collection` to a value which is the accumulated result of running
1821
+ * each element in `collection` through `iteratee`, where each successive
1822
+ * invocation is supplied the return value of the previous. If `accumulator`
1823
+ * is not provided the first element of `collection` is used as the initial
1824
+ * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1825
+ * (accumulator, value, index|key, collection).
2037
1826
  *
2038
- * _.isArray(function() { return arguments; }());
2039
- * // => false
2040
- */
2041
- var isArray = nativeIsArray || function(value) {
2042
- return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2043
- };
2044
-
2045
- module.exports = isArray;
2046
-
2047
-
2048
- /***/ },
2049
- /* 30 */
2050
- /***/ function(module, exports, __webpack_require__) {
2051
-
2052
- /**
2053
- * A specialized version of `_.forEach` for arrays without support for callback
2054
- * shorthands and `this` binding.
1827
+ * Many lodash methods are guarded to work as iteratees for methods like
1828
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
2055
1829
  *
2056
- * @private
2057
- * @param {Array} array The array to iterate over.
2058
- * @param {Function} iteratee The function invoked per iteration.
2059
- * @returns {Array} Returns `array`.
2060
- */
2061
- function arrayEach(array, iteratee) {
2062
- var index = -1,
2063
- length = array.length;
2064
-
2065
- while (++index < length) {
2066
- if (iteratee(array[index], index, array) === false) {
2067
- break;
2068
- }
2069
- }
2070
- return array;
2071
- }
2072
-
2073
- module.exports = arrayEach;
2074
-
2075
-
2076
- /***/ },
2077
- /* 31 */
2078
- /***/ function(module, exports, __webpack_require__) {
2079
-
2080
- var baseForOwn = __webpack_require__(48),
2081
- createBaseEach = __webpack_require__(58);
2082
-
2083
- /**
2084
- * The base implementation of `_.forEach` without support for callback
2085
- * shorthands and `this` binding.
1830
+ * The guarded methods are:
1831
+ * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,
1832
+ * and `sortByOrder`
2086
1833
  *
2087
- * @private
1834
+ * @static
1835
+ * @memberOf _
1836
+ * @alias foldl, inject
1837
+ * @category Collection
2088
1838
  * @param {Array|Object|string} collection The collection to iterate over.
2089
- * @param {Function} iteratee The function invoked per iteration.
2090
- * @returns {Array|Object|string} Returns `collection`.
2091
- */
2092
- var baseEach = createBaseEach(baseForOwn);
2093
-
2094
- module.exports = baseEach;
2095
-
2096
-
2097
- /***/ },
2098
- /* 32 */
2099
- /***/ function(module, exports, __webpack_require__) {
2100
-
2101
- var bindCallback = __webpack_require__(40),
2102
- isArray = __webpack_require__(29);
2103
-
2104
- /**
2105
- * Creates a function for `_.forEach` or `_.forEachRight`.
2106
- *
2107
- * @private
2108
- * @param {Function} arrayFunc The function to iterate over an array.
2109
- * @param {Function} eachFunc The function to iterate over a collection.
2110
- * @returns {Function} Returns the new each function.
2111
- */
2112
- function createForEach(arrayFunc, eachFunc) {
2113
- return function(collection, iteratee, thisArg) {
2114
- return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2115
- ? arrayFunc(collection, iteratee)
2116
- : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
2117
- };
2118
- }
2119
-
2120
- module.exports = createForEach;
2121
-
2122
-
2123
- /***/ },
2124
- /* 33 */
2125
- /***/ function(module, exports, __webpack_require__) {
2126
-
2127
- /**
2128
- * A specialized version of `_.reduce` for arrays without support for callback
2129
- * shorthands and `this` binding.
2130
- *
2131
- * @private
2132
- * @param {Array} array The array to iterate over.
2133
- * @param {Function} iteratee The function invoked per iteration.
1839
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
2134
1840
  * @param {*} [accumulator] The initial value.
2135
- * @param {boolean} [initFromArray] Specify using the first element of `array`
2136
- * as the initial value.
1841
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
2137
1842
  * @returns {*} Returns the accumulated value.
2138
- */
2139
- function arrayReduce(array, iteratee, accumulator, initFromArray) {
2140
- var index = -1,
2141
- length = array.length;
2142
-
2143
- if (initFromArray && length) {
2144
- accumulator = array[++index];
2145
- }
2146
- while (++index < length) {
2147
- accumulator = iteratee(accumulator, array[index], index, array);
2148
- }
2149
- return accumulator;
2150
- }
2151
-
2152
- module.exports = arrayReduce;
2153
-
2154
-
2155
- /***/ },
2156
- /* 34 */
2157
- /***/ function(module, exports, __webpack_require__) {
2158
-
2159
- var baseCallback = __webpack_require__(27),
2160
- baseReduce = __webpack_require__(60),
2161
- isArray = __webpack_require__(29);
2162
-
2163
- /**
2164
- * Creates a function for `_.reduce` or `_.reduceRight`.
2165
- *
2166
- * @private
2167
- * @param {Function} arrayFunc The function to iterate over an array.
2168
- * @param {Function} eachFunc The function to iterate over a collection.
2169
- * @returns {Function} Returns the new each function.
2170
- */
2171
- function createReduce(arrayFunc, eachFunc) {
2172
- return function(collection, iteratee, accumulator, thisArg) {
2173
- var initFromArray = arguments.length < 3;
2174
- return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2175
- ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2176
- : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2177
- };
2178
- }
2179
-
2180
- module.exports = createReduce;
2181
-
2182
-
2183
- /***/ },
2184
- /* 35 */
2185
- /***/ function(module, exports, __webpack_require__) {
2186
-
2187
- var baseProperty = __webpack_require__(59);
2188
-
2189
- /**
2190
- * Gets the "length" property value of `object`.
2191
- *
2192
- * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
2193
- * that affects Safari on at least iOS 8.1-8.3 ARM64.
2194
- *
2195
- * @private
2196
- * @param {Object} object The object to query.
2197
- * @returns {*} Returns the "length" value.
2198
- */
2199
- var getLength = baseProperty('length');
2200
-
2201
- module.exports = getLength;
2202
-
2203
-
2204
- /***/ },
2205
- /* 36 */
2206
- /***/ function(module, exports, __webpack_require__) {
2207
-
2208
- /**
2209
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
2210
- * of an array-like value.
2211
- */
2212
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2213
-
2214
- /**
2215
- * Checks if `value` is a valid array-like length.
2216
- *
2217
- * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
1843
+ * @example
2218
1844
  *
2219
- * @private
2220
- * @param {*} value The value to check.
2221
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2222
- */
2223
- function isLength(value) {
2224
- return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2225
- }
2226
-
2227
- module.exports = isLength;
2228
-
2229
-
2230
- /***/ },
2231
- /* 37 */
2232
- /***/ function(module, exports, __webpack_require__) {
2233
-
2234
- /**
2235
- * The base implementation of `_.isFunction` without support for environments
2236
- * with incorrect `typeof` results.
1845
+ * _.reduce([1, 2], function(total, n) {
1846
+ * return total + n;
1847
+ * });
1848
+ * // => 3
2237
1849
  *
2238
- * @private
2239
- * @param {*} value The value to check.
2240
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
1850
+ * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1851
+ * result[key] = n * 3;
1852
+ * return result;
1853
+ * }, {});
1854
+ * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
2241
1855
  */
2242
- function baseIsFunction(value) {
2243
- // Avoid a Chakra JIT bug in compatibility modes of IE 11.
2244
- // See https://github.com/jashkenas/underscore/issues/1621 for more details.
2245
- return typeof value == 'function' || false;
2246
- }
1856
+ var reduce = createReduce(arrayReduce, baseEach);
2247
1857
 
2248
- module.exports = baseIsFunction;
1858
+ module.exports = reduce;
2249
1859
 
2250
1860
 
2251
1861
  /***/ },
2252
- /* 38 */
1862
+ /* 25 */
2253
1863
  /***/ function(module, exports, __webpack_require__) {
2254
1864
 
2255
- var escapeRegExp = __webpack_require__(61),
2256
- isObjectLike = __webpack_require__(43);
2257
-
2258
- /** `Object#toString` result references. */
2259
- var funcTag = '[object Function]';
2260
-
2261
- /** Used to detect host constructors (Safari > 5). */
2262
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
2263
-
2264
- /** Used for native method references. */
2265
- var objectProto = Object.prototype;
2266
-
2267
- /** Used to resolve the decompiled source of functions. */
2268
- var fnToString = Function.prototype.toString;
2269
-
2270
1865
  /**
2271
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2272
- * of values.
2273
- */
2274
- var objToString = objectProto.toString;
2275
-
2276
- /** Used to detect if a method is native. */
2277
- var reIsNative = RegExp('^' +
2278
- escapeRegExp(objToString)
2279
- .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2280
- );
2281
-
2282
- /**
2283
- * Checks if `value` is a native function.
1866
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1867
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2284
1868
  *
2285
1869
  * @static
2286
1870
  * @memberOf _
2287
1871
  * @category Lang
2288
1872
  * @param {*} value The value to check.
2289
- * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
1873
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
2290
1874
  * @example
2291
1875
  *
2292
- * _.isNative(Array.prototype.push);
1876
+ * _.isObject({});
2293
1877
  * // => true
2294
1878
  *
2295
- * _.isNative(_);
1879
+ * _.isObject([1, 2, 3]);
1880
+ * // => true
1881
+ *
1882
+ * _.isObject(1);
2296
1883
  * // => false
2297
1884
  */
2298
- function isNative(value) {
2299
- if (value == null) {
2300
- return false;
2301
- }
2302
- if (objToString.call(value) == funcTag) {
2303
- return reIsNative.test(fnToString.call(value));
2304
- }
2305
- return isObjectLike(value) && reIsHostCtor.test(value);
1885
+ function isObject(value) {
1886
+ // Avoid a V8 JIT bug in Chrome 19-20.
1887
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1888
+ var type = typeof value;
1889
+ return !!value && (type == 'object' || type == 'function');
2306
1890
  }
2307
1891
 
2308
- module.exports = isNative;
1892
+ module.exports = isObject;
2309
1893
 
2310
1894
 
2311
1895
  /***/ },
2312
- /* 39 */
1896
+ /* 26 */
2313
1897
  /***/ function(module, exports, __webpack_require__) {
2314
1898
 
2315
- var arrayCopy = __webpack_require__(62),
2316
- arrayEach = __webpack_require__(30),
2317
- baseAssign = __webpack_require__(63),
2318
- baseForOwn = __webpack_require__(48),
2319
- initCloneArray = __webpack_require__(64),
2320
- initCloneByTag = __webpack_require__(65),
2321
- initCloneObject = __webpack_require__(66),
2322
- isArray = __webpack_require__(29),
1899
+ var arrayCopy = __webpack_require__(54),
1900
+ arrayEach = __webpack_require__(47),
1901
+ baseAssign = __webpack_require__(55),
1902
+ baseForOwn = __webpack_require__(31),
1903
+ initCloneArray = __webpack_require__(56),
1904
+ initCloneByTag = __webpack_require__(57),
1905
+ initCloneObject = __webpack_require__(58),
1906
+ isArray = __webpack_require__(46),
2323
1907
  isObject = __webpack_require__(25);
2324
1908
 
2325
1909
  /** `Object#toString` result references. */
@@ -2367,7 +1951,7 @@ return /******/ (function(modules) { // webpackBootstrap
2367
1951
  var objectProto = Object.prototype;
2368
1952
 
2369
1953
  /**
2370
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
1954
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
2371
1955
  * of values.
2372
1956
  */
2373
1957
  var objToString = objectProto.toString;
@@ -2418,7 +2002,7 @@ return /******/ (function(modules) { // webpackBootstrap
2418
2002
  : (object ? value : {});
2419
2003
  }
2420
2004
  }
2421
- // Check for circular references and return corresponding clone.
2005
+ // Check for circular references and return its corresponding clone.
2422
2006
  stackA || (stackA = []);
2423
2007
  stackB || (stackB = []);
2424
2008
 
@@ -2439,143 +2023,305 @@ return /******/ (function(modules) { // webpackBootstrap
2439
2023
  return result;
2440
2024
  }
2441
2025
 
2442
- module.exports = baseClone;
2026
+ module.exports = baseClone;
2027
+
2028
+
2029
+ /***/ },
2030
+ /* 27 */
2031
+ /***/ function(module, exports, __webpack_require__) {
2032
+
2033
+ var identity = __webpack_require__(59);
2034
+
2035
+ /**
2036
+ * A specialized version of `baseCallback` which only supports `this` binding
2037
+ * and specifying the number of arguments to provide to `func`.
2038
+ *
2039
+ * @private
2040
+ * @param {Function} func The function to bind.
2041
+ * @param {*} thisArg The `this` binding of `func`.
2042
+ * @param {number} [argCount] The number of arguments to provide to `func`.
2043
+ * @returns {Function} Returns the callback.
2044
+ */
2045
+ function bindCallback(func, thisArg, argCount) {
2046
+ if (typeof func != 'function') {
2047
+ return identity;
2048
+ }
2049
+ if (thisArg === undefined) {
2050
+ return func;
2051
+ }
2052
+ switch (argCount) {
2053
+ case 1: return function(value) {
2054
+ return func.call(thisArg, value);
2055
+ };
2056
+ case 3: return function(value, index, collection) {
2057
+ return func.call(thisArg, value, index, collection);
2058
+ };
2059
+ case 4: return function(accumulator, value, index, collection) {
2060
+ return func.call(thisArg, accumulator, value, index, collection);
2061
+ };
2062
+ case 5: return function(value, other, key, object, source) {
2063
+ return func.call(thisArg, value, other, key, object, source);
2064
+ };
2065
+ }
2066
+ return function() {
2067
+ return func.apply(thisArg, arguments);
2068
+ };
2069
+ }
2070
+
2071
+ module.exports = bindCallback;
2072
+
2073
+
2074
+ /***/ },
2075
+ /* 28 */
2076
+ /***/ function(module, exports, __webpack_require__) {
2077
+
2078
+ var isArrayLike = __webpack_require__(34),
2079
+ isIndex = __webpack_require__(60),
2080
+ isObject = __webpack_require__(25);
2081
+
2082
+ /**
2083
+ * Checks if the provided arguments are from an iteratee call.
2084
+ *
2085
+ * @private
2086
+ * @param {*} value The potential iteratee value argument.
2087
+ * @param {*} index The potential iteratee index or key argument.
2088
+ * @param {*} object The potential iteratee object argument.
2089
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
2090
+ */
2091
+ function isIterateeCall(value, index, object) {
2092
+ if (!isObject(object)) {
2093
+ return false;
2094
+ }
2095
+ var type = typeof index;
2096
+ if (type == 'number'
2097
+ ? (isArrayLike(object) && isIndex(index, object.length))
2098
+ : (type == 'string' && index in object)) {
2099
+ var other = object[index];
2100
+ return value === value ? (value === other) : (other !== other);
2101
+ }
2102
+ return false;
2103
+ }
2104
+
2105
+ module.exports = isIterateeCall;
2106
+
2107
+
2108
+ /***/ },
2109
+ /* 29 */
2110
+ /***/ function(module, exports, __webpack_require__) {
2111
+
2112
+ /**
2113
+ * Checks if `value` is object-like.
2114
+ *
2115
+ * @private
2116
+ * @param {*} value The value to check.
2117
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2118
+ */
2119
+ function isObjectLike(value) {
2120
+ return !!value && typeof value == 'object';
2121
+ }
2122
+
2123
+ module.exports = isObjectLike;
2124
+
2125
+
2126
+ /***/ },
2127
+ /* 30 */
2128
+ /***/ function(module, exports, __webpack_require__) {
2129
+
2130
+ var baseCallback = __webpack_require__(41),
2131
+ baseForOwn = __webpack_require__(31);
2132
+
2133
+ /**
2134
+ * Creates a function for `_.mapKeys` or `_.mapValues`.
2135
+ *
2136
+ * @private
2137
+ * @param {boolean} [isMapKeys] Specify mapping keys instead of values.
2138
+ * @returns {Function} Returns the new map function.
2139
+ */
2140
+ function createObjectMapper(isMapKeys) {
2141
+ return function(object, iteratee, thisArg) {
2142
+ var result = {};
2143
+ iteratee = baseCallback(iteratee, thisArg, 3);
2144
+
2145
+ baseForOwn(object, function(value, key, object) {
2146
+ var mapped = iteratee(value, key, object);
2147
+ key = isMapKeys ? mapped : key;
2148
+ value = isMapKeys ? value : mapped;
2149
+ result[key] = value;
2150
+ });
2151
+ return result;
2152
+ };
2153
+ }
2154
+
2155
+ module.exports = createObjectMapper;
2156
+
2157
+
2158
+ /***/ },
2159
+ /* 31 */
2160
+ /***/ function(module, exports, __webpack_require__) {
2161
+
2162
+ var baseFor = __webpack_require__(61),
2163
+ keys = __webpack_require__(17);
2164
+
2165
+ /**
2166
+ * The base implementation of `_.forOwn` without support for callback
2167
+ * shorthands and `this` binding.
2168
+ *
2169
+ * @private
2170
+ * @param {Object} object The object to iterate over.
2171
+ * @param {Function} iteratee The function invoked per iteration.
2172
+ * @returns {Object} Returns `object`.
2173
+ */
2174
+ function baseForOwn(object, iteratee) {
2175
+ return baseFor(object, iteratee, keys);
2176
+ }
2177
+
2178
+ module.exports = baseForOwn;
2179
+
2180
+
2181
+ /***/ },
2182
+ /* 32 */
2183
+ /***/ function(module, exports, __webpack_require__) {
2184
+
2185
+ var bindCallback = __webpack_require__(27);
2186
+
2187
+ /**
2188
+ * Creates a function for `_.forOwn` or `_.forOwnRight`.
2189
+ *
2190
+ * @private
2191
+ * @param {Function} objectFunc The function to iterate over an object.
2192
+ * @returns {Function} Returns the new each function.
2193
+ */
2194
+ function createForOwn(objectFunc) {
2195
+ return function(object, iteratee, thisArg) {
2196
+ if (typeof iteratee != 'function' || thisArg !== undefined) {
2197
+ iteratee = bindCallback(iteratee, thisArg, 3);
2198
+ }
2199
+ return objectFunc(object, iteratee);
2200
+ };
2201
+ }
2202
+
2203
+ module.exports = createForOwn;
2443
2204
 
2444
2205
 
2445
2206
  /***/ },
2446
- /* 40 */
2207
+ /* 33 */
2447
2208
  /***/ function(module, exports, __webpack_require__) {
2448
2209
 
2449
- var identity = __webpack_require__(56);
2210
+ var isNative = __webpack_require__(62);
2450
2211
 
2451
2212
  /**
2452
- * A specialized version of `baseCallback` which only supports `this` binding
2453
- * and specifying the number of arguments to provide to `func`.
2213
+ * Gets the native function at `key` of `object`.
2454
2214
  *
2455
2215
  * @private
2456
- * @param {Function} func The function to bind.
2457
- * @param {*} thisArg The `this` binding of `func`.
2458
- * @param {number} [argCount] The number of arguments to provide to `func`.
2459
- * @returns {Function} Returns the callback.
2216
+ * @param {Object} object The object to query.
2217
+ * @param {string} key The key of the method to get.
2218
+ * @returns {*} Returns the function if it's native, else `undefined`.
2460
2219
  */
2461
- function bindCallback(func, thisArg, argCount) {
2462
- if (typeof func != 'function') {
2463
- return identity;
2464
- }
2465
- if (thisArg === undefined) {
2466
- return func;
2467
- }
2468
- switch (argCount) {
2469
- case 1: return function(value) {
2470
- return func.call(thisArg, value);
2471
- };
2472
- case 3: return function(value, index, collection) {
2473
- return func.call(thisArg, value, index, collection);
2474
- };
2475
- case 4: return function(accumulator, value, index, collection) {
2476
- return func.call(thisArg, accumulator, value, index, collection);
2477
- };
2478
- case 5: return function(value, other, key, object, source) {
2479
- return func.call(thisArg, value, other, key, object, source);
2480
- };
2481
- }
2482
- return function() {
2483
- return func.apply(thisArg, arguments);
2484
- };
2220
+ function getNative(object, key) {
2221
+ var value = object == null ? undefined : object[key];
2222
+ return isNative(value) ? value : undefined;
2485
2223
  }
2486
2224
 
2487
- module.exports = bindCallback;
2225
+ module.exports = getNative;
2488
2226
 
2489
2227
 
2490
2228
  /***/ },
2491
- /* 41 */
2229
+ /* 34 */
2492
2230
  /***/ function(module, exports, __webpack_require__) {
2493
2231
 
2494
- var isArrayLike = __webpack_require__(47),
2495
- isIndex = __webpack_require__(67),
2496
- isObject = __webpack_require__(25);
2232
+ var getLength = __webpack_require__(50),
2233
+ isLength = __webpack_require__(51);
2497
2234
 
2498
2235
  /**
2499
- * Checks if the provided arguments are from an iteratee call.
2236
+ * Checks if `value` is array-like.
2500
2237
  *
2501
2238
  * @private
2502
- * @param {*} value The potential iteratee value argument.
2503
- * @param {*} index The potential iteratee index or key argument.
2504
- * @param {*} object The potential iteratee object argument.
2505
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
2239
+ * @param {*} value The value to check.
2240
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2506
2241
  */
2507
- function isIterateeCall(value, index, object) {
2508
- if (!isObject(object)) {
2509
- return false;
2510
- }
2511
- var type = typeof index;
2512
- if (type == 'number'
2513
- ? (isArrayLike(object) && isIndex(index, object.length))
2514
- : (type == 'string' && index in object)) {
2515
- var other = object[index];
2516
- return value === value ? (value === other) : (other !== other);
2517
- }
2518
- return false;
2242
+ function isArrayLike(value) {
2243
+ return value != null && isLength(getLength(value));
2519
2244
  }
2520
2245
 
2521
- module.exports = isIterateeCall;
2246
+ module.exports = isArrayLike;
2522
2247
 
2523
2248
 
2524
2249
  /***/ },
2525
- /* 42 */
2250
+ /* 35 */
2526
2251
  /***/ function(module, exports, __webpack_require__) {
2527
2252
 
2528
- var baseCallback = __webpack_require__(27),
2529
- baseForOwn = __webpack_require__(48);
2253
+ var isArguments = __webpack_require__(63),
2254
+ isArray = __webpack_require__(46),
2255
+ isIndex = __webpack_require__(60),
2256
+ isLength = __webpack_require__(51),
2257
+ keysIn = __webpack_require__(64);
2258
+
2259
+ /** Used for native method references. */
2260
+ var objectProto = Object.prototype;
2261
+
2262
+ /** Used to check objects for own properties. */
2263
+ var hasOwnProperty = objectProto.hasOwnProperty;
2530
2264
 
2531
2265
  /**
2532
- * Creates a function for `_.mapKeys` or `_.mapValues`.
2266
+ * A fallback implementation of `Object.keys` which creates an array of the
2267
+ * own enumerable property names of `object`.
2533
2268
  *
2534
2269
  * @private
2535
- * @param {boolean} [isMapKeys] Specify mapping keys instead of values.
2536
- * @returns {Function} Returns the new map function.
2270
+ * @param {Object} object The object to query.
2271
+ * @returns {Array} Returns the array of property names.
2537
2272
  */
2538
- function createObjectMapper(isMapKeys) {
2539
- return function(object, iteratee, thisArg) {
2540
- var result = {};
2541
- iteratee = baseCallback(iteratee, thisArg, 3);
2273
+ function shimKeys(object) {
2274
+ var props = keysIn(object),
2275
+ propsLength = props.length,
2276
+ length = propsLength && object.length;
2542
2277
 
2543
- baseForOwn(object, function(value, key, object) {
2544
- var mapped = iteratee(value, key, object);
2545
- key = isMapKeys ? mapped : key;
2546
- value = isMapKeys ? value : mapped;
2547
- result[key] = value;
2548
- });
2549
- return result;
2550
- };
2278
+ var allowIndexes = !!length && isLength(length) &&
2279
+ (isArray(object) || isArguments(object));
2280
+
2281
+ var index = -1,
2282
+ result = [];
2283
+
2284
+ while (++index < propsLength) {
2285
+ var key = props[index];
2286
+ if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2287
+ result.push(key);
2288
+ }
2289
+ }
2290
+ return result;
2551
2291
  }
2552
2292
 
2553
- module.exports = createObjectMapper;
2293
+ module.exports = shimKeys;
2554
2294
 
2555
2295
 
2556
2296
  /***/ },
2557
- /* 43 */
2297
+ /* 36 */
2558
2298
  /***/ function(module, exports, __webpack_require__) {
2559
2299
 
2300
+ var baseCallback = __webpack_require__(41),
2301
+ baseFind = __webpack_require__(65);
2302
+
2560
2303
  /**
2561
- * Checks if `value` is object-like.
2304
+ * Creates a `_.findKey` or `_.findLastKey` function.
2562
2305
  *
2563
2306
  * @private
2564
- * @param {*} value The value to check.
2565
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2307
+ * @param {Function} objectFunc The function to iterate over an object.
2308
+ * @returns {Function} Returns the new find function.
2566
2309
  */
2567
- function isObjectLike(value) {
2568
- return !!value && typeof value == 'object';
2310
+ function createFindKey(objectFunc) {
2311
+ return function(object, predicate, thisArg) {
2312
+ predicate = baseCallback(predicate, thisArg, 3);
2313
+ return baseFind(object, predicate, objectFunc, true);
2314
+ };
2569
2315
  }
2570
2316
 
2571
- module.exports = isObjectLike;
2317
+ module.exports = createFindKey;
2572
2318
 
2573
2319
 
2574
2320
  /***/ },
2575
- /* 44 */
2321
+ /* 37 */
2576
2322
  /***/ function(module, exports, __webpack_require__) {
2577
2323
 
2578
- var indexOfNaN = __webpack_require__(68);
2324
+ var indexOfNaN = __webpack_require__(66);
2579
2325
 
2580
2326
  /**
2581
2327
  * The base implementation of `_.indexOf` without support for binary searches.
@@ -2605,7 +2351,7 @@ return /******/ (function(modules) { // webpackBootstrap
2605
2351
 
2606
2352
 
2607
2353
  /***/ },
2608
- /* 45 */
2354
+ /* 38 */
2609
2355
  /***/ function(module, exports, __webpack_require__) {
2610
2356
 
2611
2357
  var isObject = __webpack_require__(25);
@@ -2630,18 +2376,17 @@ return /******/ (function(modules) { // webpackBootstrap
2630
2376
 
2631
2377
 
2632
2378
  /***/ },
2633
- /* 46 */
2379
+ /* 39 */
2634
2380
  /***/ function(module, exports, __webpack_require__) {
2635
2381
 
2636
- /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(69),
2637
- constant = __webpack_require__(70),
2638
- isNative = __webpack_require__(38);
2382
+ /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(67),
2383
+ getNative = __webpack_require__(33);
2639
2384
 
2640
2385
  /** Native method references. */
2641
- var Set = isNative(Set = global.Set) && Set;
2386
+ var Set = getNative(global, 'Set');
2642
2387
 
2643
2388
  /* Native method references for those with the same name as other `lodash` methods. */
2644
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
2389
+ var nativeCreate = getNative(Object, 'create');
2645
2390
 
2646
2391
  /**
2647
2392
  * Creates a `Set` cache object to optimize linear searches of large arrays.
@@ -2650,162 +2395,129 @@ return /******/ (function(modules) { // webpackBootstrap
2650
2395
  * @param {Array} [values] The values to cache.
2651
2396
  * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
2652
2397
  */
2653
- var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
2654
- return new SetCache(values);
2655
- };
2398
+ function createCache(values) {
2399
+ return (nativeCreate && Set) ? new SetCache(values) : null;
2400
+ }
2656
2401
 
2657
2402
  module.exports = createCache;
2658
2403
 
2659
2404
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2660
2405
 
2661
2406
  /***/ },
2662
- /* 47 */
2407
+ /* 40 */
2663
2408
  /***/ function(module, exports, __webpack_require__) {
2664
2409
 
2665
- var getLength = __webpack_require__(35),
2666
- isLength = __webpack_require__(36);
2667
-
2668
- /**
2669
- * Checks if `value` is array-like.
2670
- *
2671
- * @private
2672
- * @param {*} value The value to check.
2673
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2674
- */
2675
- function isArrayLike(value) {
2676
- return value != null && isLength(getLength(value));
2677
- }
2410
+ /** Used as the `TypeError` message for "Functions" methods. */
2411
+ var FUNC_ERROR_TEXT = 'Expected a function';
2678
2412
 
2679
- module.exports = isArrayLike;
2680
-
2681
-
2682
- /***/ },
2683
- /* 48 */
2684
- /***/ function(module, exports, __webpack_require__) {
2685
-
2686
- var baseFor = __webpack_require__(71),
2687
- keys = __webpack_require__(21);
2413
+ /* Native method references for those with the same name as other `lodash` methods. */
2414
+ var nativeMax = Math.max;
2688
2415
 
2689
2416
  /**
2690
- * The base implementation of `_.forOwn` without support for callback
2691
- * shorthands and `this` binding.
2417
+ * Creates a function that invokes `func` with the `this` binding of the
2418
+ * created function and arguments from `start` and beyond provided as an array.
2692
2419
  *
2693
- * @private
2694
- * @param {Object} object The object to iterate over.
2695
- * @param {Function} iteratee The function invoked per iteration.
2696
- * @returns {Object} Returns `object`.
2697
- */
2698
- function baseForOwn(object, iteratee) {
2699
- return baseFor(object, iteratee, keys);
2700
- }
2701
-
2702
- module.exports = baseForOwn;
2703
-
2704
-
2705
- /***/ },
2706
- /* 49 */
2707
- /***/ function(module, exports, __webpack_require__) {
2708
-
2709
- var bindCallback = __webpack_require__(40);
2710
-
2711
- /**
2712
- * Creates a function for `_.forOwn` or `_.forOwnRight`.
2420
+ * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).
2713
2421
  *
2714
- * @private
2715
- * @param {Function} objectFunc The function to iterate over an object.
2716
- * @returns {Function} Returns the new each function.
2717
- */
2718
- function createForOwn(objectFunc) {
2719
- return function(object, iteratee, thisArg) {
2720
- if (typeof iteratee != 'function' || thisArg !== undefined) {
2721
- iteratee = bindCallback(iteratee, thisArg, 3);
2722
- }
2723
- return objectFunc(object, iteratee);
2724
- };
2725
- }
2726
-
2727
- module.exports = createForOwn;
2728
-
2729
-
2730
- /***/ },
2731
- /* 50 */
2732
- /***/ function(module, exports, __webpack_require__) {
2733
-
2734
- var baseCallback = __webpack_require__(27),
2735
- baseFind = __webpack_require__(72);
2736
-
2737
- /**
2738
- * Creates a `_.findKey` or `_.findLastKey` function.
2422
+ * @static
2423
+ * @memberOf _
2424
+ * @category Function
2425
+ * @param {Function} func The function to apply a rest parameter to.
2426
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
2427
+ * @returns {Function} Returns the new function.
2428
+ * @example
2739
2429
  *
2740
- * @private
2741
- * @param {Function} objectFunc The function to iterate over an object.
2742
- * @returns {Function} Returns the new find function.
2430
+ * var say = _.restParam(function(what, names) {
2431
+ * return what + ' ' + _.initial(names).join(', ') +
2432
+ * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
2433
+ * });
2434
+ *
2435
+ * say('hello', 'fred', 'barney', 'pebbles');
2436
+ * // => 'hello fred, barney, & pebbles'
2743
2437
  */
2744
- function createFindKey(objectFunc) {
2745
- return function(object, predicate, thisArg) {
2746
- predicate = baseCallback(predicate, thisArg, 3);
2747
- return baseFind(object, predicate, objectFunc, true);
2438
+ function restParam(func, start) {
2439
+ if (typeof func != 'function') {
2440
+ throw new TypeError(FUNC_ERROR_TEXT);
2441
+ }
2442
+ start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
2443
+ return function() {
2444
+ var args = arguments,
2445
+ index = -1,
2446
+ length = nativeMax(args.length - start, 0),
2447
+ rest = Array(length);
2448
+
2449
+ while (++index < length) {
2450
+ rest[index] = args[start + index];
2451
+ }
2452
+ switch (start) {
2453
+ case 0: return func.call(this, rest);
2454
+ case 1: return func.call(this, args[0], rest);
2455
+ case 2: return func.call(this, args[0], args[1], rest);
2456
+ }
2457
+ var otherArgs = Array(start + 1);
2458
+ index = -1;
2459
+ while (++index < start) {
2460
+ otherArgs[index] = args[index];
2461
+ }
2462
+ otherArgs[start] = rest;
2463
+ return func.apply(this, otherArgs);
2748
2464
  };
2749
2465
  }
2750
2466
 
2751
- module.exports = createFindKey;
2467
+ module.exports = restParam;
2752
2468
 
2753
2469
 
2754
2470
  /***/ },
2755
- /* 51 */
2471
+ /* 41 */
2756
2472
  /***/ function(module, exports, __webpack_require__) {
2757
2473
 
2758
- var isArguments = __webpack_require__(73),
2759
- isArray = __webpack_require__(29),
2760
- isIndex = __webpack_require__(67),
2761
- isLength = __webpack_require__(36),
2762
- keysIn = __webpack_require__(74),
2763
- support = __webpack_require__(75);
2764
-
2765
- /** Used for native method references. */
2766
- var objectProto = Object.prototype;
2767
-
2768
- /** Used to check objects for own properties. */
2769
- var hasOwnProperty = objectProto.hasOwnProperty;
2474
+ var baseMatches = __webpack_require__(68),
2475
+ baseMatchesProperty = __webpack_require__(69),
2476
+ bindCallback = __webpack_require__(27),
2477
+ identity = __webpack_require__(59),
2478
+ property = __webpack_require__(70);
2770
2479
 
2771
2480
  /**
2772
- * A fallback implementation of `Object.keys` which creates an array of the
2773
- * own enumerable property names of `object`.
2774
- *
2775
- * @private
2776
- * @param {Object} object The object to query.
2777
- * @returns {Array} Returns the array of property names.
2778
- */
2779
- function shimKeys(object) {
2780
- var props = keysIn(object),
2781
- propsLength = props.length,
2782
- length = propsLength && object.length;
2783
-
2784
- var allowIndexes = length && isLength(length) &&
2785
- (isArray(object) || (support.nonEnumArgs && isArguments(object)));
2786
-
2787
- var index = -1,
2788
- result = [];
2789
-
2790
- while (++index < propsLength) {
2791
- var key = props[index];
2792
- if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2793
- result.push(key);
2794
- }
2481
+ * The base implementation of `_.callback` which supports specifying the
2482
+ * number of arguments to provide to `func`.
2483
+ *
2484
+ * @private
2485
+ * @param {*} [func=_.identity] The value to convert to a callback.
2486
+ * @param {*} [thisArg] The `this` binding of `func`.
2487
+ * @param {number} [argCount] The number of arguments to provide to `func`.
2488
+ * @returns {Function} Returns the callback.
2489
+ */
2490
+ function baseCallback(func, thisArg, argCount) {
2491
+ var type = typeof func;
2492
+ if (type == 'function') {
2493
+ return thisArg === undefined
2494
+ ? func
2495
+ : bindCallback(func, thisArg, argCount);
2795
2496
  }
2796
- return result;
2497
+ if (func == null) {
2498
+ return identity;
2499
+ }
2500
+ if (type == 'object') {
2501
+ return baseMatches(func);
2502
+ }
2503
+ return thisArg === undefined
2504
+ ? property(func)
2505
+ : baseMatchesProperty(func, thisArg);
2797
2506
  }
2798
2507
 
2799
- module.exports = shimKeys;
2508
+ module.exports = baseCallback;
2800
2509
 
2801
2510
 
2802
2511
  /***/ },
2803
- /* 52 */
2512
+ /* 42 */
2804
2513
  /***/ function(module, exports, __webpack_require__) {
2805
2514
 
2806
- var baseIndexOf = __webpack_require__(44),
2807
- cacheIndexOf = __webpack_require__(45),
2808
- createCache = __webpack_require__(46);
2515
+ var baseIndexOf = __webpack_require__(37),
2516
+ cacheIndexOf = __webpack_require__(38),
2517
+ createCache = __webpack_require__(39);
2518
+
2519
+ /** Used as the size to enable large array optimizations. */
2520
+ var LARGE_ARRAY_SIZE = 200;
2809
2521
 
2810
2522
  /**
2811
2523
  * The base implementation of `_.uniq` without support for callback shorthands
@@ -2814,14 +2526,14 @@ return /******/ (function(modules) { // webpackBootstrap
2814
2526
  * @private
2815
2527
  * @param {Array} array The array to inspect.
2816
2528
  * @param {Function} [iteratee] The function invoked per iteration.
2817
- * @returns {Array} Returns the new duplicate-value-free array.
2529
+ * @returns {Array} Returns the new duplicate free array.
2818
2530
  */
2819
2531
  function baseUniq(array, iteratee) {
2820
2532
  var index = -1,
2821
2533
  indexOf = baseIndexOf,
2822
2534
  length = array.length,
2823
2535
  isCommon = true,
2824
- isLarge = isCommon && length >= 200,
2536
+ isLarge = isCommon && length >= LARGE_ARRAY_SIZE,
2825
2537
  seen = isLarge ? createCache() : null,
2826
2538
  result = [];
2827
2539
 
@@ -2863,7 +2575,7 @@ return /******/ (function(modules) { // webpackBootstrap
2863
2575
 
2864
2576
 
2865
2577
  /***/ },
2866
- /* 53 */
2578
+ /* 43 */
2867
2579
  /***/ function(module, exports, __webpack_require__) {
2868
2580
 
2869
2581
  /**
@@ -2873,7 +2585,7 @@ return /******/ (function(modules) { // webpackBootstrap
2873
2585
  * @private
2874
2586
  * @param {Array} array The array to inspect.
2875
2587
  * @param {Function} [iteratee] The function invoked per iteration.
2876
- * @returns {Array} Returns the new duplicate-value-free array.
2588
+ * @returns {Array} Returns the new duplicate free array.
2877
2589
  */
2878
2590
  function sortedUniq(array, iteratee) {
2879
2591
  var seen,
@@ -2898,300 +2610,291 @@ return /******/ (function(modules) { // webpackBootstrap
2898
2610
 
2899
2611
 
2900
2612
  /***/ },
2901
- /* 54 */
2613
+ /* 44 */
2902
2614
  /***/ function(module, exports, __webpack_require__) {
2903
2615
 
2904
- var baseIsMatch = __webpack_require__(76),
2905
- constant = __webpack_require__(70),
2906
- isStrictComparable = __webpack_require__(77),
2907
- keys = __webpack_require__(21),
2908
- toObject = __webpack_require__(78);
2909
-
2910
2616
  /**
2911
- * The base implementation of `_.matches` which does not clone `source`.
2617
+ * A specialized version of `_.map` for arrays without support for callback
2618
+ * shorthands and `this` binding.
2912
2619
  *
2913
2620
  * @private
2914
- * @param {Object} source The object of property values to match.
2915
- * @returns {Function} Returns the new function.
2621
+ * @param {Array} array The array to iterate over.
2622
+ * @param {Function} iteratee The function invoked per iteration.
2623
+ * @returns {Array} Returns the new mapped array.
2916
2624
  */
2917
- function baseMatches(source) {
2918
- var props = keys(source),
2919
- length = props.length;
2920
-
2921
- if (!length) {
2922
- return constant(true);
2923
- }
2924
- if (length == 1) {
2925
- var key = props[0],
2926
- value = source[key];
2927
-
2928
- if (isStrictComparable(value)) {
2929
- return function(object) {
2930
- if (object == null) {
2931
- return false;
2932
- }
2933
- return object[key] === value && (value !== undefined || (key in toObject(object)));
2934
- };
2935
- }
2936
- }
2937
- var values = Array(length),
2938
- strictCompareFlags = Array(length);
2625
+ function arrayMap(array, iteratee) {
2626
+ var index = -1,
2627
+ length = array.length,
2628
+ result = Array(length);
2939
2629
 
2940
- while (length--) {
2941
- value = source[props[length]];
2942
- values[length] = value;
2943
- strictCompareFlags[length] = isStrictComparable(value);
2630
+ while (++index < length) {
2631
+ result[index] = iteratee(array[index], index, array);
2944
2632
  }
2945
- return function(object) {
2946
- return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags);
2947
- };
2633
+ return result;
2948
2634
  }
2949
2635
 
2950
- module.exports = baseMatches;
2636
+ module.exports = arrayMap;
2951
2637
 
2952
2638
 
2953
2639
  /***/ },
2954
- /* 55 */
2640
+ /* 45 */
2955
2641
  /***/ function(module, exports, __webpack_require__) {
2956
2642
 
2957
- var baseGet = __webpack_require__(79),
2958
- baseIsEqual = __webpack_require__(80),
2959
- baseSlice = __webpack_require__(81),
2960
- isArray = __webpack_require__(29),
2961
- isKey = __webpack_require__(82),
2962
- isStrictComparable = __webpack_require__(77),
2963
- last = __webpack_require__(83),
2964
- toObject = __webpack_require__(78),
2965
- toPath = __webpack_require__(84);
2643
+ var baseEach = __webpack_require__(48),
2644
+ isArrayLike = __webpack_require__(34);
2966
2645
 
2967
2646
  /**
2968
- * The base implementation of `_.matchesProperty` which does not which does
2969
- * not clone `value`.
2647
+ * The base implementation of `_.map` without support for callback shorthands
2648
+ * and `this` binding.
2970
2649
  *
2971
2650
  * @private
2972
- * @param {string} path The path of the property to get.
2973
- * @param {*} value The value to compare.
2974
- * @returns {Function} Returns the new function.
2651
+ * @param {Array|Object|string} collection The collection to iterate over.
2652
+ * @param {Function} iteratee The function invoked per iteration.
2653
+ * @returns {Array} Returns the new mapped array.
2975
2654
  */
2976
- function baseMatchesProperty(path, value) {
2977
- var isArr = isArray(path),
2978
- isCommon = isKey(path) && isStrictComparable(value),
2979
- pathKey = (path + '');
2655
+ function baseMap(collection, iteratee) {
2656
+ var index = -1,
2657
+ result = isArrayLike(collection) ? Array(collection.length) : [];
2980
2658
 
2981
- path = toPath(path);
2982
- return function(object) {
2983
- if (object == null) {
2984
- return false;
2985
- }
2986
- var key = pathKey;
2987
- object = toObject(object);
2988
- if ((isArr || !isCommon) && !(key in object)) {
2989
- object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
2990
- if (object == null) {
2991
- return false;
2992
- }
2993
- key = last(path);
2994
- object = toObject(object);
2995
- }
2996
- return object[key] === value
2997
- ? (value !== undefined || (key in object))
2998
- : baseIsEqual(value, object[key], null, true);
2999
- };
2659
+ baseEach(collection, function(value, key, collection) {
2660
+ result[++index] = iteratee(value, key, collection);
2661
+ });
2662
+ return result;
3000
2663
  }
3001
2664
 
3002
- module.exports = baseMatchesProperty;
2665
+ module.exports = baseMap;
3003
2666
 
3004
2667
 
3005
2668
  /***/ },
3006
- /* 56 */
2669
+ /* 46 */
3007
2670
  /***/ function(module, exports, __webpack_require__) {
3008
2671
 
2672
+ var getNative = __webpack_require__(33),
2673
+ isLength = __webpack_require__(51),
2674
+ isObjectLike = __webpack_require__(29);
2675
+
2676
+ /** `Object#toString` result references. */
2677
+ var arrayTag = '[object Array]';
2678
+
2679
+ /** Used for native method references. */
2680
+ var objectProto = Object.prototype;
2681
+
3009
2682
  /**
3010
- * This method returns the first argument provided to it.
2683
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
2684
+ * of values.
2685
+ */
2686
+ var objToString = objectProto.toString;
2687
+
2688
+ /* Native method references for those with the same name as other `lodash` methods. */
2689
+ var nativeIsArray = getNative(Array, 'isArray');
2690
+
2691
+ /**
2692
+ * Checks if `value` is classified as an `Array` object.
3011
2693
  *
3012
2694
  * @static
3013
2695
  * @memberOf _
3014
- * @category Utility
3015
- * @param {*} value Any value.
3016
- * @returns {*} Returns `value`.
2696
+ * @category Lang
2697
+ * @param {*} value The value to check.
2698
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3017
2699
  * @example
3018
2700
  *
3019
- * var object = { 'user': 'fred' };
3020
- *
3021
- * _.identity(object) === object;
2701
+ * _.isArray([1, 2, 3]);
3022
2702
  * // => true
2703
+ *
2704
+ * _.isArray(function() { return arguments; }());
2705
+ * // => false
3023
2706
  */
3024
- function identity(value) {
3025
- return value;
2707
+ var isArray = nativeIsArray || function(value) {
2708
+ return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2709
+ };
2710
+
2711
+ module.exports = isArray;
2712
+
2713
+
2714
+ /***/ },
2715
+ /* 47 */
2716
+ /***/ function(module, exports, __webpack_require__) {
2717
+
2718
+ /**
2719
+ * A specialized version of `_.forEach` for arrays without support for callback
2720
+ * shorthands and `this` binding.
2721
+ *
2722
+ * @private
2723
+ * @param {Array} array The array to iterate over.
2724
+ * @param {Function} iteratee The function invoked per iteration.
2725
+ * @returns {Array} Returns `array`.
2726
+ */
2727
+ function arrayEach(array, iteratee) {
2728
+ var index = -1,
2729
+ length = array.length;
2730
+
2731
+ while (++index < length) {
2732
+ if (iteratee(array[index], index, array) === false) {
2733
+ break;
2734
+ }
2735
+ }
2736
+ return array;
3026
2737
  }
3027
2738
 
3028
- module.exports = identity;
2739
+ module.exports = arrayEach;
3029
2740
 
3030
2741
 
3031
2742
  /***/ },
3032
- /* 57 */
2743
+ /* 48 */
3033
2744
  /***/ function(module, exports, __webpack_require__) {
3034
2745
 
3035
- var baseProperty = __webpack_require__(59),
3036
- basePropertyDeep = __webpack_require__(85),
3037
- isKey = __webpack_require__(82);
2746
+ var baseForOwn = __webpack_require__(31),
2747
+ createBaseEach = __webpack_require__(71);
3038
2748
 
3039
2749
  /**
3040
- * Creates a function which returns the property value at `path` on a
3041
- * given object.
3042
- *
3043
- * @static
3044
- * @memberOf _
3045
- * @category Utility
3046
- * @param {Array|string} path The path of the property to get.
3047
- * @returns {Function} Returns the new function.
3048
- * @example
3049
- *
3050
- * var objects = [
3051
- * { 'a': { 'b': { 'c': 2 } } },
3052
- * { 'a': { 'b': { 'c': 1 } } }
3053
- * ];
3054
- *
3055
- * _.map(objects, _.property('a.b.c'));
3056
- * // => [2, 1]
2750
+ * The base implementation of `_.forEach` without support for callback
2751
+ * shorthands and `this` binding.
3057
2752
  *
3058
- * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
3059
- * // => [1, 2]
2753
+ * @private
2754
+ * @param {Array|Object|string} collection The collection to iterate over.
2755
+ * @param {Function} iteratee The function invoked per iteration.
2756
+ * @returns {Array|Object|string} Returns `collection`.
3060
2757
  */
3061
- function property(path) {
3062
- return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
3063
- }
2758
+ var baseEach = createBaseEach(baseForOwn);
3064
2759
 
3065
- module.exports = property;
2760
+ module.exports = baseEach;
3066
2761
 
3067
2762
 
3068
2763
  /***/ },
3069
- /* 58 */
2764
+ /* 49 */
3070
2765
  /***/ function(module, exports, __webpack_require__) {
3071
2766
 
3072
- var getLength = __webpack_require__(35),
3073
- isLength = __webpack_require__(36),
3074
- toObject = __webpack_require__(78);
2767
+ var bindCallback = __webpack_require__(27),
2768
+ isArray = __webpack_require__(46);
3075
2769
 
3076
2770
  /**
3077
- * Creates a `baseEach` or `baseEachRight` function.
2771
+ * Creates a function for `_.forEach` or `_.forEachRight`.
3078
2772
  *
3079
2773
  * @private
2774
+ * @param {Function} arrayFunc The function to iterate over an array.
3080
2775
  * @param {Function} eachFunc The function to iterate over a collection.
3081
- * @param {boolean} [fromRight] Specify iterating from right to left.
3082
- * @returns {Function} Returns the new base function.
2776
+ * @returns {Function} Returns the new each function.
3083
2777
  */
3084
- function createBaseEach(eachFunc, fromRight) {
3085
- return function(collection, iteratee) {
3086
- var length = collection ? getLength(collection) : 0;
3087
- if (!isLength(length)) {
3088
- return eachFunc(collection, iteratee);
3089
- }
3090
- var index = fromRight ? length : -1,
3091
- iterable = toObject(collection);
3092
-
3093
- while ((fromRight ? index-- : ++index < length)) {
3094
- if (iteratee(iterable[index], index, iterable) === false) {
3095
- break;
3096
- }
3097
- }
3098
- return collection;
2778
+ function createForEach(arrayFunc, eachFunc) {
2779
+ return function(collection, iteratee, thisArg) {
2780
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2781
+ ? arrayFunc(collection, iteratee)
2782
+ : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
3099
2783
  };
3100
2784
  }
3101
2785
 
3102
- module.exports = createBaseEach;
2786
+ module.exports = createForEach;
3103
2787
 
3104
2788
 
3105
2789
  /***/ },
3106
- /* 59 */
2790
+ /* 50 */
2791
+ /***/ function(module, exports, __webpack_require__) {
2792
+
2793
+ var baseProperty = __webpack_require__(72);
2794
+
2795
+ /**
2796
+ * Gets the "length" property value of `object`.
2797
+ *
2798
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
2799
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
2800
+ *
2801
+ * @private
2802
+ * @param {Object} object The object to query.
2803
+ * @returns {*} Returns the "length" value.
2804
+ */
2805
+ var getLength = baseProperty('length');
2806
+
2807
+ module.exports = getLength;
2808
+
2809
+
2810
+ /***/ },
2811
+ /* 51 */
3107
2812
  /***/ function(module, exports, __webpack_require__) {
3108
2813
 
3109
2814
  /**
3110
- * The base implementation of `_.property` without support for deep paths.
2815
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
2816
+ * of an array-like value.
2817
+ */
2818
+ var MAX_SAFE_INTEGER = 9007199254740991;
2819
+
2820
+ /**
2821
+ * Checks if `value` is a valid array-like length.
2822
+ *
2823
+ * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
3111
2824
  *
3112
2825
  * @private
3113
- * @param {string} key The key of the property to get.
3114
- * @returns {Function} Returns the new function.
2826
+ * @param {*} value The value to check.
2827
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
3115
2828
  */
3116
- function baseProperty(key) {
3117
- return function(object) {
3118
- return object == null ? undefined : object[key];
3119
- };
2829
+ function isLength(value) {
2830
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
3120
2831
  }
3121
2832
 
3122
- module.exports = baseProperty;
2833
+ module.exports = isLength;
3123
2834
 
3124
2835
 
3125
2836
  /***/ },
3126
- /* 60 */
2837
+ /* 52 */
3127
2838
  /***/ function(module, exports, __webpack_require__) {
3128
2839
 
3129
2840
  /**
3130
- * The base implementation of `_.reduce` and `_.reduceRight` without support
3131
- * for callback shorthands and `this` binding, which iterates over `collection`
3132
- * using the provided `eachFunc`.
2841
+ * A specialized version of `_.reduce` for arrays without support for callback
2842
+ * shorthands and `this` binding.
3133
2843
  *
3134
2844
  * @private
3135
- * @param {Array|Object|string} collection The collection to iterate over.
2845
+ * @param {Array} array The array to iterate over.
3136
2846
  * @param {Function} iteratee The function invoked per iteration.
3137
- * @param {*} accumulator The initial value.
3138
- * @param {boolean} initFromCollection Specify using the first or last element
3139
- * of `collection` as the initial value.
3140
- * @param {Function} eachFunc The function to iterate over `collection`.
2847
+ * @param {*} [accumulator] The initial value.
2848
+ * @param {boolean} [initFromArray] Specify using the first element of `array`
2849
+ * as the initial value.
3141
2850
  * @returns {*} Returns the accumulated value.
3142
2851
  */
3143
- function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
3144
- eachFunc(collection, function(value, index, collection) {
3145
- accumulator = initFromCollection
3146
- ? (initFromCollection = false, value)
3147
- : iteratee(accumulator, value, index, collection);
3148
- });
2852
+ function arrayReduce(array, iteratee, accumulator, initFromArray) {
2853
+ var index = -1,
2854
+ length = array.length;
2855
+
2856
+ if (initFromArray && length) {
2857
+ accumulator = array[++index];
2858
+ }
2859
+ while (++index < length) {
2860
+ accumulator = iteratee(accumulator, array[index], index, array);
2861
+ }
3149
2862
  return accumulator;
3150
2863
  }
3151
2864
 
3152
- module.exports = baseReduce;
2865
+ module.exports = arrayReduce;
3153
2866
 
3154
2867
 
3155
2868
  /***/ },
3156
- /* 61 */
2869
+ /* 53 */
3157
2870
  /***/ function(module, exports, __webpack_require__) {
3158
2871
 
3159
- var baseToString = __webpack_require__(86);
3160
-
3161
- /**
3162
- * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
3163
- * In addition to special characters the forward slash is escaped to allow for
3164
- * easier `eval` use and `Function` compilation.
3165
- */
3166
- var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
3167
- reHasRegExpChars = RegExp(reRegExpChars.source);
2872
+ var baseCallback = __webpack_require__(41),
2873
+ baseReduce = __webpack_require__(73),
2874
+ isArray = __webpack_require__(46);
3168
2875
 
3169
2876
  /**
3170
- * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
3171
- * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
3172
- *
3173
- * @static
3174
- * @memberOf _
3175
- * @category String
3176
- * @param {string} [string=''] The string to escape.
3177
- * @returns {string} Returns the escaped string.
3178
- * @example
2877
+ * Creates a function for `_.reduce` or `_.reduceRight`.
3179
2878
  *
3180
- * _.escapeRegExp('[lodash](https://lodash.com/)');
3181
- * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
2879
+ * @private
2880
+ * @param {Function} arrayFunc The function to iterate over an array.
2881
+ * @param {Function} eachFunc The function to iterate over a collection.
2882
+ * @returns {Function} Returns the new each function.
3182
2883
  */
3183
- function escapeRegExp(string) {
3184
- string = baseToString(string);
3185
- return (string && reHasRegExpChars.test(string))
3186
- ? string.replace(reRegExpChars, '\\$&')
3187
- : string;
2884
+ function createReduce(arrayFunc, eachFunc) {
2885
+ return function(collection, iteratee, accumulator, thisArg) {
2886
+ var initFromArray = arguments.length < 3;
2887
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2888
+ ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2889
+ : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2890
+ };
3188
2891
  }
3189
2892
 
3190
- module.exports = escapeRegExp;
2893
+ module.exports = createReduce;
3191
2894
 
3192
2895
 
3193
2896
  /***/ },
3194
- /* 62 */
2897
+ /* 54 */
3195
2898
  /***/ function(module, exports, __webpack_require__) {
3196
2899
 
3197
2900
  /**
@@ -3217,39 +2920,11 @@ return /******/ (function(modules) { // webpackBootstrap
3217
2920
 
3218
2921
 
3219
2922
  /***/ },
3220
- /* 63 */
2923
+ /* 55 */
3221
2924
  /***/ function(module, exports, __webpack_require__) {
3222
2925
 
3223
- var baseCopy = __webpack_require__(87),
3224
- getSymbols = __webpack_require__(88),
3225
- isNative = __webpack_require__(38),
3226
- keys = __webpack_require__(21);
3227
-
3228
- /** Native method references. */
3229
- var preventExtensions = isNative(preventExtensions = Object.preventExtensions) && preventExtensions;
3230
-
3231
- /** Used as `baseAssign`. */
3232
- var nativeAssign = (function() {
3233
- // Avoid `Object.assign` in Firefox 34-37 which have an early implementation
3234
- // with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344
3235
- // for more details.
3236
- //
3237
- // Use `Object.preventExtensions` on a plain object instead of simply using
3238
- // `Object('x')` because Chrome and IE fail to throw an error when attempting
3239
- // to assign values to readonly indexes of strings.
3240
- var func = preventExtensions && isNative(func = Object.assign) && func;
3241
- try {
3242
- if (func) {
3243
- var object = preventExtensions({ '1': 0 });
3244
- object[0] = 1;
3245
- }
3246
- } catch(e) {
3247
- // Only attempt in strict mode.
3248
- try { func(object, 'xo'); } catch(e) {}
3249
- return !object[1] && func;
3250
- }
3251
- return false;
3252
- }());
2926
+ var baseCopy = __webpack_require__(74),
2927
+ keys = __webpack_require__(17);
3253
2928
 
3254
2929
  /**
3255
2930
  * The base implementation of `_.assign` without support for argument juggling,
@@ -3260,17 +2935,17 @@ return /******/ (function(modules) { // webpackBootstrap
3260
2935
  * @param {Object} source The source object.
3261
2936
  * @returns {Object} Returns `object`.
3262
2937
  */
3263
- var baseAssign = nativeAssign || function(object, source) {
2938
+ function baseAssign(object, source) {
3264
2939
  return source == null
3265
2940
  ? object
3266
- : baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object));
3267
- };
2941
+ : baseCopy(source, keys(source), object);
2942
+ }
3268
2943
 
3269
2944
  module.exports = baseAssign;
3270
2945
 
3271
2946
 
3272
2947
  /***/ },
3273
- /* 64 */
2948
+ /* 56 */
3274
2949
  /***/ function(module, exports, __webpack_require__) {
3275
2950
 
3276
2951
  /** Used for native method references. */
@@ -3302,10 +2977,10 @@ return /******/ (function(modules) { // webpackBootstrap
3302
2977
 
3303
2978
 
3304
2979
  /***/ },
3305
- /* 65 */
2980
+ /* 57 */
3306
2981
  /***/ function(module, exports, __webpack_require__) {
3307
2982
 
3308
- var bufferClone = __webpack_require__(89);
2983
+ var bufferClone = __webpack_require__(75);
3309
2984
 
3310
2985
  /** `Object#toString` result references. */
3311
2986
  var boolTag = '[object Boolean]',
@@ -3356,71 +3031,318 @@ return /******/ (function(modules) { // webpackBootstrap
3356
3031
  var buffer = object.buffer;
3357
3032
  return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
3358
3033
 
3359
- case numberTag:
3360
- case stringTag:
3361
- return new Ctor(object);
3034
+ case numberTag:
3035
+ case stringTag:
3036
+ return new Ctor(object);
3037
+
3038
+ case regexpTag:
3039
+ var result = new Ctor(object.source, reFlags.exec(object));
3040
+ result.lastIndex = object.lastIndex;
3041
+ }
3042
+ return result;
3043
+ }
3044
+
3045
+ module.exports = initCloneByTag;
3046
+
3047
+
3048
+ /***/ },
3049
+ /* 58 */
3050
+ /***/ function(module, exports, __webpack_require__) {
3051
+
3052
+ /**
3053
+ * Initializes an object clone.
3054
+ *
3055
+ * @private
3056
+ * @param {Object} object The object to clone.
3057
+ * @returns {Object} Returns the initialized clone.
3058
+ */
3059
+ function initCloneObject(object) {
3060
+ var Ctor = object.constructor;
3061
+ if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3062
+ Ctor = Object;
3063
+ }
3064
+ return new Ctor;
3065
+ }
3066
+
3067
+ module.exports = initCloneObject;
3068
+
3069
+
3070
+ /***/ },
3071
+ /* 59 */
3072
+ /***/ function(module, exports, __webpack_require__) {
3073
+
3074
+ /**
3075
+ * This method returns the first argument provided to it.
3076
+ *
3077
+ * @static
3078
+ * @memberOf _
3079
+ * @category Utility
3080
+ * @param {*} value Any value.
3081
+ * @returns {*} Returns `value`.
3082
+ * @example
3083
+ *
3084
+ * var object = { 'user': 'fred' };
3085
+ *
3086
+ * _.identity(object) === object;
3087
+ * // => true
3088
+ */
3089
+ function identity(value) {
3090
+ return value;
3091
+ }
3092
+
3093
+ module.exports = identity;
3094
+
3095
+
3096
+ /***/ },
3097
+ /* 60 */
3098
+ /***/ function(module, exports, __webpack_require__) {
3099
+
3100
+ /** Used to detect unsigned integer values. */
3101
+ var reIsUint = /^\d+$/;
3102
+
3103
+ /**
3104
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
3105
+ * of an array-like value.
3106
+ */
3107
+ var MAX_SAFE_INTEGER = 9007199254740991;
3108
+
3109
+ /**
3110
+ * Checks if `value` is a valid array-like index.
3111
+ *
3112
+ * @private
3113
+ * @param {*} value The value to check.
3114
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3115
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3116
+ */
3117
+ function isIndex(value, length) {
3118
+ value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
3119
+ length = length == null ? MAX_SAFE_INTEGER : length;
3120
+ return value > -1 && value % 1 == 0 && value < length;
3121
+ }
3122
+
3123
+ module.exports = isIndex;
3124
+
3125
+
3126
+ /***/ },
3127
+ /* 61 */
3128
+ /***/ function(module, exports, __webpack_require__) {
3129
+
3130
+ var createBaseFor = __webpack_require__(76);
3131
+
3132
+ /**
3133
+ * The base implementation of `baseForIn` and `baseForOwn` which iterates
3134
+ * over `object` properties returned by `keysFunc` invoking `iteratee` for
3135
+ * each property. Iteratee functions may exit iteration early by explicitly
3136
+ * returning `false`.
3137
+ *
3138
+ * @private
3139
+ * @param {Object} object The object to iterate over.
3140
+ * @param {Function} iteratee The function invoked per iteration.
3141
+ * @param {Function} keysFunc The function to get the keys of `object`.
3142
+ * @returns {Object} Returns `object`.
3143
+ */
3144
+ var baseFor = createBaseFor();
3145
+
3146
+ module.exports = baseFor;
3147
+
3148
+
3149
+ /***/ },
3150
+ /* 62 */
3151
+ /***/ function(module, exports, __webpack_require__) {
3152
+
3153
+ var isFunction = __webpack_require__(13),
3154
+ isObjectLike = __webpack_require__(29);
3155
+
3156
+ /** Used to detect host constructors (Safari > 5). */
3157
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
3158
+
3159
+ /** Used for native method references. */
3160
+ var objectProto = Object.prototype;
3161
+
3162
+ /** Used to resolve the decompiled source of functions. */
3163
+ var fnToString = Function.prototype.toString;
3164
+
3165
+ /** Used to check objects for own properties. */
3166
+ var hasOwnProperty = objectProto.hasOwnProperty;
3167
+
3168
+ /** Used to detect if a method is native. */
3169
+ var reIsNative = RegExp('^' +
3170
+ fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
3171
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
3172
+ );
3173
+
3174
+ /**
3175
+ * Checks if `value` is a native function.
3176
+ *
3177
+ * @static
3178
+ * @memberOf _
3179
+ * @category Lang
3180
+ * @param {*} value The value to check.
3181
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
3182
+ * @example
3183
+ *
3184
+ * _.isNative(Array.prototype.push);
3185
+ * // => true
3186
+ *
3187
+ * _.isNative(_);
3188
+ * // => false
3189
+ */
3190
+ function isNative(value) {
3191
+ if (value == null) {
3192
+ return false;
3193
+ }
3194
+ if (isFunction(value)) {
3195
+ return reIsNative.test(fnToString.call(value));
3196
+ }
3197
+ return isObjectLike(value) && reIsHostCtor.test(value);
3198
+ }
3199
+
3200
+ module.exports = isNative;
3201
+
3202
+
3203
+ /***/ },
3204
+ /* 63 */
3205
+ /***/ function(module, exports, __webpack_require__) {
3206
+
3207
+ var isArrayLike = __webpack_require__(34),
3208
+ isObjectLike = __webpack_require__(29);
3209
+
3210
+ /** Used for native method references. */
3211
+ var objectProto = Object.prototype;
3212
+
3213
+ /** Used to check objects for own properties. */
3214
+ var hasOwnProperty = objectProto.hasOwnProperty;
3215
+
3216
+ /** Native method references. */
3217
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
3362
3218
 
3363
- case regexpTag:
3364
- var result = new Ctor(object.source, reFlags.exec(object));
3365
- result.lastIndex = object.lastIndex;
3366
- }
3367
- return result;
3219
+ /**
3220
+ * Checks if `value` is classified as an `arguments` object.
3221
+ *
3222
+ * @static
3223
+ * @memberOf _
3224
+ * @category Lang
3225
+ * @param {*} value The value to check.
3226
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3227
+ * @example
3228
+ *
3229
+ * _.isArguments(function() { return arguments; }());
3230
+ * // => true
3231
+ *
3232
+ * _.isArguments([1, 2, 3]);
3233
+ * // => false
3234
+ */
3235
+ function isArguments(value) {
3236
+ return isObjectLike(value) && isArrayLike(value) &&
3237
+ hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
3368
3238
  }
3369
3239
 
3370
- module.exports = initCloneByTag;
3240
+ module.exports = isArguments;
3371
3241
 
3372
3242
 
3373
3243
  /***/ },
3374
- /* 66 */
3244
+ /* 64 */
3375
3245
  /***/ function(module, exports, __webpack_require__) {
3376
3246
 
3247
+ var isArguments = __webpack_require__(63),
3248
+ isArray = __webpack_require__(46),
3249
+ isIndex = __webpack_require__(60),
3250
+ isLength = __webpack_require__(51),
3251
+ isObject = __webpack_require__(25);
3252
+
3253
+ /** Used for native method references. */
3254
+ var objectProto = Object.prototype;
3255
+
3256
+ /** Used to check objects for own properties. */
3257
+ var hasOwnProperty = objectProto.hasOwnProperty;
3258
+
3377
3259
  /**
3378
- * Initializes an object clone.
3260
+ * Creates an array of the own and inherited enumerable property names of `object`.
3379
3261
  *
3380
- * @private
3381
- * @param {Object} object The object to clone.
3382
- * @returns {Object} Returns the initialized clone.
3262
+ * **Note:** Non-object values are coerced to objects.
3263
+ *
3264
+ * @static
3265
+ * @memberOf _
3266
+ * @category Object
3267
+ * @param {Object} object The object to query.
3268
+ * @returns {Array} Returns the array of property names.
3269
+ * @example
3270
+ *
3271
+ * function Foo() {
3272
+ * this.a = 1;
3273
+ * this.b = 2;
3274
+ * }
3275
+ *
3276
+ * Foo.prototype.c = 3;
3277
+ *
3278
+ * _.keysIn(new Foo);
3279
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3383
3280
  */
3384
- function initCloneObject(object) {
3385
- var Ctor = object.constructor;
3386
- if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3387
- Ctor = Object;
3281
+ function keysIn(object) {
3282
+ if (object == null) {
3283
+ return [];
3388
3284
  }
3389
- return new Ctor;
3285
+ if (!isObject(object)) {
3286
+ object = Object(object);
3287
+ }
3288
+ var length = object.length;
3289
+ length = (length && isLength(length) &&
3290
+ (isArray(object) || isArguments(object)) && length) || 0;
3291
+
3292
+ var Ctor = object.constructor,
3293
+ index = -1,
3294
+ isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3295
+ result = Array(length),
3296
+ skipIndexes = length > 0;
3297
+
3298
+ while (++index < length) {
3299
+ result[index] = (index + '');
3300
+ }
3301
+ for (var key in object) {
3302
+ if (!(skipIndexes && isIndex(key, length)) &&
3303
+ !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3304
+ result.push(key);
3305
+ }
3306
+ }
3307
+ return result;
3390
3308
  }
3391
3309
 
3392
- module.exports = initCloneObject;
3310
+ module.exports = keysIn;
3393
3311
 
3394
3312
 
3395
3313
  /***/ },
3396
- /* 67 */
3314
+ /* 65 */
3397
3315
  /***/ function(module, exports, __webpack_require__) {
3398
3316
 
3399
3317
  /**
3400
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
3401
- * of an array-like value.
3402
- */
3403
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
3404
-
3405
- /**
3406
- * Checks if `value` is a valid array-like index.
3318
+ * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3319
+ * without support for callback shorthands and `this` binding, which iterates
3320
+ * over `collection` using the provided `eachFunc`.
3407
3321
  *
3408
3322
  * @private
3409
- * @param {*} value The value to check.
3410
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3411
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3323
+ * @param {Array|Object|string} collection The collection to search.
3324
+ * @param {Function} predicate The function invoked per iteration.
3325
+ * @param {Function} eachFunc The function to iterate over `collection`.
3326
+ * @param {boolean} [retKey] Specify returning the key of the found element
3327
+ * instead of the element itself.
3328
+ * @returns {*} Returns the found element or its key, else `undefined`.
3412
3329
  */
3413
- function isIndex(value, length) {
3414
- value = +value;
3415
- length = length == null ? MAX_SAFE_INTEGER : length;
3416
- return value > -1 && value % 1 == 0 && value < length;
3330
+ function baseFind(collection, predicate, eachFunc, retKey) {
3331
+ var result;
3332
+ eachFunc(collection, function(value, key, collection) {
3333
+ if (predicate(value, key, collection)) {
3334
+ result = retKey ? key : value;
3335
+ return false;
3336
+ }
3337
+ });
3338
+ return result;
3417
3339
  }
3418
3340
 
3419
- module.exports = isIndex;
3341
+ module.exports = baseFind;
3420
3342
 
3421
3343
 
3422
3344
  /***/ },
3423
- /* 68 */
3345
+ /* 66 */
3424
3346
  /***/ function(module, exports, __webpack_require__) {
3425
3347
 
3426
3348
  /**
@@ -3449,17 +3371,17 @@ return /******/ (function(modules) { // webpackBootstrap
3449
3371
 
3450
3372
 
3451
3373
  /***/ },
3452
- /* 69 */
3374
+ /* 67 */
3453
3375
  /***/ function(module, exports, __webpack_require__) {
3454
3376
 
3455
- /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(90),
3456
- isNative = __webpack_require__(38);
3377
+ /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(77),
3378
+ getNative = __webpack_require__(33);
3457
3379
 
3458
3380
  /** Native method references. */
3459
- var Set = isNative(Set = global.Set) && Set;
3381
+ var Set = getNative(global, 'Set');
3460
3382
 
3461
3383
  /* Native method references for those with the same name as other `lodash` methods. */
3462
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
3384
+ var nativeCreate = getNative(Object, 'create');
3463
3385
 
3464
3386
  /**
3465
3387
  *
@@ -3482,293 +3404,340 @@ return /******/ (function(modules) { // webpackBootstrap
3482
3404
 
3483
3405
  module.exports = SetCache;
3484
3406
 
3485
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3407
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3408
+
3409
+ /***/ },
3410
+ /* 68 */
3411
+ /***/ function(module, exports, __webpack_require__) {
3412
+
3413
+ var baseIsMatch = __webpack_require__(78),
3414
+ getMatchData = __webpack_require__(79),
3415
+ toObject = __webpack_require__(80);
3416
+
3417
+ /**
3418
+ * The base implementation of `_.matches` which does not clone `source`.
3419
+ *
3420
+ * @private
3421
+ * @param {Object} source The object of property values to match.
3422
+ * @returns {Function} Returns the new function.
3423
+ */
3424
+ function baseMatches(source) {
3425
+ var matchData = getMatchData(source);
3426
+ if (matchData.length == 1 && matchData[0][2]) {
3427
+ var key = matchData[0][0],
3428
+ value = matchData[0][1];
3429
+
3430
+ return function(object) {
3431
+ if (object == null) {
3432
+ return false;
3433
+ }
3434
+ return object[key] === value && (value !== undefined || (key in toObject(object)));
3435
+ };
3436
+ }
3437
+ return function(object) {
3438
+ return baseIsMatch(object, matchData);
3439
+ };
3440
+ }
3441
+
3442
+ module.exports = baseMatches;
3443
+
3444
+
3445
+ /***/ },
3446
+ /* 69 */
3447
+ /***/ function(module, exports, __webpack_require__) {
3448
+
3449
+ var baseGet = __webpack_require__(81),
3450
+ baseIsEqual = __webpack_require__(82),
3451
+ baseSlice = __webpack_require__(83),
3452
+ isArray = __webpack_require__(46),
3453
+ isKey = __webpack_require__(84),
3454
+ isStrictComparable = __webpack_require__(85),
3455
+ last = __webpack_require__(86),
3456
+ toObject = __webpack_require__(80),
3457
+ toPath = __webpack_require__(87);
3458
+
3459
+ /**
3460
+ * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
3461
+ *
3462
+ * @private
3463
+ * @param {string} path The path of the property to get.
3464
+ * @param {*} srcValue The value to compare.
3465
+ * @returns {Function} Returns the new function.
3466
+ */
3467
+ function baseMatchesProperty(path, srcValue) {
3468
+ var isArr = isArray(path),
3469
+ isCommon = isKey(path) && isStrictComparable(srcValue),
3470
+ pathKey = (path + '');
3471
+
3472
+ path = toPath(path);
3473
+ return function(object) {
3474
+ if (object == null) {
3475
+ return false;
3476
+ }
3477
+ var key = pathKey;
3478
+ object = toObject(object);
3479
+ if ((isArr || !isCommon) && !(key in object)) {
3480
+ object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
3481
+ if (object == null) {
3482
+ return false;
3483
+ }
3484
+ key = last(path);
3485
+ object = toObject(object);
3486
+ }
3487
+ return object[key] === srcValue
3488
+ ? (srcValue !== undefined || (key in object))
3489
+ : baseIsEqual(srcValue, object[key], undefined, true);
3490
+ };
3491
+ }
3492
+
3493
+ module.exports = baseMatchesProperty;
3494
+
3495
+
3496
+ /***/ },
3497
+ /* 70 */
3498
+ /***/ function(module, exports, __webpack_require__) {
3499
+
3500
+ var baseProperty = __webpack_require__(72),
3501
+ basePropertyDeep = __webpack_require__(88),
3502
+ isKey = __webpack_require__(84);
3503
+
3504
+ /**
3505
+ * Creates a function that returns the property value at `path` on a
3506
+ * given object.
3507
+ *
3508
+ * @static
3509
+ * @memberOf _
3510
+ * @category Utility
3511
+ * @param {Array|string} path The path of the property to get.
3512
+ * @returns {Function} Returns the new function.
3513
+ * @example
3514
+ *
3515
+ * var objects = [
3516
+ * { 'a': { 'b': { 'c': 2 } } },
3517
+ * { 'a': { 'b': { 'c': 1 } } }
3518
+ * ];
3519
+ *
3520
+ * _.map(objects, _.property('a.b.c'));
3521
+ * // => [2, 1]
3522
+ *
3523
+ * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
3524
+ * // => [1, 2]
3525
+ */
3526
+ function property(path) {
3527
+ return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
3528
+ }
3529
+
3530
+ module.exports = property;
3531
+
3532
+
3533
+ /***/ },
3534
+ /* 71 */
3535
+ /***/ function(module, exports, __webpack_require__) {
3536
+
3537
+ var getLength = __webpack_require__(50),
3538
+ isLength = __webpack_require__(51),
3539
+ toObject = __webpack_require__(80);
3540
+
3541
+ /**
3542
+ * Creates a `baseEach` or `baseEachRight` function.
3543
+ *
3544
+ * @private
3545
+ * @param {Function} eachFunc The function to iterate over a collection.
3546
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3547
+ * @returns {Function} Returns the new base function.
3548
+ */
3549
+ function createBaseEach(eachFunc, fromRight) {
3550
+ return function(collection, iteratee) {
3551
+ var length = collection ? getLength(collection) : 0;
3552
+ if (!isLength(length)) {
3553
+ return eachFunc(collection, iteratee);
3554
+ }
3555
+ var index = fromRight ? length : -1,
3556
+ iterable = toObject(collection);
3557
+
3558
+ while ((fromRight ? index-- : ++index < length)) {
3559
+ if (iteratee(iterable[index], index, iterable) === false) {
3560
+ break;
3561
+ }
3562
+ }
3563
+ return collection;
3564
+ };
3565
+ }
3566
+
3567
+ module.exports = createBaseEach;
3568
+
3486
3569
 
3487
3570
  /***/ },
3488
- /* 70 */
3571
+ /* 72 */
3489
3572
  /***/ function(module, exports, __webpack_require__) {
3490
3573
 
3491
3574
  /**
3492
- * Creates a function that returns `value`.
3575
+ * The base implementation of `_.property` without support for deep paths.
3493
3576
  *
3494
- * @static
3495
- * @memberOf _
3496
- * @category Utility
3497
- * @param {*} value The value to return from the new function.
3577
+ * @private
3578
+ * @param {string} key The key of the property to get.
3498
3579
  * @returns {Function} Returns the new function.
3499
- * @example
3500
- *
3501
- * var object = { 'user': 'fred' };
3502
- * var getter = _.constant(object);
3503
- *
3504
- * getter() === object;
3505
- * // => true
3506
3580
  */
3507
- function constant(value) {
3508
- return function() {
3509
- return value;
3581
+ function baseProperty(key) {
3582
+ return function(object) {
3583
+ return object == null ? undefined : object[key];
3510
3584
  };
3511
3585
  }
3512
3586
 
3513
- module.exports = constant;
3587
+ module.exports = baseProperty;
3514
3588
 
3515
3589
 
3516
3590
  /***/ },
3517
- /* 71 */
3591
+ /* 73 */
3518
3592
  /***/ function(module, exports, __webpack_require__) {
3519
3593
 
3520
- var createBaseFor = __webpack_require__(91);
3521
-
3522
3594
  /**
3523
- * The base implementation of `baseForIn` and `baseForOwn` which iterates
3524
- * over `object` properties returned by `keysFunc` invoking `iteratee` for
3525
- * each property. Iteratee functions may exit iteration early by explicitly
3526
- * returning `false`.
3595
+ * The base implementation of `_.reduce` and `_.reduceRight` without support
3596
+ * for callback shorthands and `this` binding, which iterates over `collection`
3597
+ * using the provided `eachFunc`.
3527
3598
  *
3528
3599
  * @private
3529
- * @param {Object} object The object to iterate over.
3600
+ * @param {Array|Object|string} collection The collection to iterate over.
3530
3601
  * @param {Function} iteratee The function invoked per iteration.
3531
- * @param {Function} keysFunc The function to get the keys of `object`.
3532
- * @returns {Object} Returns `object`.
3602
+ * @param {*} accumulator The initial value.
3603
+ * @param {boolean} initFromCollection Specify using the first or last element
3604
+ * of `collection` as the initial value.
3605
+ * @param {Function} eachFunc The function to iterate over `collection`.
3606
+ * @returns {*} Returns the accumulated value.
3533
3607
  */
3534
- var baseFor = createBaseFor();
3608
+ function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
3609
+ eachFunc(collection, function(value, index, collection) {
3610
+ accumulator = initFromCollection
3611
+ ? (initFromCollection = false, value)
3612
+ : iteratee(accumulator, value, index, collection);
3613
+ });
3614
+ return accumulator;
3615
+ }
3535
3616
 
3536
- module.exports = baseFor;
3617
+ module.exports = baseReduce;
3537
3618
 
3538
3619
 
3539
3620
  /***/ },
3540
- /* 72 */
3621
+ /* 74 */
3541
3622
  /***/ function(module, exports, __webpack_require__) {
3542
3623
 
3543
3624
  /**
3544
- * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3545
- * without support for callback shorthands and `this` binding, which iterates
3546
- * over `collection` using the provided `eachFunc`.
3625
+ * Copies properties of `source` to `object`.
3547
3626
  *
3548
3627
  * @private
3549
- * @param {Array|Object|string} collection The collection to search.
3550
- * @param {Function} predicate The function invoked per iteration.
3551
- * @param {Function} eachFunc The function to iterate over `collection`.
3552
- * @param {boolean} [retKey] Specify returning the key of the found element
3553
- * instead of the element itself.
3554
- * @returns {*} Returns the found element or its key, else `undefined`.
3628
+ * @param {Object} source The object to copy properties from.
3629
+ * @param {Array} props The property names to copy.
3630
+ * @param {Object} [object={}] The object to copy properties to.
3631
+ * @returns {Object} Returns `object`.
3555
3632
  */
3556
- function baseFind(collection, predicate, eachFunc, retKey) {
3557
- var result;
3558
- eachFunc(collection, function(value, key, collection) {
3559
- if (predicate(value, key, collection)) {
3560
- result = retKey ? key : value;
3561
- return false;
3562
- }
3563
- });
3564
- return result;
3633
+ function baseCopy(source, props, object) {
3634
+ object || (object = {});
3635
+
3636
+ var index = -1,
3637
+ length = props.length;
3638
+
3639
+ while (++index < length) {
3640
+ var key = props[index];
3641
+ object[key] = source[key];
3642
+ }
3643
+ return object;
3565
3644
  }
3566
3645
 
3567
- module.exports = baseFind;
3646
+ module.exports = baseCopy;
3568
3647
 
3569
3648
 
3570
3649
  /***/ },
3571
- /* 73 */
3650
+ /* 75 */
3572
3651
  /***/ function(module, exports, __webpack_require__) {
3573
3652
 
3574
- var isArrayLike = __webpack_require__(47),
3575
- isObjectLike = __webpack_require__(43);
3576
-
3577
- /** `Object#toString` result references. */
3578
- var argsTag = '[object Arguments]';
3579
-
3580
- /** Used for native method references. */
3581
- var objectProto = Object.prototype;
3582
-
3583
- /**
3584
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
3585
- * of values.
3586
- */
3587
- var objToString = objectProto.toString;
3653
+ /* WEBPACK VAR INJECTION */(function(global) {/** Native method references. */
3654
+ var ArrayBuffer = global.ArrayBuffer,
3655
+ Uint8Array = global.Uint8Array;
3588
3656
 
3589
3657
  /**
3590
- * Checks if `value` is classified as an `arguments` object.
3591
- *
3592
- * @static
3593
- * @memberOf _
3594
- * @category Lang
3595
- * @param {*} value The value to check.
3596
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3597
- * @example
3598
- *
3599
- * _.isArguments(function() { return arguments; }());
3600
- * // => true
3658
+ * Creates a clone of the given array buffer.
3601
3659
  *
3602
- * _.isArguments([1, 2, 3]);
3603
- * // => false
3660
+ * @private
3661
+ * @param {ArrayBuffer} buffer The array buffer to clone.
3662
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
3604
3663
  */
3605
- function isArguments(value) {
3606
- return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
3664
+ function bufferClone(buffer) {
3665
+ var result = new ArrayBuffer(buffer.byteLength),
3666
+ view = new Uint8Array(result);
3667
+
3668
+ view.set(new Uint8Array(buffer));
3669
+ return result;
3607
3670
  }
3608
3671
 
3609
- module.exports = isArguments;
3610
-
3672
+ module.exports = bufferClone;
3673
+
3674
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3611
3675
 
3612
3676
  /***/ },
3613
- /* 74 */
3677
+ /* 76 */
3614
3678
  /***/ function(module, exports, __webpack_require__) {
3615
3679
 
3616
- var isArguments = __webpack_require__(73),
3617
- isArray = __webpack_require__(29),
3618
- isIndex = __webpack_require__(67),
3619
- isLength = __webpack_require__(36),
3620
- isObject = __webpack_require__(25),
3621
- support = __webpack_require__(75);
3622
-
3623
- /** Used for native method references. */
3624
- var objectProto = Object.prototype;
3625
-
3626
- /** Used to check objects for own properties. */
3627
- var hasOwnProperty = objectProto.hasOwnProperty;
3680
+ var toObject = __webpack_require__(80);
3628
3681
 
3629
3682
  /**
3630
- * Creates an array of the own and inherited enumerable property names of `object`.
3631
- *
3632
- * **Note:** Non-object values are coerced to objects.
3633
- *
3634
- * @static
3635
- * @memberOf _
3636
- * @category Object
3637
- * @param {Object} object The object to query.
3638
- * @returns {Array} Returns the array of property names.
3639
- * @example
3640
- *
3641
- * function Foo() {
3642
- * this.a = 1;
3643
- * this.b = 2;
3644
- * }
3645
- *
3646
- * Foo.prototype.c = 3;
3683
+ * Creates a base function for `_.forIn` or `_.forInRight`.
3647
3684
  *
3648
- * _.keysIn(new Foo);
3649
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3685
+ * @private
3686
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3687
+ * @returns {Function} Returns the new base function.
3650
3688
  */
3651
- function keysIn(object) {
3652
- if (object == null) {
3653
- return [];
3654
- }
3655
- if (!isObject(object)) {
3656
- object = Object(object);
3657
- }
3658
- var length = object.length;
3659
- length = (length && isLength(length) &&
3660
- (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
3661
-
3662
- var Ctor = object.constructor,
3663
- index = -1,
3664
- isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3665
- result = Array(length),
3666
- skipIndexes = length > 0;
3689
+ function createBaseFor(fromRight) {
3690
+ return function(object, iteratee, keysFunc) {
3691
+ var iterable = toObject(object),
3692
+ props = keysFunc(object),
3693
+ length = props.length,
3694
+ index = fromRight ? length : -1;
3667
3695
 
3668
- while (++index < length) {
3669
- result[index] = (index + '');
3670
- }
3671
- for (var key in object) {
3672
- if (!(skipIndexes && isIndex(key, length)) &&
3673
- !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3674
- result.push(key);
3696
+ while ((fromRight ? index-- : ++index < length)) {
3697
+ var key = props[index];
3698
+ if (iteratee(iterable[key], key, iterable) === false) {
3699
+ break;
3700
+ }
3675
3701
  }
3676
- }
3677
- return result;
3702
+ return object;
3703
+ };
3678
3704
  }
3679
3705
 
3680
- module.exports = keysIn;
3706
+ module.exports = createBaseFor;
3681
3707
 
3682
3708
 
3683
3709
  /***/ },
3684
- /* 75 */
3710
+ /* 77 */
3685
3711
  /***/ function(module, exports, __webpack_require__) {
3686
3712
 
3687
- /* WEBPACK VAR INJECTION */(function(global) {/** Used for native method references. */
3688
- var objectProto = Object.prototype;
3689
-
3690
- /** Used to detect DOM support. */
3691
- var document = (document = global.window) && document.document;
3692
-
3693
- /** Native method references. */
3694
- var propertyIsEnumerable = objectProto.propertyIsEnumerable;
3713
+ var isObject = __webpack_require__(25);
3695
3714
 
3696
3715
  /**
3697
- * An object environment feature flags.
3716
+ * Adds `value` to the cache.
3698
3717
  *
3699
- * @static
3700
- * @memberOf _
3701
- * @type Object
3718
+ * @private
3719
+ * @name push
3720
+ * @memberOf SetCache
3721
+ * @param {*} value The value to cache.
3702
3722
  */
3703
- var support = {};
3704
-
3705
- (function(x) {
3706
- var Ctor = function() { this.x = x; },
3707
- args = arguments,
3708
- object = { '0': x, 'length': x },
3709
- props = [];
3710
-
3711
- Ctor.prototype = { 'valueOf': x, 'y': x };
3712
- for (var key in new Ctor) { props.push(key); }
3713
-
3714
- /**
3715
- * Detect if functions can be decompiled by `Function#toString`
3716
- * (all but Firefox OS certified apps, older Opera mobile browsers, and
3717
- * the PlayStation 3; forced `false` for Windows 8 apps).
3718
- *
3719
- * @memberOf _.support
3720
- * @type boolean
3721
- */
3722
- support.funcDecomp = /\bthis\b/.test(function() { return this; });
3723
-
3724
- /**
3725
- * Detect if `Function#name` is supported (all but IE).
3726
- *
3727
- * @memberOf _.support
3728
- * @type boolean
3729
- */
3730
- support.funcNames = typeof Function.name == 'string';
3731
-
3732
- /**
3733
- * Detect if the DOM is supported.
3734
- *
3735
- * @memberOf _.support
3736
- * @type boolean
3737
- */
3738
- try {
3739
- support.dom = document.createDocumentFragment().nodeType === 11;
3740
- } catch(e) {
3741
- support.dom = false;
3742
- }
3743
-
3744
- /**
3745
- * Detect if `arguments` object indexes are non-enumerable.
3746
- *
3747
- * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
3748
- * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
3749
- * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
3750
- * checks for indexes that exceed the number of function parameters and
3751
- * whose associated argument values are `0`.
3752
- *
3753
- * @memberOf _.support
3754
- * @type boolean
3755
- */
3756
- try {
3757
- support.nonEnumArgs = !propertyIsEnumerable.call(args, 1);
3758
- } catch(e) {
3759
- support.nonEnumArgs = true;
3723
+ function cachePush(value) {
3724
+ var data = this.data;
3725
+ if (typeof value == 'string' || isObject(value)) {
3726
+ data.set.add(value);
3727
+ } else {
3728
+ data.hash[value] = true;
3760
3729
  }
3761
- }(1, 0));
3762
-
3763
- module.exports = support;
3730
+ }
3764
3731
 
3765
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3732
+ module.exports = cachePush;
3733
+
3766
3734
 
3767
3735
  /***/ },
3768
- /* 76 */
3736
+ /* 78 */
3769
3737
  /***/ function(module, exports, __webpack_require__) {
3770
3738
 
3771
- var baseIsEqual = __webpack_require__(80);
3739
+ var baseIsEqual = __webpack_require__(82),
3740
+ toObject = __webpack_require__(80);
3772
3741
 
3773
3742
  /**
3774
3743
  * The base implementation of `_.isMatch` without support for callback
@@ -3776,42 +3745,44 @@ return /******/ (function(modules) { // webpackBootstrap
3776
3745
  *
3777
3746
  * @private
3778
3747
  * @param {Object} object The object to inspect.
3779
- * @param {Array} props The source property names to match.
3780
- * @param {Array} values The source values to match.
3781
- * @param {Array} strictCompareFlags Strict comparison flags for source values.
3748
+ * @param {Array} matchData The propery names, values, and compare flags to match.
3782
3749
  * @param {Function} [customizer] The function to customize comparing objects.
3783
3750
  * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3784
3751
  */
3785
- function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
3786
- var index = -1,
3787
- length = props.length,
3752
+ function baseIsMatch(object, matchData, customizer) {
3753
+ var index = matchData.length,
3754
+ length = index,
3788
3755
  noCustomizer = !customizer;
3789
3756
 
3790
- while (++index < length) {
3791
- if ((noCustomizer && strictCompareFlags[index])
3792
- ? values[index] !== object[props[index]]
3793
- : !(props[index] in object)
3757
+ if (object == null) {
3758
+ return !length;
3759
+ }
3760
+ object = toObject(object);
3761
+ while (index--) {
3762
+ var data = matchData[index];
3763
+ if ((noCustomizer && data[2])
3764
+ ? data[1] !== object[data[0]]
3765
+ : !(data[0] in object)
3794
3766
  ) {
3795
3767
  return false;
3796
3768
  }
3797
3769
  }
3798
- index = -1;
3799
3770
  while (++index < length) {
3800
- var key = props[index],
3771
+ data = matchData[index];
3772
+ var key = data[0],
3801
3773
  objValue = object[key],
3802
- srcValue = values[index];
3774
+ srcValue = data[1];
3803
3775
 
3804
- if (noCustomizer && strictCompareFlags[index]) {
3805
- var result = objValue !== undefined || (key in object);
3776
+ if (noCustomizer && data[2]) {
3777
+ if (objValue === undefined && !(key in object)) {
3778
+ return false;
3779
+ }
3806
3780
  } else {
3807
- result = customizer ? customizer(objValue, srcValue, key) : undefined;
3808
- if (result === undefined) {
3809
- result = baseIsEqual(srcValue, objValue, customizer, true);
3781
+ var result = customizer ? customizer(objValue, srcValue, key) : undefined;
3782
+ if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
3783
+ return false;
3810
3784
  }
3811
3785
  }
3812
- if (!result) {
3813
- return false;
3814
- }
3815
3786
  }
3816
3787
  return true;
3817
3788
  }
@@ -3820,34 +3791,40 @@ return /******/ (function(modules) { // webpackBootstrap
3820
3791
 
3821
3792
 
3822
3793
  /***/ },
3823
- /* 77 */
3794
+ /* 79 */
3824
3795
  /***/ function(module, exports, __webpack_require__) {
3825
3796
 
3826
- var isObject = __webpack_require__(25);
3797
+ var isStrictComparable = __webpack_require__(85),
3798
+ pairs = __webpack_require__(89);
3827
3799
 
3828
3800
  /**
3829
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3801
+ * Gets the propery names, values, and compare flags of `object`.
3830
3802
  *
3831
3803
  * @private
3832
- * @param {*} value The value to check.
3833
- * @returns {boolean} Returns `true` if `value` if suitable for strict
3834
- * equality comparisons, else `false`.
3804
+ * @param {Object} object The object to query.
3805
+ * @returns {Array} Returns the match data of `object`.
3835
3806
  */
3836
- function isStrictComparable(value) {
3837
- return value === value && !isObject(value);
3807
+ function getMatchData(object) {
3808
+ var result = pairs(object),
3809
+ length = result.length;
3810
+
3811
+ while (length--) {
3812
+ result[length][2] = isStrictComparable(result[length][1]);
3813
+ }
3814
+ return result;
3838
3815
  }
3839
3816
 
3840
- module.exports = isStrictComparable;
3817
+ module.exports = getMatchData;
3841
3818
 
3842
3819
 
3843
3820
  /***/ },
3844
- /* 78 */
3821
+ /* 80 */
3845
3822
  /***/ function(module, exports, __webpack_require__) {
3846
3823
 
3847
3824
  var isObject = __webpack_require__(25);
3848
3825
 
3849
3826
  /**
3850
- * Converts `value` to an object if it is not one.
3827
+ * Converts `value` to an object if it's not one.
3851
3828
  *
3852
3829
  * @private
3853
3830
  * @param {*} value The value to process.
@@ -3861,10 +3838,10 @@ return /******/ (function(modules) { // webpackBootstrap
3861
3838
 
3862
3839
 
3863
3840
  /***/ },
3864
- /* 79 */
3841
+ /* 81 */
3865
3842
  /***/ function(module, exports, __webpack_require__) {
3866
3843
 
3867
- var toObject = __webpack_require__(78);
3844
+ var toObject = __webpack_require__(80);
3868
3845
 
3869
3846
  /**
3870
3847
  * The base implementation of `get` without support for string paths
@@ -3883,11 +3860,11 @@ return /******/ (function(modules) { // webpackBootstrap
3883
3860
  if (pathKey !== undefined && pathKey in toObject(object)) {
3884
3861
  path = [pathKey];
3885
3862
  }
3886
- var index = -1,
3863
+ var index = 0,
3887
3864
  length = path.length;
3888
3865
 
3889
- while (object != null && ++index < length) {
3890
- object = object[path[index]];
3866
+ while (object != null && index < length) {
3867
+ object = object[path[index++]];
3891
3868
  }
3892
3869
  return (index && index == length) ? object : undefined;
3893
3870
  }
@@ -3896,10 +3873,12 @@ return /******/ (function(modules) { // webpackBootstrap
3896
3873
 
3897
3874
 
3898
3875
  /***/ },
3899
- /* 80 */
3876
+ /* 82 */
3900
3877
  /***/ function(module, exports, __webpack_require__) {
3901
3878
 
3902
- var baseIsEqualDeep = __webpack_require__(92);
3879
+ var baseIsEqualDeep = __webpack_require__(90),
3880
+ isObject = __webpack_require__(25),
3881
+ isObjectLike = __webpack_require__(29);
3903
3882
 
3904
3883
  /**
3905
3884
  * The base implementation of `_.isEqual` without support for `this` binding
@@ -3915,17 +3894,10 @@ return /******/ (function(modules) { // webpackBootstrap
3915
3894
  * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3916
3895
  */
3917
3896
  function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
3918
- // Exit early for identical values.
3919
3897
  if (value === other) {
3920
3898
  return true;
3921
3899
  }
3922
- var valType = typeof value,
3923
- othType = typeof other;
3924
-
3925
- // Exit early for unlike primitive values.
3926
- if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
3927
- value == null || other == null) {
3928
- // Return `false` unless both values are `NaN`.
3900
+ if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
3929
3901
  return value !== value && other !== other;
3930
3902
  }
3931
3903
  return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
@@ -3935,7 +3907,7 @@ return /******/ (function(modules) { // webpackBootstrap
3935
3907
 
3936
3908
 
3937
3909
  /***/ },
3938
- /* 81 */
3910
+ /* 83 */
3939
3911
  /***/ function(module, exports, __webpack_require__) {
3940
3912
 
3941
3913
  /**
@@ -3973,11 +3945,11 @@ return /******/ (function(modules) { // webpackBootstrap
3973
3945
 
3974
3946
 
3975
3947
  /***/ },
3976
- /* 82 */
3948
+ /* 84 */
3977
3949
  /***/ function(module, exports, __webpack_require__) {
3978
3950
 
3979
- var isArray = __webpack_require__(29),
3980
- toObject = __webpack_require__(78);
3951
+ var isArray = __webpack_require__(46),
3952
+ toObject = __webpack_require__(80);
3981
3953
 
3982
3954
  /** Used to match property names within property paths. */
3983
3955
  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
@@ -4007,7 +3979,28 @@ return /******/ (function(modules) { // webpackBootstrap
4007
3979
 
4008
3980
 
4009
3981
  /***/ },
4010
- /* 83 */
3982
+ /* 85 */
3983
+ /***/ function(module, exports, __webpack_require__) {
3984
+
3985
+ var isObject = __webpack_require__(25);
3986
+
3987
+ /**
3988
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3989
+ *
3990
+ * @private
3991
+ * @param {*} value The value to check.
3992
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
3993
+ * equality comparisons, else `false`.
3994
+ */
3995
+ function isStrictComparable(value) {
3996
+ return value === value && !isObject(value);
3997
+ }
3998
+
3999
+ module.exports = isStrictComparable;
4000
+
4001
+
4002
+ /***/ },
4003
+ /* 86 */
4011
4004
  /***/ function(module, exports, __webpack_require__) {
4012
4005
 
4013
4006
  /**
@@ -4032,11 +4025,11 @@ return /******/ (function(modules) { // webpackBootstrap
4032
4025
 
4033
4026
 
4034
4027
  /***/ },
4035
- /* 84 */
4028
+ /* 87 */
4036
4029
  /***/ function(module, exports, __webpack_require__) {
4037
4030
 
4038
- var baseToString = __webpack_require__(86),
4039
- isArray = __webpack_require__(29);
4031
+ var baseToString = __webpack_require__(91),
4032
+ isArray = __webpack_require__(46);
4040
4033
 
4041
4034
  /** Used to match property names within property paths. */
4042
4035
  var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
@@ -4045,7 +4038,7 @@ return /******/ (function(modules) { // webpackBootstrap
4045
4038
  var reEscapeChar = /\\(\\)?/g;
4046
4039
 
4047
4040
  /**
4048
- * Converts `value` to property path array if it is not one.
4041
+ * Converts `value` to property path array if it's not one.
4049
4042
  *
4050
4043
  * @private
4051
4044
  * @param {*} value The value to process.
@@ -4066,11 +4059,11 @@ return /******/ (function(modules) { // webpackBootstrap
4066
4059
 
4067
4060
 
4068
4061
  /***/ },
4069
- /* 85 */
4062
+ /* 88 */
4070
4063
  /***/ function(module, exports, __webpack_require__) {
4071
4064
 
4072
- var baseGet = __webpack_require__(79),
4073
- toPath = __webpack_require__(84);
4065
+ var baseGet = __webpack_require__(81),
4066
+ toPath = __webpack_require__(87);
4074
4067
 
4075
4068
  /**
4076
4069
  * A specialized version of `baseProperty` which supports deep paths.
@@ -4091,211 +4084,53 @@ return /******/ (function(modules) { // webpackBootstrap
4091
4084
 
4092
4085
 
4093
4086
  /***/ },
4094
- /* 86 */
4087
+ /* 89 */
4095
4088
  /***/ function(module, exports, __webpack_require__) {
4096
4089
 
4097
- /**
4098
- * Converts `value` to a string if it is not one. An empty string is returned
4099
- * for `null` or `undefined` values.
4100
- *
4101
- * @private
4102
- * @param {*} value The value to process.
4103
- * @returns {string} Returns the string.
4104
- */
4105
- function baseToString(value) {
4106
- if (typeof value == 'string') {
4107
- return value;
4108
- }
4109
- return value == null ? '' : (value + '');
4110
- }
4090
+ var keys = __webpack_require__(17),
4091
+ toObject = __webpack_require__(80);
4111
4092
 
4112
- module.exports = baseToString;
4113
-
4114
-
4115
- /***/ },
4116
- /* 87 */
4117
- /***/ function(module, exports, __webpack_require__) {
4118
-
4119
4093
  /**
4120
- * Copies properties of `source` to `object`.
4094
+ * Creates a two dimensional array of the key-value pairs for `object`,
4095
+ * e.g. `[[key1, value1], [key2, value2]]`.
4121
4096
  *
4122
- * @private
4123
- * @param {Object} source The object to copy properties from.
4124
- * @param {Array} props The property names to copy.
4125
- * @param {Object} [object={}] The object to copy properties to.
4126
- * @returns {Object} Returns `object`.
4097
+ * @static
4098
+ * @memberOf _
4099
+ * @category Object
4100
+ * @param {Object} object The object to query.
4101
+ * @returns {Array} Returns the new array of key-value pairs.
4102
+ * @example
4103
+ *
4104
+ * _.pairs({ 'barney': 36, 'fred': 40 });
4105
+ * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
4127
4106
  */
4128
- function baseCopy(source, props, object) {
4129
- object || (object = {});
4107
+ function pairs(object) {
4108
+ object = toObject(object);
4130
4109
 
4131
4110
  var index = -1,
4132
- length = props.length;
4111
+ props = keys(object),
4112
+ length = props.length,
4113
+ result = Array(length);
4133
4114
 
4134
4115
  while (++index < length) {
4135
4116
  var key = props[index];
4136
- object[key] = source[key];
4117
+ result[index] = [key, object[key]];
4137
4118
  }
4138
- return object;
4139
- }
4140
-
4141
- module.exports = baseCopy;
4142
-
4143
-
4144
- /***/ },
4145
- /* 88 */
4146
- /***/ function(module, exports, __webpack_require__) {
4147
-
4148
- var constant = __webpack_require__(70),
4149
- isNative = __webpack_require__(38),
4150
- toObject = __webpack_require__(78);
4151
-
4152
- /** Native method references. */
4153
- var getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols;
4154
-
4155
- /**
4156
- * Creates an array of the own symbols of `object`.
4157
- *
4158
- * @private
4159
- * @param {Object} object The object to query.
4160
- * @returns {Array} Returns the array of symbols.
4161
- */
4162
- var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) {
4163
- return getOwnPropertySymbols(toObject(object));
4164
- };
4165
-
4166
- module.exports = getSymbols;
4167
-
4168
-
4169
- /***/ },
4170
- /* 89 */
4171
- /***/ function(module, exports, __webpack_require__) {
4172
-
4173
- /* WEBPACK VAR INJECTION */(function(global) {var constant = __webpack_require__(70),
4174
- isNative = __webpack_require__(38);
4175
-
4176
- /** Native method references. */
4177
- var ArrayBuffer = isNative(ArrayBuffer = global.ArrayBuffer) && ArrayBuffer,
4178
- bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice,
4179
- floor = Math.floor,
4180
- Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array;
4181
-
4182
- /** Used to clone array buffers. */
4183
- var Float64Array = (function() {
4184
- // Safari 5 errors when using an array buffer to initialize a typed array
4185
- // where the array buffer's `byteLength` is not a multiple of the typed
4186
- // array's `BYTES_PER_ELEMENT`.
4187
- try {
4188
- var func = isNative(func = global.Float64Array) && func,
4189
- result = new func(new ArrayBuffer(10), 0, 1) && func;
4190
- } catch(e) {}
4191
4119
  return result;
4192
- }());
4193
-
4194
- /** Used as the size, in bytes, of each `Float64Array` element. */
4195
- var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
4196
-
4197
- /**
4198
- * Creates a clone of the given array buffer.
4199
- *
4200
- * @private
4201
- * @param {ArrayBuffer} buffer The array buffer to clone.
4202
- * @returns {ArrayBuffer} Returns the cloned array buffer.
4203
- */
4204
- function bufferClone(buffer) {
4205
- return bufferSlice.call(buffer, 0);
4206
- }
4207
- if (!bufferSlice) {
4208
- // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
4209
- bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
4210
- var byteLength = buffer.byteLength,
4211
- floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
4212
- offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
4213
- result = new ArrayBuffer(byteLength);
4214
-
4215
- if (floatLength) {
4216
- var view = new Float64Array(result, 0, floatLength);
4217
- view.set(new Float64Array(buffer, 0, floatLength));
4218
- }
4219
- if (byteLength != offset) {
4220
- view = new Uint8Array(result, offset);
4221
- view.set(new Uint8Array(buffer, offset));
4222
- }
4223
- return result;
4224
- };
4225
- }
4226
-
4227
- module.exports = bufferClone;
4228
-
4229
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4230
-
4231
- /***/ },
4232
- /* 90 */
4233
- /***/ function(module, exports, __webpack_require__) {
4234
-
4235
- var isObject = __webpack_require__(25);
4236
-
4237
- /**
4238
- * Adds `value` to the cache.
4239
- *
4240
- * @private
4241
- * @name push
4242
- * @memberOf SetCache
4243
- * @param {*} value The value to cache.
4244
- */
4245
- function cachePush(value) {
4246
- var data = this.data;
4247
- if (typeof value == 'string' || isObject(value)) {
4248
- data.set.add(value);
4249
- } else {
4250
- data.hash[value] = true;
4251
- }
4252
- }
4253
-
4254
- module.exports = cachePush;
4255
-
4256
-
4257
- /***/ },
4258
- /* 91 */
4259
- /***/ function(module, exports, __webpack_require__) {
4260
-
4261
- var toObject = __webpack_require__(78);
4262
-
4263
- /**
4264
- * Creates a base function for `_.forIn` or `_.forInRight`.
4265
- *
4266
- * @private
4267
- * @param {boolean} [fromRight] Specify iterating from right to left.
4268
- * @returns {Function} Returns the new base function.
4269
- */
4270
- function createBaseFor(fromRight) {
4271
- return function(object, iteratee, keysFunc) {
4272
- var iterable = toObject(object),
4273
- props = keysFunc(object),
4274
- length = props.length,
4275
- index = fromRight ? length : -1;
4276
-
4277
- while ((fromRight ? index-- : ++index < length)) {
4278
- var key = props[index];
4279
- if (iteratee(iterable[key], key, iterable) === false) {
4280
- break;
4281
- }
4282
- }
4283
- return object;
4284
- };
4285
4120
  }
4286
4121
 
4287
- module.exports = createBaseFor;
4122
+ module.exports = pairs;
4288
4123
 
4289
4124
 
4290
4125
  /***/ },
4291
- /* 92 */
4126
+ /* 90 */
4292
4127
  /***/ function(module, exports, __webpack_require__) {
4293
4128
 
4294
- var equalArrays = __webpack_require__(93),
4295
- equalByTag = __webpack_require__(94),
4296
- equalObjects = __webpack_require__(95),
4297
- isArray = __webpack_require__(29),
4298
- isTypedArray = __webpack_require__(96);
4129
+ var equalArrays = __webpack_require__(92),
4130
+ equalByTag = __webpack_require__(93),
4131
+ equalObjects = __webpack_require__(94),
4132
+ isArray = __webpack_require__(46),
4133
+ isTypedArray = __webpack_require__(95);
4299
4134
 
4300
4135
  /** `Object#toString` result references. */
4301
4136
  var argsTag = '[object Arguments]',
@@ -4309,7 +4144,7 @@ return /******/ (function(modules) { // webpackBootstrap
4309
4144
  var hasOwnProperty = objectProto.hasOwnProperty;
4310
4145
 
4311
4146
  /**
4312
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
4147
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
4313
4148
  * of values.
4314
4149
  */
4315
4150
  var objToString = objectProto.toString;
@@ -4359,11 +4194,11 @@ return /******/ (function(modules) { // webpackBootstrap
4359
4194
  return equalByTag(object, other, objTag);
4360
4195
  }
4361
4196
  if (!isLoose) {
4362
- var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
4363
- othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
4197
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
4198
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
4364
4199
 
4365
- if (valWrapped || othWrapped) {
4366
- return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
4200
+ if (objIsWrapped || othIsWrapped) {
4201
+ return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
4367
4202
  }
4368
4203
  }
4369
4204
  if (!isSameTag) {
@@ -4396,9 +4231,30 @@ return /******/ (function(modules) { // webpackBootstrap
4396
4231
 
4397
4232
 
4398
4233
  /***/ },
4399
- /* 93 */
4234
+ /* 91 */
4235
+ /***/ function(module, exports, __webpack_require__) {
4236
+
4237
+ /**
4238
+ * Converts `value` to a string if it's not one. An empty string is returned
4239
+ * for `null` or `undefined` values.
4240
+ *
4241
+ * @private
4242
+ * @param {*} value The value to process.
4243
+ * @returns {string} Returns the string.
4244
+ */
4245
+ function baseToString(value) {
4246
+ return value == null ? '' : (value + '');
4247
+ }
4248
+
4249
+ module.exports = baseToString;
4250
+
4251
+
4252
+ /***/ },
4253
+ /* 92 */
4400
4254
  /***/ function(module, exports, __webpack_require__) {
4401
4255
 
4256
+ var arraySome = __webpack_require__(96);
4257
+
4402
4258
  /**
4403
4259
  * A specialized version of `baseIsEqualDeep` for arrays with support for
4404
4260
  * partial deep comparisons.
@@ -4416,47 +4272,42 @@ return /******/ (function(modules) { // webpackBootstrap
4416
4272
  function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
4417
4273
  var index = -1,
4418
4274
  arrLength = array.length,
4419
- othLength = other.length,
4420
- result = true;
4275
+ othLength = other.length;
4421
4276
 
4422
4277
  if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
4423
4278
  return false;
4424
4279
  }
4425
- // Deep compare the contents, ignoring non-numeric properties.
4426
- while (result && ++index < arrLength) {
4280
+ // Ignore non-index properties.
4281
+ while (++index < arrLength) {
4427
4282
  var arrValue = array[index],
4428
- othValue = other[index];
4283
+ othValue = other[index],
4284
+ result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
4429
4285
 
4430
- result = undefined;
4431
- if (customizer) {
4432
- result = isLoose
4433
- ? customizer(othValue, arrValue, index)
4434
- : customizer(arrValue, othValue, index);
4286
+ if (result !== undefined) {
4287
+ if (result) {
4288
+ continue;
4289
+ }
4290
+ return false;
4435
4291
  }
4436
- if (result === undefined) {
4437
- // Recursively compare arrays (susceptible to call stack limits).
4438
- if (isLoose) {
4439
- var othIndex = othLength;
4440
- while (othIndex--) {
4441
- othValue = other[othIndex];
4442
- result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
4443
- if (result) {
4444
- break;
4445
- }
4446
- }
4447
- } else {
4448
- result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
4292
+ // Recursively compare arrays (susceptible to call stack limits).
4293
+ if (isLoose) {
4294
+ if (!arraySome(other, function(othValue) {
4295
+ return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
4296
+ })) {
4297
+ return false;
4449
4298
  }
4299
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
4300
+ return false;
4450
4301
  }
4451
4302
  }
4452
- return !!result;
4303
+ return true;
4453
4304
  }
4454
4305
 
4455
4306
  module.exports = equalArrays;
4456
4307
 
4457
4308
 
4458
4309
  /***/ },
4459
- /* 94 */
4310
+ /* 93 */
4460
4311
  /***/ function(module, exports, __webpack_require__) {
4461
4312
 
4462
4313
  /** `Object#toString` result references. */
@@ -4475,7 +4326,7 @@ return /******/ (function(modules) { // webpackBootstrap
4475
4326
  * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
4476
4327
  *
4477
4328
  * @private
4478
- * @param {Object} value The object to compare.
4329
+ * @param {Object} object The object to compare.
4479
4330
  * @param {Object} other The other object to compare.
4480
4331
  * @param {string} tag The `toStringTag` of the objects to compare.
4481
4332
  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
@@ -4510,10 +4361,10 @@ return /******/ (function(modules) { // webpackBootstrap
4510
4361
 
4511
4362
 
4512
4363
  /***/ },
4513
- /* 95 */
4364
+ /* 94 */
4514
4365
  /***/ function(module, exports, __webpack_require__) {
4515
4366
 
4516
- var keys = __webpack_require__(21);
4367
+ var keys = __webpack_require__(17);
4517
4368
 
4518
4369
  /** Used for native method references. */
4519
4370
  var objectProto = Object.prototype;
@@ -4544,29 +4395,22 @@ return /******/ (function(modules) { // webpackBootstrap
4544
4395
  if (objLength != othLength && !isLoose) {
4545
4396
  return false;
4546
4397
  }
4547
- var skipCtor = isLoose,
4548
- index = -1;
4549
-
4550
- while (++index < objLength) {
4551
- var key = objProps[index],
4552
- result = isLoose ? key in other : hasOwnProperty.call(other, key);
4553
-
4554
- if (result) {
4555
- var objValue = object[key],
4556
- othValue = other[key];
4557
-
4558
- result = undefined;
4559
- if (customizer) {
4560
- result = isLoose
4561
- ? customizer(othValue, objValue, key)
4562
- : customizer(objValue, othValue, key);
4563
- }
4564
- if (result === undefined) {
4565
- // Recursively compare objects (susceptible to call stack limits).
4566
- result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB);
4567
- }
4398
+ var index = objLength;
4399
+ while (index--) {
4400
+ var key = objProps[index];
4401
+ if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
4402
+ return false;
4568
4403
  }
4569
- if (!result) {
4404
+ }
4405
+ var skipCtor = isLoose;
4406
+ while (++index < objLength) {
4407
+ key = objProps[index];
4408
+ var objValue = object[key],
4409
+ othValue = other[key],
4410
+ result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
4411
+
4412
+ // Recursively compare objects (susceptible to call stack limits).
4413
+ if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
4570
4414
  return false;
4571
4415
  }
4572
4416
  skipCtor || (skipCtor = key == 'constructor');
@@ -4590,11 +4434,11 @@ return /******/ (function(modules) { // webpackBootstrap
4590
4434
 
4591
4435
 
4592
4436
  /***/ },
4593
- /* 96 */
4437
+ /* 95 */
4594
4438
  /***/ function(module, exports, __webpack_require__) {
4595
4439
 
4596
- var isLength = __webpack_require__(36),
4597
- isObjectLike = __webpack_require__(43);
4440
+ var isLength = __webpack_require__(51),
4441
+ isObjectLike = __webpack_require__(29);
4598
4442
 
4599
4443
  /** `Object#toString` result references. */
4600
4444
  var argsTag = '[object Arguments]',
@@ -4641,7 +4485,7 @@ return /******/ (function(modules) { // webpackBootstrap
4641
4485
  var objectProto = Object.prototype;
4642
4486
 
4643
4487
  /**
4644
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
4488
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
4645
4489
  * of values.
4646
4490
  */
4647
4491
  var objToString = objectProto.toString;
@@ -4669,6 +4513,35 @@ return /******/ (function(modules) { // webpackBootstrap
4669
4513
  module.exports = isTypedArray;
4670
4514
 
4671
4515
 
4516
+ /***/ },
4517
+ /* 96 */
4518
+ /***/ function(module, exports, __webpack_require__) {
4519
+
4520
+ /**
4521
+ * A specialized version of `_.some` for arrays without support for callback
4522
+ * shorthands and `this` binding.
4523
+ *
4524
+ * @private
4525
+ * @param {Array} array The array to iterate over.
4526
+ * @param {Function} predicate The function invoked per iteration.
4527
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
4528
+ * else `false`.
4529
+ */
4530
+ function arraySome(array, predicate) {
4531
+ var index = -1,
4532
+ length = array.length;
4533
+
4534
+ while (++index < length) {
4535
+ if (predicate(array[index], index, array)) {
4536
+ return true;
4537
+ }
4538
+ }
4539
+ return false;
4540
+ }
4541
+
4542
+ module.exports = arraySome;
4543
+
4544
+
4672
4545
  /***/ }
4673
4546
  /******/ ])
4674
4547
  });