d3.bisector = function(f) {

return {
  left: function(a, x, lo, hi) {
    if (arguments.length < 3) lo = 0;
    if (arguments.length < 4) hi = a.length;
    while (lo < hi) {
      var mid = lo + hi >>> 1;
      if (f.call(a, a[mid], mid) < x) lo = mid + 1;
      else hi = mid;
    }
    return lo;
  },
  right: function(a, x, lo, hi) {
    if (arguments.length < 3) lo = 0;
    if (arguments.length < 4) hi = a.length;
    while (lo < hi) {
      var mid = lo + hi >>> 1;
      if (x < f.call(a, a[mid], mid)) hi = mid;
      else lo = mid + 1;
    }
    return lo;
  }
};

};

var d3_bisector = d3.bisector(function(d) { return d; }); d3.bisectLeft = d3_bisector.left; d3.bisect = d3.bisectRight = d3_bisector.right;