<commit_before>/** 
 UUID-js : A js library to generate and parse UUIDs,TimeUUIDs and generate TimeUUID based on Data for range selections
 http://www.ietf.org/rfc/rfc4122.txt
 **/

UUIDjs = function() { }

UUIDjs.maxFromBits = function( bits )
{
  return Math.pow(2,bits);
}

UUIDjs.limitUI04 = UUIDjs.maxFromBits( 4 );
UUIDjs.limitUI06 = UUIDjs.maxFromBits( 6 );
UUIDjs.limitUI08 = UUIDjs.maxFromBits( 8 );
UUIDjs.limitUI12 = UUIDjs.maxFromBits( 12 );
UUIDjs.limitUI14 = UUIDjs.maxFromBits( 14 );
UUIDjs.limitUI16 = UUIDjs.maxFromBits( 16 );
UUIDjs.limitUI32 = UUIDjs.maxFromBits( 32 );

UUIDjs.randomUI04 = function() { return Math.round(Math.random() * UUIDjs.limitUI04); }
UUIDjs.randomUI06 = function() { return Math.round(Math.random() * UUIDjs.limitUI06); }
UUIDjs.randomUI08 = function() { return Math.round(Math.random() * UUIDjs.limitUI08); }
UUIDjs.randomUI12 = function() { return Math.round(Math.random() * UUIDjs.limitUI12); }
UUIDjs.randomUI14 = function() { return Math.round(Math.random() * UUIDjs.limitUI14); }
UUIDjs.randomUI16 = function() { return Math.round(Math.random() * UUIDjs.limitUI16); }
UUIDjs.randomUI32 = function() { return Math.round(Math.random() * UUIDjs.limitUI32); }
UUIDjs.randomUI40 = function() { return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 40 - 30)) * (1 << 30); }
UUIDjs.randomUI48 = function() { return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 48 - 30)) * (1 << 30); }

UUIDjs.paddedString = function( string, length, z )
{
  string = new String(string);
  z = (!z)?"0":z;
  var i = length - string.length;
  for (; i > 0; i >>>= 1, z += z) { if (i & 1) { string = z + string; } } 
  return string;
}

UUIDjs.prototype.fromParts = function( timeLow, timeMid, timeHiAndVersion, clockSeqHiAndReserved, clockSeqLow, node )
{
  this.version = (timeHiAndVersion >> 12) & 0xF;
  this.hex = UUIDjs.paddedString( timeLow.toString(16), 8 )
             + '-'
             + UUIDjs.paddedString( timeMid.toString(16), 4 )
             + '-'
             + UUIDjs.paddedString( timeHiAndVersion.toString(16), 4 )
             + '-'
             + UUIDjs.paddedString( clockSeqHiAndReserved.toString(16), 2 )
             + UUIDjs.paddedString( clockSeqLow.toString(16), 2 )
             + '-'
             + UUIDjs.paddedString( node.toString(16), 12 );
  return this;
}

UUIDjs.prototype.toString = function() { return this.hex; };
UUIDjs.prototype.toURN = function() { return 'urn:uuid:' + this.hex; };

UUIDjs.prototype.toBytes = function()
{
  var parts = this.hex.split('-');
  var ints = [];
  var intPos = 0;
  for (var i = 0; i < parts.length; i++) {
    for (var j = 0; j < parts[i].length; j+=2) {
      ints[intPos++] = parseInt(parts[i].substr(j, 2), 16);
    }
  }
  return ints;
}

UUIDjs.prototype.equals = function(uuid)
{
  if (!(uuid instanceof UUID)) { return false; }
  if (this.hex !== uuid.hex) return false;
  return true;
};

UUIDjs.new = function()
{
  return new UUIDjs().fromParts(
    UUIDjs.randomUI32(),
    UUIDjs.randomUI16(),
    0x4000 | UUIDjs.randomUI12(),
    0x80   | UUIDjs.randomUI06(),
    UUIDjs.randomUI08(),
    UUIDjs.randomUI48()
  );
}

UUIDjs.getTimeFieldValues = function(time)
{
  var ts = time - Date.UTC(1582, 9, 15);
  var hm = ((ts / 0x100000000) * 10000) & 0xFFFFFFF;
  return { low: ((ts & 0xFFFFFFF) * 10000) % 0x100000000,
            mid: hm & 0xFFFF, hi: hm >>> 16, timestamp: ts };
}

UUIDjs.newTS = function()
{
  var now = new Date().getTime();
  var sequence = UUIDjs.randomUI14();
  var node = (UUIDjs.randomUI08() | 1) * 0x10000000000 + UUID.randomUI40();
  var tick = UUIDjs.randomUI04();
  var timestamp = 0;
  var timestampRatio = 1/4;

  if (now != timestamp)
  {
    if (now < timestamp) { sequence++; }
    timestamp = now;
    tick = UUIDjs.randomUI04();
  } else if (Math.random() < timestampRatio && tick < 9984) { tick += 1 + UUIDjs.randomUI04();
  } else { sequence++; }

  var tf = UUIDjs.getTimeFieldValues(timestamp);
  var tl = tf.low + tick;
  var thav = (tf.hi & 0xFFF) | 0x1000;

  sequence &= 0x3FFF;
  var cshar = (sequence >>> 8) | 0x80;
  var csl = sequence & 0xFF;
  
  return new UUID().fromParts(tl, tf.mid, thav, cshar, csl, node);
}

UUIDjs.fromTime = function( time, last )
{
  last = (!last)?false:last;
  var tf = UUIDjs.getTimeFieldValues( time );
  var tl = tf.low;
  var thav = (tf.hi & 0xFFF) | 0x1000;  // set version '0001'
  if (last == false) return new UUIDjs().fromParts(tl,tf.mid,thav, 0, 0, 0);
  else return new UUIDjs().fromParts(tl,tf.mid,thav, 0x80 | UUIDjs.limitUI06, UUID.limitUI08, UUID.limitUI48 );
}

UUIDjs.firstUUIDForTime = function(time) { return UUIDjs.fromTime(time, false); }
UUIDjs.lastUUIDForTime = function(time) { return UUIDjs.fromTime(time, true); }

UUIDjs.fromURN = function(strId)
{
  var r, p = /^(?:urn:uuid:|\{)?([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{12})(?:\})?$/i;
  if (r = p.exec(strId)) {
    return new UUIDjs().fromParts(parseInt(r[1], 16), parseInt(r[2], 16),
                            parseInt(r[3], 16), parseInt(r[4], 16),
                            parseInt(r[5], 16), parseInt(r[6], 16));
  }
  return null;
};

UUIDjs.fromBytes = function(ints)
{
  if (ints.length < 5) return null;
  var str = '';
  var pos = 0;
  var parts = [4, 2, 2, 2, 6];
  for (var i = 0; i < parts.length; i++) {
    for (var j = 0; j < parts[i]; j++) {
      var octet = ints[pos++].toString(16);
      if (octet.length == 1) {<commit_msg>Fix references to non-existing UUID class<commit_after>/** 
 UUID-js : A js library to generate and parse UUIDs,TimeUUIDs and generate TimeUUID based on Data for range selections
 http://www.ietf.org/rfc/rfc4122.txt
 **/

UUIDjs = function() { }

UUIDjs.maxFromBits = function( bits )
{
  return Math.pow(2,bits);
}

UUIDjs.limitUI04 = UUIDjs.maxFromBits( 4 );
UUIDjs.limitUI06 = UUIDjs.maxFromBits( 6 );
UUIDjs.limitUI08 = UUIDjs.maxFromBits( 8 );
UUIDjs.limitUI12 = UUIDjs.maxFromBits( 12 );
UUIDjs.limitUI14 = UUIDjs.maxFromBits( 14 );
UUIDjs.limitUI16 = UUIDjs.maxFromBits( 16 );
UUIDjs.limitUI32 = UUIDjs.maxFromBits( 32 );

UUIDjs.randomUI04 = function() { return Math.round(Math.random() * UUIDjs.limitUI04); }
UUIDjs.randomUI06 = function() { return Math.round(Math.random() * UUIDjs.limitUI06); }
UUIDjs.randomUI08 = function() { return Math.round(Math.random() * UUIDjs.limitUI08); }
UUIDjs.randomUI12 = function() { return Math.round(Math.random() * UUIDjs.limitUI12); }
UUIDjs.randomUI14 = function() { return Math.round(Math.random() * UUIDjs.limitUI14); }
UUIDjs.randomUI16 = function() { return Math.round(Math.random() * UUIDjs.limitUI16); }
UUIDjs.randomUI32 = function() { return Math.round(Math.random() * UUIDjs.limitUI32); }
UUIDjs.randomUI40 = function() { return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 40 - 30)) * (1 << 30); }
UUIDjs.randomUI48 = function() { return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 48 - 30)) * (1 << 30); }

UUIDjs.paddedString = function( string, length, z )
{
  string = new String(string);
  z = (!z)?"0":z;
  var i = length - string.length;
  for (; i > 0; i >>>= 1, z += z) { if (i & 1) { string = z + string; } } 
  return string;
}

UUIDjs.prototype.fromParts = function( timeLow, timeMid, timeHiAndVersion, clockSeqHiAndReserved, clockSeqLow, node )
{
  this.version = (timeHiAndVersion >> 12) & 0xF;
  this.hex = UUIDjs.paddedString( timeLow.toString(16), 8 )
             + '-'
             + UUIDjs.paddedString( timeMid.toString(16), 4 )
             + '-'
             + UUIDjs.paddedString( timeHiAndVersion.toString(16), 4 )
             + '-'
             + UUIDjs.paddedString( clockSeqHiAndReserved.toString(16), 2 )
             + UUIDjs.paddedString( clockSeqLow.toString(16), 2 )
             + '-'
             + UUIDjs.paddedString( node.toString(16), 12 );
  return this;
}

UUIDjs.prototype.toString = function() { return this.hex; };
UUIDjs.prototype.toURN = function() { return 'urn:uuid:' + this.hex; };

UUIDjs.prototype.toBytes = function()
{
  var parts = this.hex.split('-');
  var ints = [];
  var intPos = 0;
  for (var i = 0; i < parts.length; i++) {
    for (var j = 0; j < parts[i].length; j+=2) {
      ints[intPos++] = parseInt(parts[i].substr(j, 2), 16);
    }
  }
  return ints;
}

UUIDjs.prototype.equals = function(uuid)
{
  if (!(uuid instanceof UUID)) { return false; }
  if (this.hex !== uuid.hex) return false;
  return true;
};

UUIDjs.new = function()
{
  return new UUIDjs().fromParts(
    UUIDjs.randomUI32(),
    UUIDjs.randomUI16(),
    0x4000 | UUIDjs.randomUI12(),
    0x80   | UUIDjs.randomUI06(),
    UUIDjs.randomUI08(),
    UUIDjs.randomUI48()
  );
}

UUIDjs.getTimeFieldValues = function(time)
{
  var ts = time - Date.UTC(1582, 9, 15);
  var hm = ((ts / 0x100000000) * 10000) & 0xFFFFFFF;
  return { low: ((ts & 0xFFFFFFF) * 10000) % 0x100000000,
            mid: hm & 0xFFFF, hi: hm >>> 16, timestamp: ts };
}

UUIDjs.newTS = function()
{
  var now = new Date().getTime();
  var sequence = UUIDjs.randomUI14();
  var node = (UUIDjs.randomUI08() | 1) * 0x10000000000 + UUIDjs.randomUI40();
  var tick = UUIDjs.randomUI04();
  var timestamp = 0;
  var timestampRatio = 1/4;

  if (now != timestamp)
  {
    if (now < timestamp) { sequence++; }
    timestamp = now;
    tick = UUIDjs.randomUI04();
  } else if (Math.random() < timestampRatio && tick < 9984) { tick += 1 + UUIDjs.randomUI04();
  } else { sequence++; }

  var tf = UUIDjs.getTimeFieldValues(timestamp);
  var tl = tf.low + tick;
  var thav = (tf.hi & 0xFFF) | 0x1000;

  sequence &= 0x3FFF;
  var cshar = (sequence >>> 8) | 0x80;
  var csl = sequence & 0xFF;
  
  return new UUIDjs().fromParts(tl, tf.mid, thav, cshar, csl, node);
}

UUIDjs.fromTime = function( time, last )
{
  last = (!last)?false:last;
  var tf = UUIDjs.getTimeFieldValues( time );
  var tl = tf.low;
  var thav = (tf.hi & 0xFFF) | 0x1000;  // set version '0001'
  if (last == false) return new UUIDjs().fromParts(tl,tf.mid,thav, 0, 0, 0);
  else return new UUIDjs().fromParts(tl,tf.mid,thav, 0x80 | UUIDjs.limitUI06, UUIDjs.limitUI08, UUIDjs.limitUI48 );
}

UUIDjs.firstUUIDForTime = function(time) { return UUIDjs.fromTime(time, false); }
UUIDjs.lastUUIDForTime = function(time) { return UUIDjs.fromTime(time, true); }

UUIDjs.fromURN = function(strId)
{
  var r, p = /^(?:urn:uuid:|\{)?([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{12})(?:\})?$/i;
  if (r = p.exec(strId)) {
    return new UUIDjs().fromParts(parseInt(r[1], 16), parseInt(r[2], 16),
                            parseInt(r[3], 16), parseInt(r[4], 16),
                            parseInt(r[5], 16), parseInt(r[6], 16));
  }
  return null;
};

UUIDjs.fromBytes = function(ints)
{
  if (ints.length < 5) return null;
  var str = '';
  var pos = 0;
  var parts = [4, 2, 2, 2, 6];
  for (var i = 0; i < parts.length; i++) {
    for (var j = 0; j < parts[i]; j++) {
      var octet = ints[pos++].toString(16);
      if (octet.length == 1) {
{'fraction_non_alphanumeric': 0.17996002906976744, 'fraction_numerical': 0.05450581395348837, 'mean_word_length': 3.2720217306946062, 'pattern_counts': {'":': 2, '<': 43, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 10, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '166917', 'n_tokens_mistral': 4565, 'n_tokens_neox': 4238, 'n_words': 919}