'use strict'; 
 | 
var globalThis = require('../internals/global-this'); 
 | 
var uncurryThis = require('../internals/function-uncurry-this'); 
 | 
  
 | 
var Uint8Array = globalThis.Uint8Array; 
 | 
var SyntaxError = globalThis.SyntaxError; 
 | 
var parseInt = globalThis.parseInt; 
 | 
var min = Math.min; 
 | 
var NOT_HEX = /[^\da-f]/i; 
 | 
var exec = uncurryThis(NOT_HEX.exec); 
 | 
var stringSlice = uncurryThis(''.slice); 
 | 
  
 | 
module.exports = function (string, into) { 
 | 
  var stringLength = string.length; 
 | 
  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters'); 
 | 
  var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2; 
 | 
  var bytes = into || new Uint8Array(maxLength); 
 | 
  var read = 0; 
 | 
  var written = 0; 
 | 
  while (written < maxLength) { 
 | 
    var hexits = stringSlice(string, read, read += 2); 
 | 
    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters'); 
 | 
    bytes[written++] = parseInt(hexits, 16); 
 | 
  } 
 | 
  return { bytes: bytes, read: read }; 
 | 
}; 
 |