function decodeParams(names, types, data, useNumberedParams = true) {
  // Names is optional, so shift over all the parameters if not provided
  if (arguments.length < 3) {
    data = types;
    types = names;
    names = [];
  }

  data = utils.hexOrBuffer(data);
  var values = new Result();

  var offset = 0;
  types.forEach(function(type, index) {
    var coder = getParamCoder(type);

    if (coder.dynamic) {
      var dynamicOffset = uint256Coder.decode(data, offset);
      var result = coder.decode(data, dynamicOffset.value.toNumber());
      offset += dynamicOffset.consumed;
    } else {
      var result = coder.decode(data, offset);
      offset += result.consumed;
    }

    if (useNumberedParams) {
      values[index] = result.value;
    }

    if (names[index]) {
      values[names[index]] = result.value;
    }
  });
  return values;
}
function decodeParams(names, types, data, useNumberedParams = true) {
  
  if (arguments.length < 3) {
    data = types;
    types = names;
    names = [];
  }

  data = utils.hexOrBuffer(data);
  var values = new Result();

  var offset = 0;
  types.forEach(function(type, index) {
    var coder = getParamCoder(type);

    if (coder.dynamic) {
      var dynamicOffset = uint256Coder.decode(data, offset);
      var result = coder.decode(data, dynamicOffset.value.toNumber());
      offset += dynamicOffset.consumed;
    } else {
      var result = coder.decode(data, offset);
      offset += result.consumed;
    }

    if (useNumberedParams) {
      values[index] = result.value;
    }

    if (names[index]) {
      values[names[index]] = result.value;
    }
  });
  return values;
}
function decodeParams ( names , types , data , useNumberedParams = true ) { // Names is optional, so shift over all the parameters if not provided if ( arguments . length < 3 ) { data = types ; types = names ; names = [ ] ; } data = utils . hexOrBuffer ( data ) ; var values = new Result ( ) ; var offset = 0 ; types . forEach ( function ( type , index ) { var coder = getParamCoder ( type ) ; if ( coder . dynamic ) { var dynamicOffset = uint256Coder . decode ( data , offset ) ; var result = coder . decode ( data , dynamicOffset . value . toNumber ( ) ) ; offset += dynamicOffset . consumed ; } else { var result = coder . decode ( data , offset ) ; offset += result . consumed ; } if ( useNumberedParams ) { values [ index ] = result . value ; } if ( names [ index ] ) { values [ names [ index ] ] = result . value ; } } ) ; return values ; }
decode bytecode data from output names and types
decode bytecode data from output names and types