| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 | 
							- "use strict";
 
- Object.defineProperty(exports, "__esModule", { value: true });
 
- exports.joinSignature = exports.splitSignature = exports.hexZeroPad = exports.hexStripZeros = exports.hexValue = exports.hexConcat = exports.hexDataSlice = exports.hexDataLength = exports.hexlify = exports.isHexString = exports.zeroPad = exports.stripZeros = exports.concat = exports.arrayify = exports.isBytes = exports.isBytesLike = void 0;
 
- var logger_1 = require("@ethersproject/logger");
 
- var _version_1 = require("./_version");
 
- var logger = new logger_1.Logger(_version_1.version);
 
- function isHexable(value) {
 
-     return !!(value.toHexString);
 
- }
 
- function addSlice(array) {
 
-     if (array.slice) {
 
-         return array;
 
-     }
 
-     array.slice = function () {
 
-         var args = Array.prototype.slice.call(arguments);
 
-         return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));
 
-     };
 
-     return array;
 
- }
 
- function isBytesLike(value) {
 
-     return ((isHexString(value) && !(value.length % 2)) || isBytes(value));
 
- }
 
- exports.isBytesLike = isBytesLike;
 
- function isInteger(value) {
 
-     return (typeof (value) === "number" && value == value && (value % 1) === 0);
 
- }
 
- function isBytes(value) {
 
-     if (value == null) {
 
-         return false;
 
-     }
 
-     if (value.constructor === Uint8Array) {
 
-         return true;
 
-     }
 
-     if (typeof (value) === "string") {
 
-         return false;
 
-     }
 
-     if (!isInteger(value.length) || value.length < 0) {
 
-         return false;
 
-     }
 
-     for (var i = 0; i < value.length; i++) {
 
-         var v = value[i];
 
-         if (!isInteger(v) || v < 0 || v >= 256) {
 
-             return false;
 
-         }
 
-     }
 
-     return true;
 
- }
 
- exports.isBytes = isBytes;
 
- function arrayify(value, options) {
 
-     if (!options) {
 
-         options = {};
 
-     }
 
-     if (typeof (value) === "number") {
 
-         logger.checkSafeUint53(value, "invalid arrayify value");
 
-         var result = [];
 
-         while (value) {
 
-             result.unshift(value & 0xff);
 
-             value = parseInt(String(value / 256));
 
-         }
 
-         if (result.length === 0) {
 
-             result.push(0);
 
-         }
 
-         return addSlice(new Uint8Array(result));
 
-     }
 
-     if (options.allowMissingPrefix && typeof (value) === "string" && value.substring(0, 2) !== "0x") {
 
-         value = "0x" + value;
 
-     }
 
-     if (isHexable(value)) {
 
-         value = value.toHexString();
 
-     }
 
-     if (isHexString(value)) {
 
-         var hex = value.substring(2);
 
-         if (hex.length % 2) {
 
-             if (options.hexPad === "left") {
 
-                 hex = "0x0" + hex.substring(2);
 
-             }
 
-             else if (options.hexPad === "right") {
 
-                 hex += "0";
 
-             }
 
-             else {
 
-                 logger.throwArgumentError("hex data is odd-length", "value", value);
 
-             }
 
-         }
 
-         var result = [];
 
-         for (var i = 0; i < hex.length; i += 2) {
 
-             result.push(parseInt(hex.substring(i, i + 2), 16));
 
-         }
 
-         return addSlice(new Uint8Array(result));
 
-     }
 
-     if (isBytes(value)) {
 
-         return addSlice(new Uint8Array(value));
 
-     }
 
-     return logger.throwArgumentError("invalid arrayify value", "value", value);
 
- }
 
- exports.arrayify = arrayify;
 
- function concat(items) {
 
-     var objects = items.map(function (item) { return arrayify(item); });
 
-     var length = objects.reduce(function (accum, item) { return (accum + item.length); }, 0);
 
-     var result = new Uint8Array(length);
 
-     objects.reduce(function (offset, object) {
 
-         result.set(object, offset);
 
-         return offset + object.length;
 
-     }, 0);
 
-     return addSlice(result);
 
- }
 
- exports.concat = concat;
 
- function stripZeros(value) {
 
-     var result = arrayify(value);
 
-     if (result.length === 0) {
 
-         return result;
 
-     }
 
-     
 
-     var start = 0;
 
-     while (start < result.length && result[start] === 0) {
 
-         start++;
 
-     }
 
-     
 
-     if (start) {
 
-         result = result.slice(start);
 
-     }
 
-     return result;
 
- }
 
- exports.stripZeros = stripZeros;
 
- function zeroPad(value, length) {
 
-     value = arrayify(value);
 
-     if (value.length > length) {
 
-         logger.throwArgumentError("value out of range", "value", arguments[0]);
 
-     }
 
-     var result = new Uint8Array(length);
 
-     result.set(value, length - value.length);
 
-     return addSlice(result);
 
- }
 
- exports.zeroPad = zeroPad;
 
- function isHexString(value, length) {
 
-     if (typeof (value) !== "string" || !value.match(/^0x[0-9A-Fa-f]*$/)) {
 
-         return false;
 
-     }
 
-     if (length && value.length !== 2 + 2 * length) {
 
-         return false;
 
-     }
 
-     return true;
 
- }
 
- exports.isHexString = isHexString;
 
- var HexCharacters = "0123456789abcdef";
 
- function hexlify(value, options) {
 
-     if (!options) {
 
-         options = {};
 
-     }
 
-     if (typeof (value) === "number") {
 
-         logger.checkSafeUint53(value, "invalid hexlify value");
 
-         var hex = "";
 
-         while (value) {
 
-             hex = HexCharacters[value & 0xf] + hex;
 
-             value = Math.floor(value / 16);
 
-         }
 
-         if (hex.length) {
 
-             if (hex.length % 2) {
 
-                 hex = "0" + hex;
 
-             }
 
-             return "0x" + hex;
 
-         }
 
-         return "0x00";
 
-     }
 
-     if (typeof (value) === "bigint") {
 
-         value = value.toString(16);
 
-         if (value.length % 2) {
 
-             return ("0x0" + value);
 
-         }
 
-         return "0x" + value;
 
-     }
 
-     if (options.allowMissingPrefix && typeof (value) === "string" && value.substring(0, 2) !== "0x") {
 
-         value = "0x" + value;
 
-     }
 
-     if (isHexable(value)) {
 
-         return value.toHexString();
 
-     }
 
-     if (isHexString(value)) {
 
-         if (value.length % 2) {
 
-             if (options.hexPad === "left") {
 
-                 value = "0x0" + value.substring(2);
 
-             }
 
-             else if (options.hexPad === "right") {
 
-                 value += "0";
 
-             }
 
-             else {
 
-                 logger.throwArgumentError("hex data is odd-length", "value", value);
 
-             }
 
-         }
 
-         return value.toLowerCase();
 
-     }
 
-     if (isBytes(value)) {
 
-         var result = "0x";
 
-         for (var i = 0; i < value.length; i++) {
 
-             var v = value[i];
 
-             result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];
 
-         }
 
-         return result;
 
-     }
 
-     return logger.throwArgumentError("invalid hexlify value", "value", value);
 
- }
 
- exports.hexlify = hexlify;
 
- function hexDataLength(data) {
 
-     if (typeof (data) !== "string") {
 
-         data = hexlify(data);
 
-     }
 
-     else if (!isHexString(data) || (data.length % 2)) {
 
-         return null;
 
-     }
 
-     return (data.length - 2) / 2;
 
- }
 
- exports.hexDataLength = hexDataLength;
 
- function hexDataSlice(data, offset, endOffset) {
 
-     if (typeof (data) !== "string") {
 
-         data = hexlify(data);
 
-     }
 
-     else if (!isHexString(data) || (data.length % 2)) {
 
-         logger.throwArgumentError("invalid hexData", "value", data);
 
-     }
 
-     offset = 2 + 2 * offset;
 
-     if (endOffset != null) {
 
-         return "0x" + data.substring(offset, 2 + 2 * endOffset);
 
-     }
 
-     return "0x" + data.substring(offset);
 
- }
 
- exports.hexDataSlice = hexDataSlice;
 
- function hexConcat(items) {
 
-     var result = "0x";
 
-     items.forEach(function (item) {
 
-         result += hexlify(item).substring(2);
 
-     });
 
-     return result;
 
- }
 
- exports.hexConcat = hexConcat;
 
- function hexValue(value) {
 
-     var trimmed = hexStripZeros(hexlify(value, { hexPad: "left" }));
 
-     if (trimmed === "0x") {
 
-         return "0x0";
 
-     }
 
-     return trimmed;
 
- }
 
- exports.hexValue = hexValue;
 
- function hexStripZeros(value) {
 
-     if (typeof (value) !== "string") {
 
-         value = hexlify(value);
 
-     }
 
-     if (!isHexString(value)) {
 
-         logger.throwArgumentError("invalid hex string", "value", value);
 
-     }
 
-     value = value.substring(2);
 
-     var offset = 0;
 
-     while (offset < value.length && value[offset] === "0") {
 
-         offset++;
 
-     }
 
-     return "0x" + value.substring(offset);
 
- }
 
- exports.hexStripZeros = hexStripZeros;
 
- function hexZeroPad(value, length) {
 
-     if (typeof (value) !== "string") {
 
-         value = hexlify(value);
 
-     }
 
-     else if (!isHexString(value)) {
 
-         logger.throwArgumentError("invalid hex string", "value", value);
 
-     }
 
-     if (value.length > 2 * length + 2) {
 
-         logger.throwArgumentError("value out of range", "value", arguments[1]);
 
-     }
 
-     while (value.length < 2 * length + 2) {
 
-         value = "0x0" + value.substring(2);
 
-     }
 
-     return value;
 
- }
 
- exports.hexZeroPad = hexZeroPad;
 
- function splitSignature(signature) {
 
-     var result = {
 
-         r: "0x",
 
-         s: "0x",
 
-         _vs: "0x",
 
-         recoveryParam: 0,
 
-         v: 0,
 
-         yParityAndS: "0x",
 
-         compact: "0x"
 
-     };
 
-     if (isBytesLike(signature)) {
 
-         var bytes = arrayify(signature);
 
-         
 
-         if (bytes.length === 64) {
 
-             
 
-             result.v = 27 + (bytes[32] >> 7);
 
-             bytes[32] &= 0x7f;
 
-             result.r = hexlify(bytes.slice(0, 32));
 
-             result.s = hexlify(bytes.slice(32, 64));
 
-         }
 
-         else if (bytes.length === 65) {
 
-             result.r = hexlify(bytes.slice(0, 32));
 
-             result.s = hexlify(bytes.slice(32, 64));
 
-             result.v = bytes[64];
 
-         }
 
-         else {
 
-             logger.throwArgumentError("invalid signature string", "signature", signature);
 
-         }
 
-         
 
-         if (result.v < 27) {
 
-             if (result.v === 0 || result.v === 1) {
 
-                 result.v += 27;
 
-             }
 
-             else {
 
-                 logger.throwArgumentError("signature invalid v byte", "signature", signature);
 
-             }
 
-         }
 
-         
 
-         result.recoveryParam = 1 - (result.v % 2);
 
-         
 
-         if (result.recoveryParam) {
 
-             bytes[32] |= 0x80;
 
-         }
 
-         result._vs = hexlify(bytes.slice(32, 64));
 
-     }
 
-     else {
 
-         result.r = signature.r;
 
-         result.s = signature.s;
 
-         result.v = signature.v;
 
-         result.recoveryParam = signature.recoveryParam;
 
-         result._vs = signature._vs;
 
-         
 
-         
 
-         if (result._vs != null) {
 
-             var vs_1 = zeroPad(arrayify(result._vs), 32);
 
-             result._vs = hexlify(vs_1);
 
-             
 
-             var recoveryParam = ((vs_1[0] >= 128) ? 1 : 0);
 
-             if (result.recoveryParam == null) {
 
-                 result.recoveryParam = recoveryParam;
 
-             }
 
-             else if (result.recoveryParam !== recoveryParam) {
 
-                 logger.throwArgumentError("signature recoveryParam mismatch _vs", "signature", signature);
 
-             }
 
-             
 
-             vs_1[0] &= 0x7f;
 
-             var s = hexlify(vs_1);
 
-             if (result.s == null) {
 
-                 result.s = s;
 
-             }
 
-             else if (result.s !== s) {
 
-                 logger.throwArgumentError("signature v mismatch _vs", "signature", signature);
 
-             }
 
-         }
 
-         
 
-         if (result.recoveryParam == null) {
 
-             if (result.v == null) {
 
-                 logger.throwArgumentError("signature missing v and recoveryParam", "signature", signature);
 
-             }
 
-             else if (result.v === 0 || result.v === 1) {
 
-                 result.recoveryParam = result.v;
 
-             }
 
-             else {
 
-                 result.recoveryParam = 1 - (result.v % 2);
 
-             }
 
-         }
 
-         else {
 
-             if (result.v == null) {
 
-                 result.v = 27 + result.recoveryParam;
 
-             }
 
-             else {
 
-                 var recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));
 
-                 if (result.recoveryParam !== recId) {
 
-                     logger.throwArgumentError("signature recoveryParam mismatch v", "signature", signature);
 
-                 }
 
-             }
 
-         }
 
-         if (result.r == null || !isHexString(result.r)) {
 
-             logger.throwArgumentError("signature missing or invalid r", "signature", signature);
 
-         }
 
-         else {
 
-             result.r = hexZeroPad(result.r, 32);
 
-         }
 
-         if (result.s == null || !isHexString(result.s)) {
 
-             logger.throwArgumentError("signature missing or invalid s", "signature", signature);
 
-         }
 
-         else {
 
-             result.s = hexZeroPad(result.s, 32);
 
-         }
 
-         var vs = arrayify(result.s);
 
-         if (vs[0] >= 128) {
 
-             logger.throwArgumentError("signature s out of range", "signature", signature);
 
-         }
 
-         if (result.recoveryParam) {
 
-             vs[0] |= 0x80;
 
-         }
 
-         var _vs = hexlify(vs);
 
-         if (result._vs) {
 
-             if (!isHexString(result._vs)) {
 
-                 logger.throwArgumentError("signature invalid _vs", "signature", signature);
 
-             }
 
-             result._vs = hexZeroPad(result._vs, 32);
 
-         }
 
-         
 
-         if (result._vs == null) {
 
-             result._vs = _vs;
 
-         }
 
-         else if (result._vs !== _vs) {
 
-             logger.throwArgumentError("signature _vs mismatch v and s", "signature", signature);
 
-         }
 
-     }
 
-     result.yParityAndS = result._vs;
 
-     result.compact = result.r + result.yParityAndS.substring(2);
 
-     return result;
 
- }
 
- exports.splitSignature = splitSignature;
 
- function joinSignature(signature) {
 
-     signature = splitSignature(signature);
 
-     return hexlify(concat([
 
-         signature.r,
 
-         signature.s,
 
-         (signature.recoveryParam ? "0x1c" : "0x1b")
 
-     ]));
 
- }
 
- exports.joinSignature = joinSignature;
 
 
  |