All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.07ba022f-1217.93c87e61ecdf6cb83aaa.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"07ba022f-1217.93c87e61ecdf6cb83aaa.js","mappings":"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","sources":["webpack://graylog-web-interface/./node_modules/crossfilter/crossfilter.js","webpack://graylog-web-interface/./node_modules/crossfilter/index.js","webpack://graylog-web-interface/./node_modules/lodash/_baseReduce.js","webpack://graylog-web-interface/./node_modules/lodash/mapKeys.js","webpack://graylog-web-interface/./node_modules/lodash/reduce.js"],"sourcesContent":["(function(exports){\ncrossfilter.version = \"1.3.12\";\nfunction crossfilter_identity(d) {\n  return d;\n}\ncrossfilter.permute = permute;\n\nfunction permute(array, index) {\n  for (var i = 0, n = index.length, copy = new Array(n); i < n; ++i) {\n    copy[i] = array[index[i]];\n  }\n  return copy;\n}\nvar bisect = crossfilter.bisect = bisect_by(crossfilter_identity);\n\nbisect.by = bisect_by;\n\nfunction bisect_by(f) {\n\n  // Locate the insertion point for x in a to maintain sorted order. The\n  // arguments lo and hi may be used to specify a subset of the array which\n  // should be considered; by default the entire array is used. If x is already\n  // present in a, the insertion point will be before (to the left of) any\n  // existing entries. The return value is suitable for use as the first\n  // argument to `array.splice` assuming that a is already sorted.\n  //\n  // The returned insertion point i partitions the array a into two halves so\n  // that all v < x for v in a[lo:i] for the left side and all v >= x for v in\n  // a[i:hi] for the right side.\n  function bisectLeft(a, x, lo, hi) {\n    while (lo < hi) {\n      var mid = lo + hi >>> 1;\n      if (f(a[mid]) < x) lo = mid + 1;\n      else hi = mid;\n    }\n    return lo;\n  }\n\n  // Similar to bisectLeft, but returns an insertion point which comes after (to\n  // the right of) any existing entries of x in a.\n  //\n  // The returned insertion point i partitions the array into two halves so that\n  // all v <= x for v in a[lo:i] for the left side and all v > x for v in\n  // a[i:hi] for the right side.\n  function bisectRight(a, x, lo, hi) {\n    while (lo < hi) {\n      var mid = lo + hi >>> 1;\n      if (x < f(a[mid])) hi = mid;\n      else lo = mid + 1;\n    }\n    return lo;\n  }\n\n  bisectRight.right = bisectRight;\n  bisectRight.left = bisectLeft;\n  return bisectRight;\n}\nvar heap = crossfilter.heap = heap_by(crossfilter_identity);\n\nheap.by = heap_by;\n\nfunction heap_by(f) {\n\n  // Builds a binary heap within the specified array a[lo:hi]. The heap has the\n  // property such that the parent a[lo+i] is always less than or equal to its\n  // two children: a[lo+2*i+1] and a[lo+2*i+2].\n  function heap(a, lo, hi) {\n    var n = hi - lo,\n        i = (n >>> 1) + 1;\n    while (--i > 0) sift(a, i, n, lo);\n    return a;\n  }\n\n  // Sorts the specified array a[lo:hi] in descending order, assuming it is\n  // already a heap.\n  function sort(a, lo, hi) {\n    var n = hi - lo,\n        t;\n    while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo);\n    return a;\n  }\n\n  // Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous\n  // slice of array a[lo:lo+n]. This method can also be used to update the heap\n  // incrementally, without incurring the full cost of reconstructing the heap.\n  function sift(a, i, n, lo) {\n    var d = a[--lo + i],\n        x = f(d),\n        child;\n    while ((child = i << 1) <= n) {\n      if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++;\n      if (x <= f(a[lo + child])) break;\n      a[lo + i] = a[lo + child];\n      i = child;\n    }\n    a[lo + i] = d;\n  }\n\n  heap.sort = sort;\n  return heap;\n}\nvar heapselect = crossfilter.heapselect = heapselect_by(crossfilter_identity);\n\nheapselect.by = heapselect_by;\n\nfunction heapselect_by(f) {\n  var heap = heap_by(f);\n\n  // Returns a new array containing the top k elements in the array a[lo:hi].\n  // The returned array is not sorted, but maintains the heap property. If k is\n  // greater than hi - lo, then fewer than k elements will be returned. The\n  // order of elements in a is unchanged by this operation.\n  function heapselect(a, lo, hi, k) {\n    var queue = new Array(k = Math.min(hi - lo, k)),\n        min,\n        i,\n        x,\n        d;\n\n    for (i = 0; i < k; ++i) queue[i] = a[lo++];\n    heap(queue, 0, k);\n\n    if (lo < hi) {\n      min = f(queue[0]);\n      do {\n        if (x = f(d = a[lo]) > min) {\n          queue[0] = d;\n          min = f(heap(queue, 0, k)[0]);\n        }\n      } while (++lo < hi);\n    }\n\n    return queue;\n  }\n\n  return heapselect;\n}\nvar insertionsort = crossfilter.insertionsort = insertionsort_by(crossfilter_identity);\n\ninsertionsort.by = insertionsort_by;\n\nfunction insertionsort_by(f) {\n\n  function insertionsort(a, lo, hi) {\n    for (var i = lo + 1; i < hi; ++i) {\n      for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) {\n        a[j] = a[j - 1];\n      }\n      a[j] = t;\n    }\n    return a;\n  }\n\n  return insertionsort;\n}\n// Algorithm designed by Vladimir Yaroslavskiy.\n// Implementation based on the Dart project; see lib/dart/LICENSE for details.\n\nvar quicksort = crossfilter.quicksort = quicksort_by(crossfilter_identity);\n\nquicksort.by = quicksort_by;\n\nfunction quicksort_by(f) {\n  var insertionsort = insertionsort_by(f);\n\n  function sort(a, lo, hi) {\n    return (hi - lo < quicksort_sizeThreshold\n        ? insertionsort\n        : quicksort)(a, lo, hi);\n  }\n\n  function quicksort(a, lo, hi) {\n    // Compute the two pivots by looking at 5 elements.\n    var sixth = (hi - lo) / 6 | 0,\n        i1 = lo + sixth,\n        i5 = hi - 1 - sixth,\n        i3 = lo + hi - 1 >> 1,  // The midpoint.\n        i2 = i3 - sixth,\n        i4 = i3 + sixth;\n\n    var e1 = a[i1], x1 = f(e1),\n        e2 = a[i2], x2 = f(e2),\n        e3 = a[i3], x3 = f(e3),\n        e4 = a[i4], x4 = f(e4),\n        e5 = a[i5], x5 = f(e5);\n\n    var t;\n\n    // Sort the selected 5 elements using a sorting network.\n    if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t;\n    if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;\n    if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t;\n    if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;\n    if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t;\n    if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t;\n    if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t;\n    if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;\n    if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;\n\n    var pivot1 = e2, pivotValue1 = x2,\n        pivot2 = e4, pivotValue2 = x4;\n\n    // e2 and e4 have been saved in the pivot variables. They will be written\n    // back, once the partitioning is finished.\n    a[i1] = e1;\n    a[i2] = a[lo];\n    a[i3] = e3;\n    a[i4] = a[hi - 1];\n    a[i5] = e5;\n\n    var less = lo + 1,   // First element in the middle partition.\n        great = hi - 2;  // Last element in the middle partition.\n\n    // Note that for value comparison, <, <=, >= and > coerce to a primitive via\n    // Object.prototype.valueOf; == and === do not, so in order to be consistent\n    // with natural order (such as for Date objects), we must do two compares.\n    var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2;\n    if (pivotsEqual) {\n\n      // Degenerated case where the partitioning becomes a dutch national flag\n      // problem.\n      //\n      // [ |  < pivot  | == pivot | unpartitioned | > pivot  | ]\n      //  ^             ^          ^             ^            ^\n      // left         less         k           great         right\n      //\n      // a[left] and a[right] are undefined and are filled after the\n      // partitioning.\n      //\n      // Invariants:\n      //   1) for x in ]left, less[ : x < pivot.\n      //   2) for x in [less, k[ : x == pivot.\n      //   3) for x in ]great, right[ : x > pivot.\n      for (var k = less; k <= great; ++k) {\n        var ek = a[k], xk = f(ek);\n        if (xk < pivotValue1) {\n          if (k !== less) {\n            a[k] = a[less];\n            a[less] = ek;\n          }\n          ++less;\n        } else if (xk > pivotValue1) {\n\n          // Find the first element <= pivot in the range [k - 1, great] and\n          // put [:ek:] there. We know that such an element must exist:\n          // When k == less, then el3 (which is equal to pivot) lies in the\n          // interval. Otherwise a[k - 1] == pivot and the search stops at k-1.\n          // Note that in the latter case invariant 2 will be violated for a\n          // short amount of time. The invariant will be restored when the\n          // pivots are put into their final positions.\n          while (true) {\n            var greatValue = f(a[great]);\n            if (greatValue > pivotValue1) {\n              great--;\n              // This is the only location in the while-loop where a new\n              // iteration is started.\n              continue;\n            } else if (greatValue < pivotValue1) {\n              // Triple exchange.\n              a[k] = a[less];\n              a[less++] = a[great];\n              a[great--] = ek;\n              break;\n            } else {\n              a[k] = a[great];\n              a[great--] = ek;\n              // Note: if great < k then we will exit the outer loop and fix\n              // invariant 2 (which we just violated).\n              break;\n            }\n          }\n        }\n      }\n    } else {\n\n      // We partition the list into three parts:\n      //  1. < pivot1\n      //  2. >= pivot1 && <= pivot2\n      //  3. > pivot2\n      //\n      // During the loop we have:\n      // [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned  | > pivot2  | ]\n      //  ^            ^                        ^              ^             ^\n      // left         less                     k              great        right\n      //\n      // a[left] and a[right] are undefined and are filled after the\n      // partitioning.\n      //\n      // Invariants:\n      //   1. for x in ]left, less[ : x < pivot1\n      //   2. for x in [less, k[ : pivot1 <= x && x <= pivot2\n      //   3. for x in ]great, right[ : x > pivot2\n      for (var k = less; k <= great; k++) {\n        var ek = a[k], xk = f(ek);\n        if (xk < pivotValue1) {\n          if (k !== less) {\n            a[k] = a[less];\n            a[less] = ek;\n          }\n          ++less;\n        } else {\n          if (xk > pivotValue2) {\n            while (true) {\n              var greatValue = f(a[great]);\n              if (greatValue > pivotValue2) {\n                great--;\n                if (great < k) break;\n                // This is the only location inside the loop where a new\n                // iteration is started.\n                continue;\n              } else {\n                // a[great] <= pivot2.\n                if (greatValue < pivotValue1) {\n                  // Triple exchange.\n                  a[k] = a[less];\n                  a[less++] = a[great];\n                  a[great--] = ek;\n                } else {\n                  // a[great] >= pivot1.\n                  a[k] = a[great];\n                  a[great--] = ek;\n                }\n                break;\n              }\n            }\n          }\n        }\n      }\n    }\n\n    // Move pivots into their final positions.\n    // We shrunk the list from both sides (a[left] and a[right] have\n    // meaningless values in them) and now we move elements from the first\n    // and third partition into these locations so that we can store the\n    // pivots.\n    a[lo] = a[less - 1];\n    a[less - 1] = pivot1;\n    a[hi - 1] = a[great + 1];\n    a[great + 1] = pivot2;\n\n    // The list is now partitioned into three partitions:\n    // [ < pivot1   | >= pivot1 && <= pivot2   |  > pivot2   ]\n    //  ^            ^                        ^             ^\n    // left         less                     great        right\n\n    // Recursive descent. (Don't include the pivot values.)\n    sort(a, lo, less - 1);\n    sort(a, great + 2, hi);\n\n    if (pivotsEqual) {\n      // All elements in the second partition are equal to the pivot. No\n      // need to sort them.\n      return a;\n    }\n\n    // In theory it should be enough to call _doSort recursively on the second\n    // partition.\n    // The Android source however removes the pivot elements from the recursive\n    // call if the second partition is too large (more than 2/3 of the list).\n    if (less < i1 && great > i5) {\n      var lessValue, greatValue;\n      while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less;\n      while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great;\n\n      // Copy paste of the previous 3-way partitioning with adaptions.\n      //\n      // We partition the list into three parts:\n      //  1. == pivot1\n      //  2. > pivot1 && < pivot2\n      //  3. == pivot2\n      //\n      // During the loop we have:\n      // [ == pivot1 | > pivot1 && < pivot2 | unpartitioned  | == pivot2 ]\n      //              ^                      ^              ^\n      //            less                     k              great\n      //\n      // Invariants:\n      //   1. for x in [ *, less[ : x == pivot1\n      //   2. for x in [less, k[ : pivot1 < x && x < pivot2\n      //   3. for x in ]great, * ] : x == pivot2\n      for (var k = less; k <= great; k++) {\n        var ek = a[k], xk = f(ek);\n        if (xk <= pivotValue1 && xk >= pivotValue1) {\n          if (k !== less) {\n            a[k] = a[less];\n            a[less] = ek;\n          }\n          less++;\n        } else {\n          if (xk <= pivotValue2 && xk >= pivotValue2) {\n            while (true) {\n              var greatValue = f(a[great]);\n              if (greatValue <= pivotValue2 && greatValue >= pivotValue2) {\n                great--;\n                if (great < k) break;\n                // This is the only location inside the loop where a new\n                // iteration is started.\n                continue;\n              } else {\n                // a[great] < pivot2.\n                if (greatValue < pivotValue1) {\n                  // Triple exchange.\n                  a[k] = a[less];\n                  a[less++] = a[great];\n                  a[great--] = ek;\n                } else {\n                  // a[great] == pivot1.\n                  a[k] = a[great];\n                  a[great--] = ek;\n                }\n                break;\n              }\n            }\n          }\n        }\n      }\n    }\n\n    // The second partition has now been cleared of pivot elements and looks\n    // as follows:\n    // [  *  |  > pivot1 && < pivot2  | * ]\n    //        ^                      ^\n    //       less                  great\n    // Sort the second partition using recursive descent.\n\n    // The second partition looks as follows:\n    // [  *  |  >= pivot1 && <= pivot2  | * ]\n    //        ^                        ^\n    //       less                    great\n    // Simply sort it by recursive descent.\n\n    return sort(a, less, great + 1);\n  }\n\n  return sort;\n}\n\nvar quicksort_sizeThreshold = 32;\nvar crossfilter_array8 = crossfilter_arrayUntyped,\n    crossfilter_array16 = crossfilter_arrayUntyped,\n    crossfilter_array32 = crossfilter_arrayUntyped,\n    crossfilter_arrayLengthen = crossfilter_arrayLengthenUntyped,\n    crossfilter_arrayWiden = crossfilter_arrayWidenUntyped;\n\nif (typeof Uint8Array !== \"undefined\") {\n  crossfilter_array8 = function(n) { return new Uint8Array(n); };\n  crossfilter_array16 = function(n) { return new Uint16Array(n); };\n  crossfilter_array32 = function(n) { return new Uint32Array(n); };\n\n  crossfilter_arrayLengthen = function(array, length) {\n    if (array.length >= length) return array;\n    var copy = new array.constructor(length);\n    copy.set(array);\n    return copy;\n  };\n\n  crossfilter_arrayWiden = function(array, width) {\n    var copy;\n    switch (width) {\n      case 16: copy = crossfilter_array16(array.length); break;\n      case 32: copy = crossfilter_array32(array.length); break;\n      default: throw new Error(\"invalid array width!\");\n    }\n    copy.set(array);\n    return copy;\n  };\n}\n\nfunction crossfilter_arrayUntyped(n) {\n  var array = new Array(n), i = -1;\n  while (++i < n) array[i] = 0;\n  return array;\n}\n\nfunction crossfilter_arrayLengthenUntyped(array, length) {\n  var n = array.length;\n  while (n < length) array[n++] = 0;\n  return array;\n}\n\nfunction crossfilter_arrayWidenUntyped(array, width) {\n  if (width > 32) throw new Error(\"invalid array width!\");\n  return array;\n}\nfunction crossfilter_filterExact(bisect, value) {\n  return function(values) {\n    var n = values.length;\n    return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)];\n  };\n}\n\nfunction crossfilter_filterRange(bisect, range) {\n  var min = range[0],\n      max = range[1];\n  return function(values) {\n    var n = values.length;\n    return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)];\n  };\n}\n\nfunction crossfilter_filterAll(values) {\n  return [0, values.length];\n}\nfunction crossfilter_null() {\n  return null;\n}\nfunction crossfilter_zero() {\n  return 0;\n}\nfunction crossfilter_reduceIncrement(p) {\n  return p + 1;\n}\n\nfunction crossfilter_reduceDecrement(p) {\n  return p - 1;\n}\n\nfunction crossfilter_reduceAdd(f) {\n  return function(p, v) {\n    return p + +f(v);\n  };\n}\n\nfunction crossfilter_reduceSubtract(f) {\n  return function(p, v) {\n    return p - f(v);\n  };\n}\nexports.crossfilter = crossfilter;\n\nfunction crossfilter() {\n  var crossfilter = {\n    add: add,\n    remove: removeData,\n    dimension: dimension,\n    groupAll: groupAll,\n    size: size\n  };\n\n  var data = [], // the records\n      n = 0, // the number of records; data.length\n      m = 0, // a bit mask representing which dimensions are in use\n      M = 8, // number of dimensions that can fit in `filters`\n      filters = crossfilter_array8(0), // M bits per record; 1 is filtered out\n      filterListeners = [], // when the filters change\n      dataListeners = [], // when data is added\n      removeDataListeners = []; // when data is removed\n\n  // Adds the specified new records to this crossfilter.\n  function add(newData) {\n    var n0 = n,\n        n1 = newData.length;\n\n    // If there's actually new data to add…\n    // Merge the new data into the existing data.\n    // Lengthen the filter bitset to handle the new records.\n    // Notify listeners (dimensions and groups) that new data is available.\n    if (n1) {\n      data = data.concat(newData);\n      filters = crossfilter_arrayLengthen(filters, n += n1);\n      dataListeners.forEach(function(l) { l(newData, n0, n1); });\n    }\n\n    return crossfilter;\n  }\n\n  // Removes all records that match the current filters.\n  function removeData() {\n    var newIndex = crossfilter_index(n, n),\n        removed = [];\n    for (var i = 0, j = 0; i < n; ++i) {\n      if (filters[i]) newIndex[i] = j++;\n      else removed.push(i);\n    }\n\n    // Remove all matching records from groups.\n    filterListeners.forEach(function(l) { l(0, [], removed); });\n\n    // Update indexes.\n    removeDataListeners.forEach(function(l) { l(newIndex); });\n\n    // Remove old filters and data by overwriting.\n    for (var i = 0, j = 0, k; i < n; ++i) {\n      if (k = filters[i]) {\n        if (i !== j) filters[j] = k, data[j] = data[i];\n        ++j;\n      }\n    }\n    data.length = j;\n    while (n > j) filters[--n] = 0;\n  }\n\n  // Adds a new dimension with the specified value accessor function.\n  function dimension(value) {\n    var dimension = {\n      filter: filter,\n      filterExact: filterExact,\n      filterRange: filterRange,\n      filterFunction: filterFunction,\n      filterAll: filterAll,\n      top: top,\n      bottom: bottom,\n      group: group,\n      groupAll: groupAll,\n      dispose: dispose,\n      remove: dispose // for backwards-compatibility\n    };\n\n    var one = ~m & -~m, // lowest unset bit as mask, e.g., 00001000\n        zero = ~one, // inverted one, e.g., 11110111\n        values, // sorted, cached array\n        index, // value rank ↦ object id\n        newValues, // temporary array storing newly-added values\n        newIndex, // temporary array storing newly-added index\n        sort = quicksort_by(function(i) { return newValues[i]; }),\n        refilter = crossfilter_filterAll, // for recomputing filter\n        refilterFunction, // the custom filter function in use\n        indexListeners = [], // when data is added\n        dimensionGroups = [],\n        lo0 = 0,\n        hi0 = 0;\n\n    // Updating a dimension is a two-stage process. First, we must update the\n    // associated filters for the newly-added records. Once all dimensions have\n    // updated their filters, the groups are notified to update.\n    dataListeners.unshift(preAdd);\n    dataListeners.push(postAdd);\n\n    removeDataListeners.push(removeData);\n\n    // Incorporate any existing data into this dimension, and make sure that the\n    // filter bitset is wide enough to handle the new dimension.\n    m |= one;\n    if (M >= 32 ? !one : m & -(1 << M)) {\n      filters = crossfilter_arrayWiden(filters, M <<= 1);\n    }\n    preAdd(data, 0, n);\n    postAdd(data, 0, n);\n\n    // Incorporates the specified new records into this dimension.\n    // This function is responsible for updating filters, values, and index.\n    function preAdd(newData, n0, n1) {\n\n      // Permute new values into natural order using a sorted index.\n      newValues = newData.map(value);\n      newIndex = sort(crossfilter_range(n1), 0, n1);\n      newValues = permute(newValues, newIndex);\n\n      // Bisect newValues to determine which new records are selected.\n      var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1], i;\n      if (refilterFunction) {\n        for (i = 0; i < n1; ++i) {\n          if (!refilterFunction(newValues[i], i)) filters[newIndex[i] + n0] |= one;\n        }\n      } else {\n        for (i = 0; i < lo1; ++i) filters[newIndex[i] + n0] |= one;\n        for (i = hi1; i < n1; ++i) filters[newIndex[i] + n0] |= one;\n      }\n\n      // If this dimension previously had no data, then we don't need to do the\n      // more expensive merge operation; use the new values and index as-is.\n      if (!n0) {\n        values = newValues;\n        index = newIndex;\n        lo0 = lo1;\n        hi0 = hi1;\n        return;\n      }\n\n      var oldValues = values,\n          oldIndex = index,\n          i0 = 0,\n          i1 = 0;\n\n      // Otherwise, create new arrays into which to merge new and old.\n      values = new Array(n);\n      index = crossfilter_index(n, n);\n\n      // Merge the old and new sorted values, and old and new index.\n      for (i = 0; i0 < n0 && i1 < n1; ++i) {\n        if (oldValues[i0] < newValues[i1]) {\n          values[i] = oldValues[i0];\n          index[i] = oldIndex[i0++];\n        } else {\n          values[i] = newValues[i1];\n          index[i] = newIndex[i1++] + n0;\n        }\n      }\n\n      // Add any remaining old values.\n      for (; i0 < n0; ++i0, ++i) {\n        values[i] = oldValues[i0];\n        index[i] = oldIndex[i0];\n      }\n\n      // Add any remaining new values.\n      for (; i1 < n1; ++i1, ++i) {\n        values[i] = newValues[i1];\n        index[i] = newIndex[i1] + n0;\n      }\n\n      // Bisect again to recompute lo0 and hi0.\n      bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1];\n    }\n\n    // When all filters have updated, notify index listeners of the new values.\n    function postAdd(newData, n0, n1) {\n      indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); });\n      newValues = newIndex = null;\n    }\n\n    function removeData(reIndex) {\n      for (var i = 0, j = 0, k; i < n; ++i) {\n        if (filters[k = index[i]]) {\n          if (i !== j) values[j] = values[i];\n          index[j] = reIndex[k];\n          ++j;\n        }\n      }\n      values.length = j;\n      while (j < n) index[j++] = 0;\n\n      // Bisect again to recompute lo0 and hi0.\n      var bounds = refilter(values);\n      lo0 = bounds[0], hi0 = bounds[1];\n    }\n\n    // Updates the selected values based on the specified bounds [lo, hi].\n    // This implementation is used by all the public filter methods.\n    function filterIndexBounds(bounds) {\n      var lo1 = bounds[0],\n          hi1 = bounds[1];\n\n      if (refilterFunction) {\n        refilterFunction = null;\n        filterIndexFunction(function(d, i) { return lo1 <= i && i < hi1; });\n        lo0 = lo1;\n        hi0 = hi1;\n        return dimension;\n      }\n\n      var i,\n          j,\n          k,\n          added = [],\n          removed = [];\n\n      // Fast incremental update based on previous lo index.\n      if (lo1 < lo0) {\n        for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n          filters[k = index[i]] ^= one;\n          added.push(k);\n        }\n      } else if (lo1 > lo0) {\n        for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n          filters[k = index[i]] ^= one;\n          removed.push(k);\n        }\n      }\n\n      // Fast incremental update based on previous hi index.\n      if (hi1 > hi0) {\n        for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n          filters[k = index[i]] ^= one;\n          added.push(k);\n        }\n      } else if (hi1 < hi0) {\n        for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n          filters[k = index[i]] ^= one;\n          removed.push(k);\n        }\n      }\n\n      lo0 = lo1;\n      hi0 = hi1;\n      filterListeners.forEach(function(l) { l(one, added, removed); });\n      return dimension;\n    }\n\n    // Filters this dimension using the specified range, value, or null.\n    // If the range is null, this is equivalent to filterAll.\n    // If the range is an array, this is equivalent to filterRange.\n    // Otherwise, this is equivalent to filterExact.\n    function filter(range) {\n      return range == null\n          ? filterAll() : Array.isArray(range)\n          ? filterRange(range) : typeof range === \"function\"\n          ? filterFunction(range)\n          : filterExact(range);\n    }\n\n    // Filters this dimension to select the exact value.\n    function filterExact(value) {\n      return filterIndexBounds((refilter = crossfilter_filterExact(bisect, value))(values));\n    }\n\n    // Filters this dimension to select the specified range [lo, hi].\n    // The lower bound is inclusive, and the upper bound is exclusive.\n    function filterRange(range) {\n      return filterIndexBounds((refilter = crossfilter_filterRange(bisect, range))(values));\n    }\n\n    // Clears any filters on this dimension.\n    function filterAll() {\n      return filterIndexBounds((refilter = crossfilter_filterAll)(values));\n    }\n\n    // Filters this dimension using an arbitrary function.\n    function filterFunction(f) {\n      refilter = crossfilter_filterAll;\n\n      filterIndexFunction(refilterFunction = f);\n\n      lo0 = 0;\n      hi0 = n;\n\n      return dimension;\n    }\n\n    function filterIndexFunction(f) {\n      var i,\n          k,\n          x,\n          added = [],\n          removed = [];\n\n      for (i = 0; i < n; ++i) {\n        if (!(filters[k = index[i]] & one) ^ !!(x = f(values[i], i))) {\n          if (x) filters[k] &= zero, added.push(k);\n          else filters[k] |= one, removed.push(k);\n        }\n      }\n      filterListeners.forEach(function(l) { l(one, added, removed); });\n    }\n\n    // Returns the top K selected records based on this dimension's order.\n    // Note: observes this dimension's filter, unlike group and groupAll.\n    function top(k) {\n      var array = [],\n          i = hi0,\n          j;\n\n      while (--i >= lo0 && k > 0) {\n        if (!filters[j = index[i]]) {\n          array.push(data[j]);\n          --k;\n        }\n      }\n\n      return array;\n    }\n\n    // Returns the bottom K selected records based on this dimension's order.\n    // Note: observes this dimension's filter, unlike group and groupAll.\n    function bottom(k) {\n      var array = [],\n          i = lo0,\n          j;\n\n      while (i < hi0 && k > 0) {\n        if (!filters[j = index[i]]) {\n          array.push(data[j]);\n          --k;\n        }\n        i++;\n      }\n\n      return array;\n    }\n\n    // Adds a new group to this dimension, using the specified key function.\n    function group(key) {\n      var group = {\n        top: top,\n        all: all,\n        reduce: reduce,\n        reduceCount: reduceCount,\n        reduceSum: reduceSum,\n        order: order,\n        orderNatural: orderNatural,\n        size: size,\n        dispose: dispose,\n        remove: dispose // for backwards-compatibility\n      };\n\n      // Ensure that this group will be removed when the dimension is removed.\n      dimensionGroups.push(group);\n\n      var groups, // array of {key, value}\n          groupIndex, // object id ↦ group id\n          groupWidth = 8,\n          groupCapacity = crossfilter_capacity(groupWidth),\n          k = 0, // cardinality\n          select,\n          heap,\n          reduceAdd,\n          reduceRemove,\n          reduceInitial,\n          update = crossfilter_null,\n          reset = crossfilter_null,\n          resetNeeded = true,\n          groupAll = key === crossfilter_null;\n\n      if (arguments.length < 1) key = crossfilter_identity;\n\n      // The group listens to the crossfilter for when any dimension changes, so\n      // that it can update the associated reduce values. It must also listen to\n      // the parent dimension for when data is added, and compute new keys.\n      filterListeners.push(update);\n      indexListeners.push(add);\n      removeDataListeners.push(removeData);\n\n      // Incorporate any existing data into the grouping.\n      add(values, index, 0, n);\n\n      // Incorporates the specified new values into this group.\n      // This function is responsible for updating groups and groupIndex.\n      function add(newValues, newIndex, n0, n1) {\n        var oldGroups = groups,\n            reIndex = crossfilter_index(k, groupCapacity),\n            add = reduceAdd,\n            initial = reduceInitial,\n            k0 = k, // old cardinality\n            i0 = 0, // index of old group\n            i1 = 0, // index of new record\n            j, // object id\n            g0, // old group\n            x0, // old key\n            x1, // new key\n            g, // group to add\n            x; // key of group to add\n\n        // If a reset is needed, we don't need to update the reduce values.\n        if (resetNeeded) add = initial = crossfilter_null;\n\n        // Reset the new groups (k is a lower bound).\n        // Also, make sure that groupIndex exists and is long enough.\n        groups = new Array(k), k = 0;\n        groupIndex = k0 > 1 ? crossfilter_arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity);\n\n        // Get the first old key (x0 of g0), if it exists.\n        if (k0) x0 = (g0 = oldGroups[0]).key;\n\n        // Find the first new key (x1), skipping NaN keys.\n        while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1;\n\n        // While new keys remain…\n        while (i1 < n1) {\n\n          // Determine the lesser of the two current keys; new and old.\n          // If there are no old keys remaining, then always add the new key.\n          if (g0 && x0 <= x1) {\n            g = g0, x = x0;\n\n            // Record the new index of the old group.\n            reIndex[i0] = k;\n\n            // Retrieve the next old key.\n            if (g0 = oldGroups[++i0]) x0 = g0.key;\n          } else {\n            g = {key: x1, value: initial()}, x = x1;\n          }\n\n          // Add the lesser group.\n          groups[k] = g;\n\n          // Add any selected records belonging to the added group, while\n          // advancing the new key and populating the associated group index.\n          while (!(x1 > x)) {\n            groupIndex[j = newIndex[i1] + n0] = k;\n            if (!(filters[j] & zero)) g.value = add(g.value, data[j]);\n            if (++i1 >= n1) break;\n            x1 = key(newValues[i1]);\n          }\n\n          groupIncrement();\n        }\n\n        // Add any remaining old groups that were greater than all new keys.\n        // No incremental reduce is needed; these groups have no new records.\n        // Also record the new index of the old group.\n        while (i0 < k0) {\n          groups[reIndex[i0] = k] = oldGroups[i0++];\n          groupIncrement();\n        }\n\n        // If we added any new groups before any old groups,\n        // update the group index of all the old records.\n        if (k > i0) for (i0 = 0; i0 < n0; ++i0) {\n          groupIndex[i0] = reIndex[groupIndex[i0]];\n        }\n\n        // Modify the update and reset behavior based on the cardinality.\n        // If the cardinality is less than or equal to one, then the groupIndex\n        // is not needed. If the cardinality is zero, then there are no records\n        // and therefore no groups to update or reset. Note that we also must\n        // change the registered listener to point to the new method.\n        j = filterListeners.indexOf(update);\n        if (k > 1) {\n          update = updateMany;\n          reset = resetMany;\n        } else {\n          if (!k && groupAll) {\n            k = 1;\n            groups = [{key: null, value: initial()}];\n          }\n          if (k === 1) {\n            update = updateOne;\n            reset = resetOne;\n          } else {\n            update = crossfilter_null;\n            reset = crossfilter_null;\n          }\n          groupIndex = null;\n        }\n        filterListeners[j] = update;\n\n        // Count the number of added groups,\n        // and widen the group index as needed.\n        function groupIncrement() {\n          if (++k === groupCapacity) {\n            reIndex = crossfilter_arrayWiden(reIndex, groupWidth <<= 1);\n            groupIndex = crossfilter_arrayWiden(groupIndex, groupWidth);\n            groupCapacity = crossfilter_capacity(groupWidth);\n          }\n        }\n      }\n\n      function removeData() {\n        if (k > 1) {\n          var oldK = k,\n              oldGroups = groups,\n              seenGroups = crossfilter_index(oldK, oldK);\n\n          // Filter out non-matches by copying matching group index entries to\n          // the beginning of the array.\n          for (var i = 0, j = 0; i < n; ++i) {\n            if (filters[i]) {\n              seenGroups[groupIndex[j] = groupIndex[i]] = 1;\n              ++j;\n            }\n          }\n\n          // Reassemble groups including only those groups that were referred\n          // to by matching group index entries.  Note the new group index in\n          // seenGroups.\n          groups = [], k = 0;\n          for (i = 0; i < oldK; ++i) {\n            if (seenGroups[i]) {\n              seenGroups[i] = k++;\n              groups.push(oldGroups[i]);\n            }\n          }\n\n          if (k > 1) {\n            // Reindex the group index using seenGroups to find the new index.\n            for (var i = 0; i < j; ++i) groupIndex[i] = seenGroups[groupIndex[i]];\n          } else {\n            groupIndex = null;\n          }\n          filterListeners[filterListeners.indexOf(update)] = k > 1\n              ? (reset = resetMany, update = updateMany)\n              : k === 1 ? (reset = resetOne, update = updateOne)\n              : reset = update = crossfilter_null;\n        } else if (k === 1) {\n          if (groupAll) return;\n          for (var i = 0; i < n; ++i) if (filters[i]) return;\n          groups = [], k = 0;\n          filterListeners[filterListeners.indexOf(update)] =\n          update = reset = crossfilter_null;\n        }\n      }\n\n      // Reduces the specified selected or deselected records.\n      // This function is only used when the cardinality is greater than 1.\n      function updateMany(filterOne, added, removed) {\n        if (filterOne === one || resetNeeded) return;\n\n        var i,\n            k,\n            n,\n            g;\n\n        // Add the added values.\n        for (i = 0, n = added.length; i < n; ++i) {\n          if (!(filters[k = added[i]] & zero)) {\n            g = groups[groupIndex[k]];\n            g.value = reduceAdd(g.value, data[k]);\n          }\n        }\n\n        // Remove the removed values.\n        for (i = 0, n = removed.length; i < n; ++i) {\n          if ((filters[k = removed[i]] & zero) === filterOne) {\n            g = groups[groupIndex[k]];\n            g.value = reduceRemove(g.value, data[k]);\n          }\n        }\n      }\n\n      // Reduces the specified selected or deselected records.\n      // This function is only used when the cardinality is 1.\n      function updateOne(filterOne, added, removed) {\n        if (filterOne === one || resetNeeded) return;\n\n        var i,\n            k,\n            n,\n            g = groups[0];\n\n        // Add the added values.\n        for (i = 0, n = added.length; i < n; ++i) {\n          if (!(filters[k = added[i]] & zero)) {\n            g.value = reduceAdd(g.value, data[k]);\n          }\n        }\n\n        // Remove the removed values.\n        for (i = 0, n = removed.length; i < n; ++i) {\n          if ((filters[k = removed[i]] & zero) === filterOne) {\n            g.value = reduceRemove(g.value, data[k]);\n          }\n        }\n      }\n\n      // Recomputes the group reduce values from scratch.\n      // This function is only used when the cardinality is greater than 1.\n      function resetMany() {\n        var i,\n            g;\n\n        // Reset all group values.\n        for (i = 0; i < k; ++i) {\n          groups[i].value = reduceInitial();\n        }\n\n        // Add any selected records.\n        for (i = 0; i < n; ++i) {\n          if (!(filters[i] & zero)) {\n            g = groups[groupIndex[i]];\n            g.value = reduceAdd(g.value, data[i]);\n          }\n        }\n      }\n\n      // Recomputes the group reduce values from scratch.\n      // This function is only used when the cardinality is 1.\n      function resetOne() {\n        var i,\n            g = groups[0];\n\n        // Reset the singleton group values.\n        g.value = reduceInitial();\n\n        // Add any selected records.\n        for (i = 0; i < n; ++i) {\n          if (!(filters[i] & zero)) {\n            g.value = reduceAdd(g.value, data[i]);\n          }\n        }\n      }\n\n      // Returns the array of group values, in the dimension's natural order.\n      function all() {\n        if (resetNeeded) reset(), resetNeeded = false;\n        return groups;\n      }\n\n      // Returns a new array containing the top K group values, in reduce order.\n      function top(k) {\n        var top = select(all(), 0, groups.length, k);\n        return heap.sort(top, 0, top.length);\n      }\n\n      // Sets the reduce behavior for this group to use the specified functions.\n      // This method lazily recomputes the reduce values, waiting until needed.\n      function reduce(add, remove, initial) {\n        reduceAdd = add;\n        reduceRemove = remove;\n        reduceInitial = initial;\n        resetNeeded = true;\n        return group;\n      }\n\n      // A convenience method for reducing by count.\n      function reduceCount() {\n        return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);\n      }\n\n      // A convenience method for reducing by sum(value).\n      function reduceSum(value) {\n        return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);\n      }\n\n      // Sets the reduce order, using the specified accessor.\n      function order(value) {\n        select = heapselect_by(valueOf);\n        heap = heap_by(valueOf);\n        function valueOf(d) { return value(d.value); }\n        return group;\n      }\n\n      // A convenience method for natural ordering by reduce value.\n      function orderNatural() {\n        return order(crossfilter_identity);\n      }\n\n      // Returns the cardinality of this group, irrespective of any filters.\n      function size() {\n        return k;\n      }\n\n      // Removes this group and associated event listeners.\n      function dispose() {\n        var i = filterListeners.indexOf(update);\n        if (i >= 0) filterListeners.splice(i, 1);\n        i = indexListeners.indexOf(add);\n        if (i >= 0) indexListeners.splice(i, 1);\n        i = removeDataListeners.indexOf(removeData);\n        if (i >= 0) removeDataListeners.splice(i, 1);\n        return group;\n      }\n\n      return reduceCount().orderNatural();\n    }\n\n    // A convenience function for generating a singleton group.\n    function groupAll() {\n      var g = group(crossfilter_null), all = g.all;\n      delete g.all;\n      delete g.top;\n      delete g.order;\n      delete g.orderNatural;\n      delete g.size;\n      g.value = function() { return all()[0].value; };\n      return g;\n    }\n\n    // Removes this dimension and associated groups and event listeners.\n    function dispose() {\n      dimensionGroups.forEach(function(group) { group.dispose(); });\n      var i = dataListeners.indexOf(preAdd);\n      if (i >= 0) dataListeners.splice(i, 1);\n      i = dataListeners.indexOf(postAdd);\n      if (i >= 0) dataListeners.splice(i, 1);\n      i = removeDataListeners.indexOf(removeData);\n      if (i >= 0) removeDataListeners.splice(i, 1);\n      m &= zero;\n      return filterAll();\n    }\n\n    return dimension;\n  }\n\n  // A convenience method for groupAll on a dummy dimension.\n  // This implementation can be optimized since it always has cardinality 1.\n  function groupAll() {\n    var group = {\n      reduce: reduce,\n      reduceCount: reduceCount,\n      reduceSum: reduceSum,\n      value: value,\n      dispose: dispose,\n      remove: dispose // for backwards-compatibility\n    };\n\n    var reduceValue,\n        reduceAdd,\n        reduceRemove,\n        reduceInitial,\n        resetNeeded = true;\n\n    // The group listens to the crossfilter for when any dimension changes, so\n    // that it can update the reduce value. It must also listen to the parent\n    // dimension for when data is added.\n    filterListeners.push(update);\n    dataListeners.push(add);\n\n    // For consistency; actually a no-op since resetNeeded is true.\n    add(data, 0, n);\n\n    // Incorporates the specified new values into this group.\n    function add(newData, n0) {\n      var i;\n\n      if (resetNeeded) return;\n\n      // Add the added values.\n      for (i = n0; i < n; ++i) {\n        if (!filters[i]) {\n          reduceValue = reduceAdd(reduceValue, data[i]);\n        }\n      }\n    }\n\n    // Reduces the specified selected or deselected records.\n    function update(filterOne, added, removed) {\n      var i,\n          k,\n          n;\n\n      if (resetNeeded) return;\n\n      // Add the added values.\n      for (i = 0, n = added.length; i < n; ++i) {\n        if (!filters[k = added[i]]) {\n          reduceValue = reduceAdd(reduceValue, data[k]);\n        }\n      }\n\n      // Remove the removed values.\n      for (i = 0, n = removed.length; i < n; ++i) {\n        if (filters[k = removed[i]] === filterOne) {\n          reduceValue = reduceRemove(reduceValue, data[k]);\n        }\n      }\n    }\n\n    // Recomputes the group reduce value from scratch.\n    function reset() {\n      var i;\n\n      reduceValue = reduceInitial();\n\n      for (i = 0; i < n; ++i) {\n        if (!filters[i]) {\n          reduceValue = reduceAdd(reduceValue, data[i]);\n        }\n      }\n    }\n\n    // Sets the reduce behavior for this group to use the specified functions.\n    // This method lazily recomputes the reduce value, waiting until needed.\n    function reduce(add, remove, initial) {\n      reduceAdd = add;\n      reduceRemove = remove;\n      reduceInitial = initial;\n      resetNeeded = true;\n      return group;\n    }\n\n    // A convenience method for reducing by count.\n    function reduceCount() {\n      return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);\n    }\n\n    // A convenience method for reducing by sum(value).\n    function reduceSum(value) {\n      return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);\n    }\n\n    // Returns the computed reduce value.\n    function value() {\n      if (resetNeeded) reset(), resetNeeded = false;\n      return reduceValue;\n    }\n\n    // Removes this group and associated event listeners.\n    function dispose() {\n      var i = filterListeners.indexOf(update);\n      if (i >= 0) filterListeners.splice(i);\n      i = dataListeners.indexOf(add);\n      if (i >= 0) dataListeners.splice(i);\n      return group;\n    }\n\n    return reduceCount();\n  }\n\n  // Returns the number of records in this crossfilter, irrespective of any filters.\n  function size() {\n    return n;\n  }\n\n  return arguments.length\n      ? add(arguments[0])\n      : crossfilter;\n}\n\n// Returns an array of size n, big enough to store ids up to m.\nfunction crossfilter_index(n, m) {\n  return (m < 0x101\n      ? crossfilter_array8 : m < 0x10001\n      ? crossfilter_array16\n      : crossfilter_array32)(n);\n}\n\n// Constructs a new array of size n, with sequential values from 0 to n - 1.\nfunction crossfilter_range(n) {\n  var range = crossfilter_index(n, n);\n  for (var i = -1; ++i < n;) range[i] = i;\n  return range;\n}\n\nfunction crossfilter_capacity(w) {\n  return w === 8\n      ? 0x100 : w === 16\n      ? 0x10000\n      : 0x100000000;\n}\n})(typeof exports !== 'undefined' && exports || this);\n","module.exports = require(\"./crossfilter\").crossfilter;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n *  `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n  eachFunc(collection, function(value, index, collection) {\n    accumulator = initAccum\n      ? (initAccum = false, value)\n      : iteratee(accumulator, value, index, collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var baseAssignValue = require('./_baseAssignValue'),\n    baseForOwn = require('./_baseForOwn'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n *   return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, iteratee(value, key, object), value);\n  });\n  return result;\n}\n\nmodule.exports = mapKeys;\n","var arrayReduce = require('./_arrayReduce'),\n    baseEach = require('./_baseEach'),\n    baseIteratee = require('./_baseIteratee'),\n    baseReduce = require('./_baseReduce'),\n    isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n *   return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n *   return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduce : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n"],"names":["exports","crossfilter","crossfilter_identity","d","permute","array","index","i","n","copy","bisect","bisect_by","f","bisectLeft","a","x","lo","hi","mid","bisectRight","heap","heap_by","sift","sort","t","child","heapselect","heapselect_by","k","queue","min","insertionsort","insertionsort_by","j","quicksort","quicksort_by","quicksort_sizeThreshold","sixth","i1","i5","i3","i2","i4","e1","x1","e2","x2","e3","x3","e4","x4","e5","x5","pivot1","pivotValue1","pivot2","pivotValue2","less","great","pivotsEqual","ek","xk","greatValue","lessValue","crossfilter_array8","crossfilter_arrayUntyped","crossfilter_array16","crossfilter_array32","crossfilter_arrayLengthen","crossfilter_arrayLengthenUntyped","crossfilter_arrayWiden","crossfilter_arrayWidenUntyped","length","width","crossfilter_filterExact","value","values","crossfilter_filterRange","range","max","crossfilter_filterAll","crossfilter_null","crossfilter_zero","crossfilter_reduceIncrement","p","crossfilter_reduceDecrement","crossfilter_reduceAdd","v","crossfilter_reduceSubtract","add","removeData","dimension","groupAll","size","data","m","M","filters","filterListeners","dataListeners","removeDataListeners","newData","n0","n1","l","newIndex","crossfilter_index","removed","filter","filterExact","filterRange","filterFunction","filterAll","top","bottom","group","dispose","one","zero","newValues","refilter","refilterFunction","indexListeners","dimensionGroups","lo0","hi0","preAdd","postAdd","crossfilter_range","bounds","lo1","hi1","oldValues","oldIndex","i0","reIndex","filterIndexBounds","filterIndexFunction","added","key","all","reduce","reduceCount","reduceSum","order","orderNatural","groups","groupIndex","groupWidth","groupCapacity","crossfilter_capacity","select","reduceAdd","reduceRemove","reduceInitial","update","reset","resetNeeded","oldGroups","initial","k0","g0","x0","g","groupIncrement","updateMany","resetMany","updateOne","resetOne","oldK","seenGroups","filterOne","remove","valueOf","reduceValue","w","module","baseReduce","collection","iteratee","accumulator","initAccum","eachFunc","baseAssignValue","baseForOwn","baseIteratee","mapKeys","object","result","arrayReduce","baseEach","isArray","func"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy