{
  "contractName": "BTCUtils",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "DIFF1_TARGET",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ERR_BAD_ARG",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "RETARGET_PERIOD",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "RETARGET_PERIOD_BLOCKS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"DIFF1_TARGET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ERR_BAD_ARG\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"RETARGET_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"RETARGET_PERIOD_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":\"BTCUtils\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]}},\"version\":1}",
  "bytecode": "0x60d1610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060515760003560e01c8063056e04ec1460565780638cc7156914606e5780638db69e60146074578063d4258ca714607a575b600080fd5b605c6080565b60408051918252519081900360200190f35b605c6087565b605c608d565b605c6093565b6212750081565b6107e081565b60001981565b61ffff60d01b8156fea265627a7a72315820c698b384a60d7308692167697814c7f3554f9856ad77f463574a495cd8e3124864736f6c63430005110032",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060515760003560e01c8063056e04ec1460565780638cc7156914606e5780638db69e60146074578063d4258ca714607a575b600080fd5b605c6080565b60408051918252519081900360200190f35b605c6087565b605c608d565b605c6093565b6212750081565b6107e081565b60001981565b61ffff60d01b8156fea265627a7a72315820c698b384a60d7308692167697814c7f3554f9856ad77f463574a495cd8e3124864736f6c63430005110032",
  "sourceMap": "176:28301:48:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "176:28301:48:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;444:62;;;:::i;:::-;;;;;;;;;;;;;;;;535:53;;;:::i;617:104::-;;;:::i;340:97::-;;;:::i;444:62::-;486:20;444:62;:::o;535:53::-;584:4;535:53;:::o;617:104::-;-1:-1:-1;;617:104:48;:::o;340:97::-;-1:-1:-1;;;340:97:48;:::o",
  "source": "pragma solidity ^0.5.10;\n\n/** @title BitcoinSPV */\n/** @author Summa (https://summa.one) */\n\nimport {BytesLib} from \"./BytesLib.sol\";\nimport {SafeMath} from \"./SafeMath.sol\";\n\nlibrary BTCUtils {\n    using BytesLib for bytes;\n    using SafeMath for uint256;\n\n    // The target at minimum Difficulty. Also the target of the genesis block\n    uint256 public constant DIFF1_TARGET = 0xffff0000000000000000000000000000000000000000000000000000;\n\n    uint256 public constant RETARGET_PERIOD = 2 * 7 * 24 * 60 * 60;  // 2 weeks in seconds\n    uint256 public constant RETARGET_PERIOD_BLOCKS = 2016;  // 2 weeks in blocks\n\n    uint256 public constant ERR_BAD_ARG = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;\n\n    /* ***** */\n    /* UTILS */\n    /* ***** */\n\n    /// @notice         Determines the length of a VarInt in bytes\n    /// @dev            A VarInt of >1 byte is prefixed with a flag indicating its length\n    /// @param _flag    The first byte of a VarInt\n    /// @return         The number of non-flag bytes in the VarInt\n    function determineVarIntDataLength(bytes memory _flag) internal pure returns (uint8) {\n        if (uint8(_flag[0]) == 0xff) {\n            return 8;  // one-byte flag, 8 bytes data\n        }\n        if (uint8(_flag[0]) == 0xfe) {\n            return 4;  // one-byte flag, 4 bytes data\n        }\n        if (uint8(_flag[0]) == 0xfd) {\n            return 2;  // one-byte flag, 2 bytes data\n        }\n\n        return 0;  // flag is data\n    }\n\n    /// @notice     Parse a VarInt into its data length and the number it represents\n    /// @dev        Useful for Parsing Vins and Vouts. Returns ERR_BAD_ARG if insufficient bytes.\n    ///             Caller SHOULD explicitly handle this case (or bubble it up)\n    /// @param _b   A byte-string starting with a VarInt\n    /// @return     number of bytes in the encoding (not counting the tag), the encoded int\n    function parseVarInt(bytes memory _b) internal pure returns (uint256, uint256) {\n        uint8 _dataLen = determineVarIntDataLength(_b);\n\n        if (_dataLen == 0) {\n            return (0, uint8(_b[0]));\n        }\n        if (_b.length < 1 + _dataLen) {\n            return (ERR_BAD_ARG, 0);\n        }\n        uint256 _number = bytesToUint(reverseEndianness(_b.slice(1, _dataLen)));\n        return (_dataLen, _number);\n    }\n\n    /// @notice          Changes the endianness of a byte array\n    /// @dev             Returns a new, backwards, bytes\n    /// @param _b        The bytes to reverse\n    /// @return          The reversed bytes\n    function reverseEndianness(bytes memory _b) internal pure returns (bytes memory) {\n        bytes memory _newValue = new bytes(_b.length);\n\n        for (uint i = 0; i < _b.length; i++) {\n            _newValue[_b.length - i - 1] = _b[i];\n        }\n\n        return _newValue;\n    }\n\n    /// @notice          Changes the endianness of a uint256\n    /// @dev             https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel\n    /// @param _b        The unsigned integer to reverse\n    /// @return          The reversed value\n    function reverseUint256(uint256 _b) internal pure returns (uint256 v) {\n        v = _b;\n\n        // swap bytes\n        v = ((v >> 8) & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) |\n            ((v & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) << 8);\n        // swap 2-byte long pairs\n        v = ((v >> 16) & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) |\n            ((v & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) << 16);\n        // swap 4-byte long pairs\n        v = ((v >> 32) & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) |\n            ((v & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32);\n        // swap 8-byte long pairs\n        v = ((v >> 64) & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) |\n            ((v & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64);\n        // swap 16-byte long pairs\n        v = (v >> 128) | (v << 128);\n    }\n\n    /// @notice          Converts big-endian bytes to a uint\n    /// @dev             Traverses the byte array and sums the bytes\n    /// @param _b        The big-endian bytes-encoded integer\n    /// @return          The integer representation\n    function bytesToUint(bytes memory _b) internal pure returns (uint256) {\n        uint256 _number;\n\n        for (uint i = 0; i < _b.length; i++) {\n            _number = _number + uint8(_b[i]) * (2 ** (8 * (_b.length - (i + 1))));\n        }\n\n        return _number;\n    }\n\n    /// @notice          Get the last _num bytes from a byte array\n    /// @param _b        The byte array to slice\n    /// @param _num      The number of bytes to extract from the end\n    /// @return          The last _num bytes of _b\n    function lastBytes(bytes memory _b, uint256 _num) internal pure returns (bytes memory) {\n        uint256 _start = _b.length.sub(_num);\n\n        return _b.slice(_start, _num);\n    }\n\n    /// @notice          Implements bitcoin's hash160 (rmd160(sha2()))\n    /// @dev             abi.encodePacked changes the return to bytes instead of bytes32\n    /// @param _b        The pre-image\n    /// @return          The digest\n    function hash160(bytes memory _b) internal pure returns (bytes memory) {\n        return abi.encodePacked(ripemd160(abi.encodePacked(sha256(_b))));\n    }\n\n    /// @notice          Implements bitcoin's hash256 (double sha2)\n    /// @dev             abi.encodePacked changes the return to bytes instead of bytes32\n    /// @param _b        The pre-image\n    /// @return          The digest\n    function hash256(bytes memory _b) internal pure returns (bytes32) {\n        return sha256(abi.encodePacked(sha256(_b)));\n    }\n\n    /// @notice          Implements bitcoin's hash256 (double sha2)\n    /// @dev             sha2 is precompiled smart contract located at address(2)\n    /// @param _b        The pre-image\n    /// @return          The digest\n    function hash256View(bytes memory _b) internal view returns (bytes32 res) {\n        // solium-disable-next-line security/no-inline-assembly\n        assembly {\n            let ptr := mload(0x40)\n            pop(staticcall(gas, 2, add(_b, 32), mload(_b), ptr, 32))\n            pop(staticcall(gas, 2, ptr, 32, ptr, 32))\n            res := mload(ptr)\n        }\n    }\n\n    /* ************ */\n    /* Legacy Input */\n    /* ************ */\n\n    /// @notice          Extracts the nth input from the vin (0-indexed)\n    /// @dev             Iterates over the vin. If you need to extract several, write a custom function\n    /// @param _vin      The vin as a tightly-packed byte array\n    /// @param _index    The 0-indexed location of the input to extract\n    /// @return          The input as a byte array\n    function extractInputAtIndex(bytes memory _vin, uint256 _index) internal pure returns (bytes memory) {\n        uint256 _varIntDataLen;\n        uint256 _nIns;\n\n        (_varIntDataLen, _nIns) = parseVarInt(_vin);\n        require(_varIntDataLen != ERR_BAD_ARG, \"Read overrun during VarInt parsing\");\n        require(_index < _nIns, \"Vin read overrun\");\n\n        bytes memory _remaining;\n\n        uint256 _len = 0;\n        uint256 _offset = 1 + _varIntDataLen;\n\n        for (uint256 _i = 0; _i < _index; _i ++) {\n            _remaining = _vin.slice(_offset, _vin.length - _offset);\n            _len = determineInputLength(_remaining);\n            require(_len != ERR_BAD_ARG, \"Bad VarInt in scriptSig\");\n            _offset = _offset + _len;\n        }\n\n        _remaining = _vin.slice(_offset, _vin.length - _offset);\n        _len = determineInputLength(_remaining);\n        require(_len != ERR_BAD_ARG, \"Bad VarInt in scriptSig\");\n        return _vin.slice(_offset, _len);\n    }\n\n    /// @notice          Determines whether an input is legacy\n    /// @dev             False if no scriptSig, otherwise True\n    /// @param _input    The input\n    /// @return          True for legacy, False for witness\n    function isLegacyInput(bytes memory _input) internal pure returns (bool) {\n        return _input.keccak256Slice(36, 1) != keccak256(hex\"00\");\n    }\n\n    /// @notice          Determines the length of a scriptSig in an input\n    /// @dev             Will return 0 if passed a witness input.\n    /// @param _input    The LEGACY input\n    /// @return          The length of the script sig\n    function extractScriptSigLen(bytes memory _input) internal pure returns (uint256, uint256) {\n        if (_input.length < 37) {\n            return (ERR_BAD_ARG, 0);\n        }\n        bytes memory _afterOutpoint = _input.slice(36, _input.length - 36);\n\n        uint256 _varIntDataLen;\n        uint256 _scriptSigLen;\n        (_varIntDataLen, _scriptSigLen) = parseVarInt(_afterOutpoint);\n\n        return (_varIntDataLen, _scriptSigLen);\n    }\n\n    /// @notice          Determines the length of an input from its scriptSig\n    /// @dev             36 for outpoint, 1 for scriptSig length, 4 for sequence\n    /// @param _input    The input\n    /// @return          The length of the input in bytes\n    function determineInputLength(bytes memory _input) internal pure returns (uint256) {\n        uint256 _varIntDataLen;\n        uint256 _scriptSigLen;\n        (_varIntDataLen, _scriptSigLen) = extractScriptSigLen(_input);\n        if (_varIntDataLen == ERR_BAD_ARG) {\n            return ERR_BAD_ARG;\n        }\n\n        return 36 + 1 + _varIntDataLen + _scriptSigLen + 4;\n    }\n\n    /// @notice          Extracts the LE sequence bytes from an input\n    /// @dev             Sequence is used for relative time locks\n    /// @param _input    The LEGACY input\n    /// @return          The sequence bytes (LE uint)\n    function extractSequenceLELegacy(bytes memory _input) internal pure returns (bytes memory) {\n        uint256 _varIntDataLen;\n        uint256 _scriptSigLen;\n        (_varIntDataLen, _scriptSigLen) = extractScriptSigLen(_input);\n        require(_varIntDataLen != ERR_BAD_ARG, \"Bad VarInt in scriptSig\");\n        return _input.slice(36 + 1 + _varIntDataLen + _scriptSigLen, 4);\n    }\n\n    /// @notice          Extracts the sequence from the input\n    /// @dev             Sequence is a 4-byte little-endian number\n    /// @param _input    The LEGACY input\n    /// @return          The sequence number (big-endian uint)\n    function extractSequenceLegacy(bytes memory _input) internal pure returns (uint32) {\n        bytes memory _leSeqence = extractSequenceLELegacy(_input);\n        bytes memory _beSequence = reverseEndianness(_leSeqence);\n        return uint32(bytesToUint(_beSequence));\n    }\n    /// @notice          Extracts the VarInt-prepended scriptSig from the input in a tx\n    /// @dev             Will return hex\"00\" if passed a witness input\n    /// @param _input    The LEGACY input\n    /// @return          The length-prepended scriptSig\n    function extractScriptSig(bytes memory _input) internal pure returns (bytes memory) {\n        uint256 _varIntDataLen;\n        uint256 _scriptSigLen;\n        (_varIntDataLen, _scriptSigLen) = extractScriptSigLen(_input);\n        require(_varIntDataLen != ERR_BAD_ARG, \"Bad VarInt in scriptSig\");\n        return _input.slice(36, 1 + _varIntDataLen + _scriptSigLen);\n    }\n\n\n    /* ************* */\n    /* Witness Input */\n    /* ************* */\n\n    /// @notice          Extracts the LE sequence bytes from an input\n    /// @dev             Sequence is used for relative time locks\n    /// @param _input    The WITNESS input\n    /// @return          The sequence bytes (LE uint)\n    function extractSequenceLEWitness(bytes memory _input) internal pure returns (bytes memory) {\n        return _input.slice(37, 4);\n    }\n\n    /// @notice          Extracts the sequence from the input in a tx\n    /// @dev             Sequence is a 4-byte little-endian number\n    /// @param _input    The WITNESS input\n    /// @return          The sequence number (big-endian uint)\n    function extractSequenceWitness(bytes memory _input) internal pure returns (uint32) {\n        bytes memory _leSeqence = extractSequenceLEWitness(_input);\n        bytes memory _inputeSequence = reverseEndianness(_leSeqence);\n        return uint32(bytesToUint(_inputeSequence));\n    }\n\n    /// @notice          Extracts the outpoint from the input in a tx\n    /// @dev             32-byte tx id with 4-byte index\n    /// @param _input    The input\n    /// @return          The outpoint (LE bytes of prev tx hash + LE bytes of prev tx index)\n    function extractOutpoint(bytes memory _input) internal pure returns (bytes memory) {\n        return _input.slice(0, 36);\n    }\n\n    /// @notice          Extracts the outpoint tx id from an input\n    /// @dev             32-byte tx id\n    /// @param _input    The input\n    /// @return          The tx id (little-endian bytes)\n    function extractInputTxIdLE(bytes memory _input) internal pure returns (bytes32) {\n        return _input.slice(0, 32).toBytes32();\n    }\n\n    /// @notice          Extracts the LE tx input index from the input in a tx\n    /// @dev             4-byte tx index\n    /// @param _input    The input\n    /// @return          The tx index (little-endian bytes)\n    function extractTxIndexLE(bytes memory _input) internal pure returns (bytes memory) {\n        return _input.slice(32, 4);\n    }\n\n    /* ****** */\n    /* Output */\n    /* ****** */\n\n    /// @notice          Determines the length of an output\n    /// @dev             Works with any properly formatted output\n    /// @param _output   The output\n    /// @return          The length indicated by the prefix, error if invalid length\n    function determineOutputLength(bytes memory _output) internal pure returns (uint256) {\n        if (_output.length < 9) {\n            return ERR_BAD_ARG;\n        }\n        bytes memory _afterValue = _output.slice(8, _output.length - 8);\n\n        uint256 _varIntDataLen;\n        uint256 _scriptPubkeyLength;\n        (_varIntDataLen, _scriptPubkeyLength) = parseVarInt(_afterValue);\n\n        if (_varIntDataLen == ERR_BAD_ARG) {\n            return ERR_BAD_ARG;\n        }\n\n        // 8-byte value, 1-byte for tag itself\n        return 8 + 1 + _varIntDataLen + _scriptPubkeyLength;\n    }\n\n    /// @notice          Extracts the output at a given index in the TxOuts vector\n    /// @dev             Iterates over the vout. If you need to extract multiple, write a custom function\n    /// @param _vout     The _vout to extract from\n    /// @param _index    The 0-indexed location of the output to extract\n    /// @return          The specified output\n    function extractOutputAtIndex(bytes memory _vout, uint256 _index) internal pure returns (bytes memory) {\n        uint256 _varIntDataLen;\n        uint256 _nOuts;\n\n        (_varIntDataLen, _nOuts) = parseVarInt(_vout);\n        require(_varIntDataLen != ERR_BAD_ARG, \"Read overrun during VarInt parsing\");\n        require(_index < _nOuts, \"Vout read overrun\");\n\n        bytes memory _remaining;\n\n        uint256 _len = 0;\n        uint256 _offset = 1 + _varIntDataLen;\n\n        for (uint256 _i = 0; _i < _index; _i ++) {\n            _remaining = _vout.slice(_offset, _vout.length - _offset);\n            _len = determineOutputLength(_remaining);\n            require(_len != ERR_BAD_ARG, \"Bad VarInt in scriptPubkey\");\n            _offset += _len;\n        }\n\n        _remaining = _vout.slice(_offset, _vout.length - _offset);\n        _len = determineOutputLength(_remaining);\n        require(_len != ERR_BAD_ARG, \"Bad VarInt in scriptPubkey\");\n        return _vout.slice(_offset, _len);\n    }\n\n    /// @notice          Extracts the value bytes from the output in a tx\n    /// @dev             Value is an 8-byte little-endian number\n    /// @param _output   The output\n    /// @return          The output value as LE bytes\n    function extractValueLE(bytes memory _output) internal pure returns (bytes memory) {\n        return _output.slice(0, 8);\n    }\n\n    /// @notice          Extracts the value from the output in a tx\n    /// @dev             Value is an 8-byte little-endian number\n    /// @param _output   The output\n    /// @return          The output value\n    function extractValue(bytes memory _output) internal pure returns (uint64) {\n        bytes memory _leValue = extractValueLE(_output);\n        bytes memory _beValue = reverseEndianness(_leValue);\n        return uint64(bytesToUint(_beValue));\n    }\n\n    /// @notice          Extracts the data from an op return output\n    /// @dev             Returns hex\"\" if no data or not an op return\n    /// @param _output   The output\n    /// @return          Any data contained in the opreturn output, null if not an op return\n    function extractOpReturnData(bytes memory _output) internal pure returns (bytes memory) {\n        if (_output.keccak256Slice(9, 1) != keccak256(hex\"6a\")) {\n            return hex\"\";\n        }\n        bytes memory _dataLen = _output.slice(10, 1);\n        return _output.slice(11, bytesToUint(_dataLen));\n    }\n\n    /// @notice          Extracts the hash from the output script\n    /// @dev             Determines type by the length prefix and validates format\n    /// @param _output   The output\n    /// @return          The hash committed to by the pk_script, or null for errors\n    function extractHash(bytes memory _output) internal pure returns (bytes memory) {\n        uint8 _scriptLen = uint8(_output[8]);\n\n        // don't have to worry about overflow here.\n        // if _scriptLen + 9 overflows, then output.length would have to be < 9\n        // for this check to pass. if it's < 9, then we errored when assigning\n        // _scriptLen\n        if (_scriptLen + 9 != _output.length) {\n            return hex\"\";\n        }\n\n        if (uint8(_output[9]) == 0) {\n            if (_scriptLen < 2) {\n                return hex\"\";\n            }\n            uint256 _payloadLen = uint8(_output[10]);\n            // Check for maliciously formatted witness outputs.\n            // No need to worry about underflow as long b/c of the `< 2` check\n            if (_payloadLen != _scriptLen - 2 || (_payloadLen != 0x20 && _payloadLen != 0x14)) {\n                return hex\"\";\n            }\n            return _output.slice(11, _payloadLen);\n        } else {\n            bytes32 _tag = _output.keccak256Slice(8, 3);\n            // p2pkh\n            if (_tag == keccak256(hex\"1976a9\")) {\n                // Check for maliciously formatted p2pkh\n                // No need to worry about underflow, b/c of _scriptLen check\n                if (uint8(_output[11]) != 0x14 ||\n                    _output.keccak256Slice(_output.length - 2, 2) != keccak256(hex\"88ac\")) {\n                    return hex\"\";\n                }\n                return _output.slice(12, 20);\n            //p2sh\n            } else if (_tag == keccak256(hex\"17a914\")) {\n                // Check for maliciously formatted p2sh\n                // No need to worry about underflow, b/c of _scriptLen check\n                if (uint8(_output[_output.length - 1]) != 0x87) {\n                    return hex\"\";\n                }\n                return _output.slice(11, 20);\n            }\n        }\n        return hex\"\";  /* NB: will trigger on OPRETURN and any non-standard that doesn't overrun */\n    }\n\n    /* ********** */\n    /* Witness TX */\n    /* ********** */\n\n\n    /// @notice      Checks that the vin passed up is properly formatted\n    /// @dev         Consider a vin with a valid vout in its scriptsig\n    /// @param _vin  Raw bytes length-prefixed input vector\n    /// @return      True if it represents a validly formatted vin\n    function validateVin(bytes memory _vin) internal pure returns (bool) {\n        uint256 _varIntDataLen;\n        uint256 _nIns;\n\n        (_varIntDataLen, _nIns) = parseVarInt(_vin);\n\n        // Not valid if it says there are too many or no inputs\n        if (_nIns == 0 || _varIntDataLen == ERR_BAD_ARG) {\n            return false;\n        }\n\n        uint256 _offset = 1 + _varIntDataLen;\n\n        for (uint256 i = 0; i < _nIns; i++) {\n            // If we're at the end, but still expect more\n            if (_offset >= _vin.length) {\n                return false;\n            }\n\n            // Grab the next input and determine its length.\n            bytes memory _next = _vin.slice(_offset, _vin.length - _offset);\n            uint256 _nextLen = determineInputLength(_next);\n            if (_nextLen == ERR_BAD_ARG) {\n                return false;\n            }\n\n            // Increase the offset by that much\n            _offset += _nextLen;\n        }\n\n        // Returns false if we're not exactly at the end\n        return _offset == _vin.length;\n    }\n\n    /// @notice      Checks that the vout passed up is properly formatted\n    /// @dev         Consider a vout with a valid scriptpubkey\n    /// @param _vout Raw bytes length-prefixed output vector\n    /// @return      True if it represents a validly formatted vout\n    function validateVout(bytes memory _vout) internal pure returns (bool) {\n        uint256 _varIntDataLen;\n        uint256 _nOuts;\n\n        (_varIntDataLen, _nOuts) = parseVarInt(_vout);\n\n        // Not valid if it says there are too many or no outputs\n        if (_nOuts == 0 || _varIntDataLen == ERR_BAD_ARG) {\n            return false;\n        }\n\n        uint256 _offset = 1 + _varIntDataLen;\n\n        for (uint256 i = 0; i < _nOuts; i++) {\n            // If we're at the end, but still expect more\n            if (_offset >= _vout.length) {\n                return false;\n            }\n\n            // Grab the next output and determine its length.\n            // Increase the offset by that much\n            bytes memory _next = _vout.slice(_offset, _vout.length - _offset);\n            uint256 _nextLen = determineOutputLength(_next);\n            if (_nextLen == ERR_BAD_ARG) {\n                return false;\n            }\n\n            _offset += _nextLen;\n        }\n\n        // Returns false if we're not exactly at the end\n        return _offset == _vout.length;\n    }\n\n\n\n    /* ************ */\n    /* Block Header */\n    /* ************ */\n\n    /// @notice          Extracts the transaction merkle root from a block header\n    /// @dev             Use verifyHash256Merkle to verify proofs with this root\n    /// @param _header   The header\n    /// @return          The merkle root (little-endian)\n    function extractMerkleRootLE(bytes memory _header) internal pure returns (bytes memory) {\n        return _header.slice(36, 32);\n    }\n\n    /// @notice          Extracts the target from a block header\n    /// @dev             Target is a 256-bit number encoded as a 3-byte mantissa and 1-byte exponent\n    /// @param _header   The header\n    /// @return          The target threshold\n    function extractTarget(bytes memory _header) internal pure returns (uint256) {\n        bytes memory _m = _header.slice(72, 3);\n        uint8 _e = uint8(_header[75]);\n        uint256 _mantissa = bytesToUint(reverseEndianness(_m));\n        uint _exponent = _e - 3;\n\n        return _mantissa * (256 ** _exponent);\n    }\n\n    /// @notice          Calculate difficulty from the difficulty 1 target and current target\n    /// @dev             Difficulty 1 is 0x1d00ffff on mainnet and testnet\n    /// @dev             Difficulty 1 is a 256-bit number encoded as a 3-byte mantissa and 1-byte exponent\n    /// @param _target   The current target\n    /// @return          The block difficulty (bdiff)\n    function calculateDifficulty(uint256 _target) internal pure returns (uint256) {\n        // Difficulty 1 calculated from 0x1d00ffff\n        return DIFF1_TARGET.div(_target);\n    }\n\n    /// @notice          Extracts the previous block's hash from a block header\n    /// @dev             Block headers do NOT include block number :(\n    /// @param _header   The header\n    /// @return          The previous block's hash (little-endian)\n    function extractPrevBlockLE(bytes memory _header) internal pure returns (bytes memory) {\n        return _header.slice(4, 32);\n    }\n\n    /// @notice          Extracts the timestamp from a block header\n    /// @dev             Time is not 100% reliable\n    /// @param _header   The header\n    /// @return          The timestamp (little-endian bytes)\n    function extractTimestampLE(bytes memory _header) internal pure returns (bytes memory) {\n        return _header.slice(68, 4);\n    }\n\n    /// @notice          Extracts the timestamp from a block header\n    /// @dev             Time is not 100% reliable\n    /// @param _header   The header\n    /// @return          The timestamp (uint)\n    function extractTimestamp(bytes memory _header) internal pure returns (uint32) {\n        return uint32(bytesToUint(reverseEndianness(extractTimestampLE(_header))));\n    }\n\n    /// @notice          Extracts the expected difficulty from a block header\n    /// @dev             Does NOT verify the work\n    /// @param _header   The header\n    /// @return          The difficulty as an integer\n    function extractDifficulty(bytes memory _header) internal pure returns (uint256) {\n        return calculateDifficulty(extractTarget(_header));\n    }\n\n    /// @notice          Concatenates and hashes two inputs for merkle proving\n    /// @param _a        The first hash\n    /// @param _b        The second hash\n    /// @return          The double-sha256 of the concatenated hashes\n    function _hash256MerkleStep(bytes memory _a, bytes memory _b) internal pure returns (bytes32) {\n        return hash256(abi.encodePacked(_a, _b));\n    }\n\n    /// @notice          Verifies a Bitcoin-style merkle tree\n    /// @dev             Leaves are 0-indexed.\n    /// @param _proof    The proof. Tightly packed LE sha256 hashes. The last hash is the root\n    /// @param _index    The index of the leaf\n    /// @return          true if the proof is valid, else false\n    function verifyHash256Merkle(bytes memory _proof, uint _index) internal pure returns (bool) {\n        // Not an even number of hashes\n        if (_proof.length % 32 != 0) {\n            return false;\n        }\n\n        // Special case for coinbase-only blocks\n        if (_proof.length == 32) {\n            return true;\n        }\n\n        // Should never occur\n        if (_proof.length == 64) {\n            return false;\n        }\n\n        uint _idx = _index;\n        bytes32 _root = _proof.slice(_proof.length - 32, 32).toBytes32();\n        bytes32 _current = _proof.slice(0, 32).toBytes32();\n\n        for (uint i = 1; i < (_proof.length.div(32)) - 1; i++) {\n            if (_idx % 2 == 1) {\n                _current = _hash256MerkleStep(_proof.slice(i * 32, 32), abi.encodePacked(_current));\n            } else {\n                _current = _hash256MerkleStep(abi.encodePacked(_current), _proof.slice(i * 32, 32));\n            }\n            _idx = _idx >> 1;\n        }\n        return _current == _root;\n    }\n\n    /*\n    NB: https://github.com/bitcoin/bitcoin/blob/78dae8caccd82cfbfd76557f1fb7d7557c7b5edb/src/pow.cpp#L49-L72\n    NB: We get a full-bitlength target from this. For comparison with\n        header-encoded targets we need to mask it with the header target\n        e.g. (full & truncated) == truncated\n    */\n    /// @notice                 performs the bitcoin difficulty retarget\n    /// @dev                    implements the Bitcoin algorithm precisely\n    /// @param _previousTarget  the target of the previous period\n    /// @param _firstTimestamp  the timestamp of the first block in the difficulty period\n    /// @param _secondTimestamp the timestamp of the last block in the difficulty period\n    /// @return                 the new period's target threshold\n    function retargetAlgorithm(\n        uint256 _previousTarget,\n        uint256 _firstTimestamp,\n        uint256 _secondTimestamp\n    ) internal pure returns (uint256) {\n        uint256 _elapsedTime = _secondTimestamp.sub(_firstTimestamp);\n\n        // Normalize ratio to factor of 4 if very long or very short\n        if (_elapsedTime < RETARGET_PERIOD.div(4)) {\n            _elapsedTime = RETARGET_PERIOD.div(4);\n        }\n        if (_elapsedTime > RETARGET_PERIOD.mul(4)) {\n            _elapsedTime = RETARGET_PERIOD.mul(4);\n        }\n\n        /*\n          NB: high targets e.g. ffff0020 can cause overflows here\n              so we divide it by 256**2, then multiply by 256**2 later\n              we know the target is evenly divisible by 256**2, so this isn't an issue\n        */\n\n        uint256 _adjusted = _previousTarget.div(65536).mul(_elapsedTime);\n        return _adjusted.div(RETARGET_PERIOD).mul(65536);\n    }\n}\n",
  "sourcePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
  "ast": {
    "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
    "exportedSymbols": {
      "BTCUtils": [
        13216
      ]
    },
    "id": 13217,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11469,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".10"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:48"
      },
      {
        "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
        "file": "./BytesLib.sol",
        "id": 11471,
        "nodeType": "ImportDirective",
        "scope": 13217,
        "sourceUnit": 13433,
        "src": "93:40:48",
        "symbolAliases": [
          {
            "foreign": 11470,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol",
        "file": "./SafeMath.sol",
        "id": 11473,
        "nodeType": "ImportDirective",
        "scope": 13217,
        "sourceUnit": 13922,
        "src": "134:40:48",
        "symbolAliases": [
          {
            "foreign": 11472,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 13216,
        "linearizedBaseContracts": [
          13216
        ],
        "name": "BTCUtils",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11476,
            "libraryName": {
              "contractScope": null,
              "id": 11474,
              "name": "BytesLib",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13432,
              "src": "205:8:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesLib_$13432",
                "typeString": "library BytesLib"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "199:25:48",
            "typeName": {
              "id": 11475,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "218:5:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 11479,
            "libraryName": {
              "contractScope": null,
              "id": 11477,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13921,
              "src": "235:8:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$13921",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "229:27:48",
            "typeName": {
              "id": 11478,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "248:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 11482,
            "name": "DIFF1_TARGET",
            "nodeType": "VariableDeclaration",
            "scope": 13216,
            "src": "340:97:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11480,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "340:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786666666630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
              "id": 11481,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "379:58:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_26959535291011309493156476344723991336010898738574164086137773096960_by_1",
                "typeString": "int_const 2695...(60 digits omitted)...6960"
              },
              "value": "0xffff0000000000000000000000000000000000000000000000000000"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11493,
            "name": "RETARGET_PERIOD",
            "nodeType": "VariableDeclaration",
            "scope": 13216,
            "src": "444:62:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11483,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "444:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1209600_by_1",
                "typeString": "int_const 1209600"
              },
              "id": 11492,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "commonType": {
                  "typeIdentifier": "t_rational_20160_by_1",
                  "typeString": "int_const 20160"
                },
                "id": 11490,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "leftExpression": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_336_by_1",
                    "typeString": "int_const 336"
                  },
                  "id": 11488,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_14_by_1",
                      "typeString": "int_const 14"
                    },
                    "id": 11486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 11484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "486:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "37",
                      "id": 11485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "490:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_7_by_1",
                        "typeString": "int_const 7"
                      },
                      "value": "7"
                    },
                    "src": "486:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_14_by_1",
                      "typeString": "int_const 14"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "*",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "3234",
                    "id": 11487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "494:2:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_24_by_1",
                      "typeString": "int_const 24"
                    },
                    "value": "24"
                  },
                  "src": "486:10:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_336_by_1",
                    "typeString": "int_const 336"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "*",
                "rightExpression": {
                  "argumentTypes": null,
                  "hexValue": "3630",
                  "id": 11489,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "499:2:48",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_60_by_1",
                    "typeString": "int_const 60"
                  },
                  "value": "60"
                },
                "src": "486:15:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_20160_by_1",
                  "typeString": "int_const 20160"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "*",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3630",
                "id": 11491,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "504:2:48",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_60_by_1",
                  "typeString": "int_const 60"
                },
                "value": "60"
              },
              "src": "486:20:48",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1209600_by_1",
                "typeString": "int_const 1209600"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11496,
            "name": "RETARGET_PERIOD_BLOCKS",
            "nodeType": "VariableDeclaration",
            "scope": 13216,
            "src": "535:53:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11494,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "535:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32303136",
              "id": 11495,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "584:4:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2016_by_1",
                "typeString": "int_const 2016"
              },
              "value": "2016"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11499,
            "name": "ERR_BAD_ARG",
            "nodeType": "VariableDeclaration",
            "scope": 13216,
            "src": "617:104:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11497,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "617:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
              "id": 11498,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "655:66:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                "typeString": "int_const 1157...(70 digits omitted)...9935"
              },
              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 11541,
              "nodeType": "Block",
              "src": "1137:352:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 11512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11507,
                            "name": "_flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11501,
                            "src": "1157:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 11509,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1163:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1157:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 11506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1151:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 11510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1151:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30786666",
                      "id": 11511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1170:4:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "0xff"
                    },
                    "src": "1151:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11516,
                  "nodeType": "IfStatement",
                  "src": "1147:94:48",
                  "trueBody": {
                    "id": 11515,
                    "nodeType": "Block",
                    "src": "1176:65:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 11513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1197:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "functionReturnParameters": 11505,
                        "id": 11514,
                        "nodeType": "Return",
                        "src": "1190:8:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 11523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11518,
                            "name": "_flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11501,
                            "src": "1260:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 11520,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1266:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1260:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 11517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1254:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 11521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1254:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30786665",
                      "id": 11522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1273:4:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_254_by_1",
                        "typeString": "int_const 254"
                      },
                      "value": "0xfe"
                    },
                    "src": "1254:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11527,
                  "nodeType": "IfStatement",
                  "src": "1250:94:48",
                  "trueBody": {
                    "id": 11526,
                    "nodeType": "Block",
                    "src": "1279:65:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 11524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1300:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        },
                        "functionReturnParameters": 11505,
                        "id": 11525,
                        "nodeType": "Return",
                        "src": "1293:8:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 11534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11529,
                            "name": "_flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11501,
                            "src": "1363:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 11531,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1369:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1363:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 11528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1357:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 11532,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1357:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30786664",
                      "id": 11533,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1376:4:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_253_by_1",
                        "typeString": "int_const 253"
                      },
                      "value": "0xfd"
                    },
                    "src": "1357:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11538,
                  "nodeType": "IfStatement",
                  "src": "1353:94:48",
                  "trueBody": {
                    "id": 11537,
                    "nodeType": "Block",
                    "src": "1382:65:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 11535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1403:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "functionReturnParameters": 11505,
                        "id": 11536,
                        "nodeType": "Return",
                        "src": "1396:8:48"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 11539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1464:1:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 11505,
                  "id": 11540,
                  "nodeType": "Return",
                  "src": "1457:8:48"
                }
              ]
            },
            "documentation": "@notice         Determines the length of a VarInt in bytes\n @dev            A VarInt of >1 byte is prefixed with a flag indicating its length\n @param _flag    The first byte of a VarInt\n @return         The number of non-flag bytes in the VarInt",
            "id": 11542,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineVarIntDataLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11501,
                  "name": "_flag",
                  "nodeType": "VariableDeclaration",
                  "scope": 11542,
                  "src": "1087:18:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11500,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1086:20:48"
            },
            "returnParameters": {
              "id": 11505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11504,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11542,
                  "src": "1130:5:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 11503,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1130:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1129:7:48"
            },
            "scope": 13216,
            "src": "1052:437:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11598,
              "nodeType": "Block",
              "src": "1986:345:48",
              "statements": [
                {
                  "assignments": [
                    11552
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11552,
                      "name": "_dataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 11598,
                      "src": "1996:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 11551,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1996:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11556,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11554,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11544,
                        "src": "2039:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11553,
                      "name": "determineVarIntDataLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11542,
                      "src": "2013:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint8_$",
                        "typeString": "function (bytes memory) pure returns (uint8)"
                      }
                    },
                    "id": 11555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2013:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1996:46:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 11559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11557,
                      "name": "_dataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11552,
                      "src": "2057:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2069:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2057:13:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11569,
                  "nodeType": "IfStatement",
                  "src": "2053:68:48",
                  "trueBody": {
                    "id": 11568,
                    "nodeType": "Block",
                    "src": "2072:49:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2094:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11562,
                                    "name": "_b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11544,
                                    "src": "2103:2:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 11564,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 11563,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2106:1:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2103:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 11561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2097:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 11565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2097:12:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "id": 11566,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2093:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint8_$",
                            "typeString": "tuple(int_const 0,uint8)"
                          }
                        },
                        "functionReturnParameters": 11550,
                        "id": 11567,
                        "nodeType": "Return",
                        "src": "2086:24:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11570,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11544,
                        "src": "2134:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2134:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 11574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 11572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2146:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 11573,
                        "name": "_dataLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11552,
                        "src": "2150:8:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "2146:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "2134:24:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11581,
                  "nodeType": "IfStatement",
                  "src": "2130:78:48",
                  "trueBody": {
                    "id": 11580,
                    "nodeType": "Block",
                    "src": "2160:48:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 11576,
                              "name": "ERR_BAD_ARG",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11499,
                              "src": "2182:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2195:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 11578,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2181:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_rational_0_by_1_$",
                            "typeString": "tuple(uint256,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 11550,
                        "id": 11579,
                        "nodeType": "Return",
                        "src": "2174:23:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    11583
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11583,
                      "name": "_number",
                      "nodeType": "VariableDeclaration",
                      "scope": 11598,
                      "src": "2217:15:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11582,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2217:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11593,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 11588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2274:1:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "argumentTypes": null,
                                "id": 11589,
                                "name": "_dataLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11552,
                                "src": "2277:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 11586,
                                "name": "_b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11544,
                                "src": "2265:2:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 11587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "slice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13281,
                              "src": "2265:8:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 11590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2265:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 11585,
                          "name": "reverseEndianness",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11643,
                          "src": "2247:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 11591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2247:40:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11584,
                      "name": "bytesToUint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11790,
                      "src": "2235:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory) pure returns (uint256)"
                      }
                    },
                    "id": 11592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2235:53:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2217:71:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 11594,
                        "name": "_dataLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11552,
                        "src": "2306:8:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11595,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11583,
                        "src": "2316:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 11596,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2305:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$",
                      "typeString": "tuple(uint8,uint256)"
                    }
                  },
                  "functionReturnParameters": 11550,
                  "id": 11597,
                  "nodeType": "Return",
                  "src": "2298:26:48"
                }
              ]
            },
            "documentation": "@notice     Parse a VarInt into its data length and the number it represents\n @dev        Useful for Parsing Vins and Vouts. Returns ERR_BAD_ARG if insufficient bytes.\n             Caller SHOULD explicitly handle this case (or bubble it up)\n @param _b   A byte-string starting with a VarInt\n @return     number of bytes in the encoding (not counting the tag), the encoded int",
            "id": 11599,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseVarInt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11544,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11599,
                  "src": "1928:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11543,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1928:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1927:17:48"
            },
            "returnParameters": {
              "id": 11550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11599,
                  "src": "1968:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11546,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1968:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11549,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11599,
                  "src": "1977:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11548,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1967:18:48"
            },
            "scope": 13216,
            "src": "1907:424:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11642,
              "nodeType": "Block",
              "src": "2629:197:48",
              "statements": [
                {
                  "assignments": [
                    11607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11607,
                      "name": "_newValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 11642,
                      "src": "2639:22:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11606,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2639:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11613,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11610,
                          "name": "_b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11601,
                          "src": "2674:2:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2674:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2664:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 11608,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2668:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 11612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2664:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2639:45:48"
                },
                {
                  "body": {
                    "id": 11638,
                    "nodeType": "Block",
                    "src": "2732:61:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11625,
                              "name": "_newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11607,
                              "src": "2746:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 11632,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11626,
                                    "name": "_b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11601,
                                    "src": "2756:2:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 11627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2756:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11628,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11615,
                                  "src": "2768:1:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2756:13:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 11630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2772:1:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2756:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2746:28:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11633,
                              "name": "_b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11601,
                              "src": "2777:2:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 11635,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11634,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11615,
                              "src": "2780:1:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2777:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "2746:36:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 11637,
                        "nodeType": "ExpressionStatement",
                        "src": "2746:36:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11618,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11615,
                      "src": "2712:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11619,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11601,
                        "src": "2716:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2716:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2712:13:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11639,
                  "initializationExpression": {
                    "assignments": [
                      11615
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11615,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 11639,
                        "src": "2700:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11614,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2700:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11617,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2709:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2700:10:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2727:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11622,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11615,
                        "src": "2727:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11624,
                    "nodeType": "ExpressionStatement",
                    "src": "2727:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "2695:98:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11640,
                    "name": "_newValue",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11607,
                    "src": "2810:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11605,
                  "id": 11641,
                  "nodeType": "Return",
                  "src": "2803:16:48"
                }
              ]
            },
            "documentation": "@notice          Changes the endianness of a byte array\n @dev             Returns a new, backwards, bytes\n @param _b        The bytes to reverse\n @return          The reversed bytes",
            "id": 11643,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "reverseEndianness",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11601,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11643,
                  "src": "2575:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11600,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2575:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2574:17:48"
            },
            "returnParameters": {
              "id": 11605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11604,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11643,
                  "src": "2615:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11603,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2615:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2614:14:48"
            },
            "scope": 13216,
            "src": "2548:278:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11738,
              "nodeType": "Block",
              "src": "3158:974:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11650,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11648,
                      "src": "3168:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11651,
                      "name": "_b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11645,
                      "src": "3172:2:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3168:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11653,
                  "nodeType": "ExpressionStatement",
                  "src": "3168:6:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11654,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11648,
                      "src": "3207:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11655,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3213:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "38",
                                    "id": 11656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3218:1:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "3213:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11658,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3212:8:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
                              "id": 11659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3223:66:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
                                "typeString": "int_const 4505...(67 digits omitted)...9455"
                              },
                              "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
                            },
                            "src": "3212:77:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11661,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3211:79:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11662,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3307:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
                                    "id": 11663,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3311:66:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
                                      "typeString": "int_const 4505...(67 digits omitted)...9455"
                                    },
                                    "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
                                  },
                                  "src": "3307:70:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11665,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3306:72:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "38",
                              "id": 11666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3382:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            },
                            "src": "3306:77:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11668,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3305:79:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3211:173:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3207:177:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11671,
                  "nodeType": "ExpressionStatement",
                  "src": "3207:177:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11672,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11648,
                      "src": "3428:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11673,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3434:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3136",
                                    "id": 11674,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3439:2:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "value": "16"
                                  },
                                  "src": "3434:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11676,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3433:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
                              "id": 11677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3445:66:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
                                "typeString": "int_const 1766...(65 digits omitted)...4255"
                              },
                              "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
                            },
                            "src": "3433:78:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11679,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3432:80:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11680,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3529:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
                                    "id": 11681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3533:66:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
                                      "typeString": "int_const 1766...(65 digits omitted)...4255"
                                    },
                                    "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
                                  },
                                  "src": "3529:70:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11683,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3528:72:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3136",
                              "id": 11684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3604:2:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_16_by_1",
                                "typeString": "int_const 16"
                              },
                              "value": "16"
                            },
                            "src": "3528:78:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11686,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3527:80:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3432:175:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3428:179:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11689,
                  "nodeType": "ExpressionStatement",
                  "src": "3428:179:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11690,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11648,
                      "src": "3651:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11705,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11691,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3657:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3332",
                                    "id": 11692,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3662:2:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  "src": "3657:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11694,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3656:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
                              "id": 11695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3668:66:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
                                "typeString": "int_const 2695...(60 digits omitted)...3855"
                              },
                              "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
                            },
                            "src": "3656:78:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11697,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3655:80:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11698,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3752:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
                                    "id": 11699,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3756:66:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
                                      "typeString": "int_const 2695...(60 digits omitted)...3855"
                                    },
                                    "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
                                  },
                                  "src": "3752:70:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11701,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3751:72:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3332",
                              "id": 11702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3827:2:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "3751:78:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11704,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3750:80:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3655:175:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3651:179:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11707,
                  "nodeType": "ExpressionStatement",
                  "src": "3651:179:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11708,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11648,
                      "src": "3874:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11711,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11709,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3880:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3634",
                                    "id": 11710,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3885:2:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  "src": "3880:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11712,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3879:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
                              "id": 11713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3891:66:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
                                "typeString": "int_const 6277...(50 digits omitted)...3055"
                              },
                              "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
                            },
                            "src": "3879:78:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11715,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3878:80:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11716,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11648,
                                    "src": "3975:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
                                    "id": 11717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3979:66:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
                                      "typeString": "int_const 6277...(50 digits omitted)...3055"
                                    },
                                    "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
                                  },
                                  "src": "3975:70:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11719,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3974:72:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3634",
                              "id": 11720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4050:2:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "3974:78:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11722,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3973:80:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3878:175:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3874:179:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11725,
                  "nodeType": "ExpressionStatement",
                  "src": "3874:179:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11726,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11648,
                      "src": "4098:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11735,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11727,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11648,
                              "src": "4103:1:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313238",
                              "id": 11728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4108:3:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_128_by_1",
                                "typeString": "int_const 128"
                              },
                              "value": "128"
                            },
                            "src": "4103:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11730,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4102:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11731,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11648,
                              "src": "4116:1:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313238",
                              "id": 11732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4121:3:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_128_by_1",
                                "typeString": "int_const 128"
                              },
                              "value": "128"
                            },
                            "src": "4116:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 11734,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4115:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4102:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4098:27:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11737,
                  "nodeType": "ExpressionStatement",
                  "src": "4098:27:48"
                }
              ]
            },
            "documentation": "@notice          Changes the endianness of a uint256\n @dev             https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel\n @param _b        The unsigned integer to reverse\n @return          The reversed value",
            "id": 11739,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "reverseUint256",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11645,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11739,
                  "src": "3112:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11644,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3112:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3111:12:48"
            },
            "returnParameters": {
              "id": 11649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11648,
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "scope": 11739,
                  "src": "3147:9:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11647,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3147:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3146:11:48"
            },
            "scope": 13216,
            "src": "3088:1044:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11789,
              "nodeType": "Block",
              "src": "4452:198:48",
              "statements": [
                {
                  "assignments": [
                    11747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11747,
                      "name": "_number",
                      "nodeType": "VariableDeclaration",
                      "scope": 11789,
                      "src": "4462:15:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11746,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4462:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11748,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4462:15:48"
                },
                {
                  "body": {
                    "id": 11785,
                    "nodeType": "Block",
                    "src": "4525:94:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11760,
                            "name": "_number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11747,
                            "src": "4539:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11761,
                              "name": "_number",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11747,
                              "src": "4549:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 11763,
                                      "name": "_b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11741,
                                      "src": "4565:2:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 11765,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 11764,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11750,
                                      "src": "4568:1:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4565:5:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 11762,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4559:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": "uint8"
                                },
                                "id": 11766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4559:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 11779,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 11767,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4575:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 11777,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "38",
                                            "id": 11768,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4581:1:48",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_8_by_1",
                                              "typeString": "int_const 8"
                                            },
                                            "value": "8"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 11775,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 11769,
                                                    "name": "_b",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11741,
                                                    "src": "4586:2:48",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  },
                                                  "id": 11770,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "length",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "4586:9:48",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "components": [
                                                    {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 11773,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 11771,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 11750,
                                                        "src": "4599:1:48",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 11772,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4603:1:48",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "4599:5:48",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 11774,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "4598:7:48",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "4586:19:48",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 11776,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "4585:21:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4581:25:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 11778,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "4580:27:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4575:32:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 11780,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4574:34:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4559:49:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4549:59:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4539:69:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11784,
                        "nodeType": "ExpressionStatement",
                        "src": "4539:69:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11753,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11750,
                      "src": "4505:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11754,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11741,
                        "src": "4509:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4509:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4505:13:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11786,
                  "initializationExpression": {
                    "assignments": [
                      11750
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11750,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 11786,
                        "src": "4493:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11749,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4493:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11752,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11751,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4502:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4493:10:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4520:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11757,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11750,
                        "src": "4520:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11759,
                    "nodeType": "ExpressionStatement",
                    "src": "4520:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "4488:131:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11787,
                    "name": "_number",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11747,
                    "src": "4636:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11745,
                  "id": 11788,
                  "nodeType": "Return",
                  "src": "4629:14:48"
                }
              ]
            },
            "documentation": "@notice          Converts big-endian bytes to a uint\n @dev             Traverses the byte array and sums the bytes\n @param _b        The big-endian bytes-encoded integer\n @return          The integer representation",
            "id": 11790,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "bytesToUint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11741,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11790,
                  "src": "4403:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11740,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4403:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4402:17:48"
            },
            "returnParameters": {
              "id": 11745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11744,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11790,
                  "src": "4443:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11743,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4443:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4442:9:48"
            },
            "scope": 13216,
            "src": "4382:268:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11813,
              "nodeType": "Block",
              "src": "4979:93:48",
              "statements": [
                {
                  "assignments": [
                    11800
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11800,
                      "name": "_start",
                      "nodeType": "VariableDeclaration",
                      "scope": 11813,
                      "src": "4989:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11799,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4989:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11806,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11804,
                        "name": "_num",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11794,
                        "src": "5020:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11801,
                          "name": "_b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11792,
                          "src": "5006:2:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11802,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5006:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11803,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13895,
                      "src": "5006:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 11805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5006:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4989:36:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11809,
                        "name": "_start",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11800,
                        "src": "5052:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11810,
                        "name": "_num",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11794,
                        "src": "5060:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11807,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11792,
                        "src": "5043:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "5043:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 11811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5043:22:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11798,
                  "id": 11812,
                  "nodeType": "Return",
                  "src": "5036:29:48"
                }
              ]
            },
            "documentation": "@notice          Get the last _num bytes from a byte array\n @param _b        The byte array to slice\n @param _num      The number of bytes to extract from the end\n @return          The last _num bytes of _b",
            "id": 11814,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "lastBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11792,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11814,
                  "src": "4911:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11791,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4911:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11794,
                  "name": "_num",
                  "nodeType": "VariableDeclaration",
                  "scope": 11814,
                  "src": "4928:12:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11793,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4928:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4910:31:48"
            },
            "returnParameters": {
              "id": 11798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11797,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11814,
                  "src": "4965:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11796,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4965:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4964:14:48"
            },
            "scope": 13216,
            "src": "4892:180:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11833,
              "nodeType": "Block",
              "src": "5384:81:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11827,
                                    "name": "_b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11816,
                                    "src": "5452:2:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 11826,
                                  "name": "sha256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18369,
                                  "src": "5445:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 11828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5445:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 11824,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18347,
                                "src": "5428:3:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 11825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5428:16:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 11829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5428:28:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 11823,
                          "name": "ripemd160",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18367,
                          "src": "5418:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ripemd160_pure$_t_bytes_memory_ptr_$returns$_t_bytes20_$",
                            "typeString": "function (bytes memory) pure returns (bytes20)"
                          }
                        },
                        "id": 11830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5418:39:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11821,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18347,
                        "src": "5401:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 11822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5401:16:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 11831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5401:57:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11820,
                  "id": 11832,
                  "nodeType": "Return",
                  "src": "5394:64:48"
                }
              ]
            },
            "documentation": "@notice          Implements bitcoin's hash160 (rmd160(sha2()))\n @dev             abi.encodePacked changes the return to bytes instead of bytes32\n @param _b        The pre-image\n @return          The digest",
            "id": 11834,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hash160",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11817,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11816,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11834,
                  "src": "5330:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11815,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5330:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5329:17:48"
            },
            "returnParameters": {
              "id": 11820,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11819,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11834,
                  "src": "5370:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11818,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5370:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5369:14:48"
            },
            "scope": 13216,
            "src": "5313:152:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11850,
              "nodeType": "Block",
              "src": "5769:60:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11845,
                                "name": "_b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11836,
                                "src": "5817:2:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 11844,
                              "name": "sha256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18369,
                              "src": "5810:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 11846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5810:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11842,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18347,
                            "src": "5793:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5793:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5793:28:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11841,
                      "name": "sha256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18369,
                      "src": "5786:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5786:36:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11840,
                  "id": 11849,
                  "nodeType": "Return",
                  "src": "5779:43:48"
                }
              ]
            },
            "documentation": "@notice          Implements bitcoin's hash256 (double sha2)\n @dev             abi.encodePacked changes the return to bytes instead of bytes32\n @param _b        The pre-image\n @return          The digest",
            "id": 11851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hash256",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11836,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11851,
                  "src": "5720:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11835,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5720:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5719:17:48"
            },
            "returnParameters": {
              "id": 11840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11839,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11851,
                  "src": "5760:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11838,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5760:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5759:9:48"
            },
            "scope": 13216,
            "src": "5703:126:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11859,
              "nodeType": "Block",
              "src": "6134:288:48",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "_b": {
                        "declaration": 11853,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "6293:2:48",
                        "valueSize": 1
                      }
                    },
                    {
                      "res": {
                        "declaration": 11856,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "6389:3:48",
                        "valueSize": 1
                      }
                    },
                    {
                      "_b": {
                        "declaration": 11853,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "6308:2:48",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11858,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let ptr := mload(0x40)\n    pop(staticcall(gas(), 2, add(_b, 32), mload(_b), ptr, 32))\n    pop(staticcall(gas(), 2, ptr, 32, ptr, 32))\n    res := mload(ptr)\n}",
                  "src": "6208:208:48"
                }
              ]
            },
            "documentation": "@notice          Implements bitcoin's hash256 (double sha2)\n @dev             sha2 is precompiled smart contract located at address(2)\n @param _b        The pre-image\n @return          The digest",
            "id": 11860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hash256View",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11853,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 11860,
                  "src": "6081:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11852,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6081:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6080:17:48"
            },
            "returnParameters": {
              "id": 11857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11856,
                  "name": "res",
                  "nodeType": "VariableDeclaration",
                  "scope": 11860,
                  "src": "6121:11:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11855,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6121:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6120:13:48"
            },
            "scope": 13216,
            "src": "6060:362:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11982,
              "nodeType": "Block",
              "src": "6963:875:48",
              "statements": [
                {
                  "assignments": [
                    11870
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11870,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 11982,
                      "src": "6973:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11869,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6973:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11871,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6973:22:48"
                },
                {
                  "assignments": [
                    11873
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11873,
                      "name": "_nIns",
                      "nodeType": "VariableDeclaration",
                      "scope": 11982,
                      "src": "7005:13:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11872,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7005:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11874,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7005:13:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 11875,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11870,
                          "src": "7030:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11876,
                          "name": "_nIns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11873,
                          "src": "7046:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 11877,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7029:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11879,
                          "name": "_vin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11862,
                          "src": "7067:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 11878,
                        "name": "parseVarInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "7055:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 11880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7055:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7029:43:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11882,
                  "nodeType": "ExpressionStatement",
                  "src": "7029:43:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11884,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11870,
                          "src": "7090:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11885,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "7108:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7090:29:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "52656164206f76657272756e20647572696e6720566172496e742070617273696e67",
                        "id": 11887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7121:36:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_44f1d85595cd9e7bca9d9a2d6049b01f75f753890836287504890b72b66f7afd",
                          "typeString": "literal_string \"Read overrun during VarInt parsing\""
                        },
                        "value": "Read overrun during VarInt parsing"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_44f1d85595cd9e7bca9d9a2d6049b01f75f753890836287504890b72b66f7afd",
                          "typeString": "literal_string \"Read overrun during VarInt parsing\""
                        }
                      ],
                      "id": 11883,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "7082:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7082:76:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11889,
                  "nodeType": "ExpressionStatement",
                  "src": "7082:76:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11891,
                          "name": "_index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11864,
                          "src": "7176:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11892,
                          "name": "_nIns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11873,
                          "src": "7185:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7176:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "56696e2072656164206f76657272756e",
                        "id": 11894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7192:18:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a957e9d3071160b28fdf54b241ef5554d7ebf4457632e38cd7ec08cd05aece4f",
                          "typeString": "literal_string \"Vin read overrun\""
                        },
                        "value": "Vin read overrun"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a957e9d3071160b28fdf54b241ef5554d7ebf4457632e38cd7ec08cd05aece4f",
                          "typeString": "literal_string \"Vin read overrun\""
                        }
                      ],
                      "id": 11890,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "7168:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7168:43:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11896,
                  "nodeType": "ExpressionStatement",
                  "src": "7168:43:48"
                },
                {
                  "assignments": [
                    11898
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11898,
                      "name": "_remaining",
                      "nodeType": "VariableDeclaration",
                      "scope": 11982,
                      "src": "7222:23:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11897,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7222:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11899,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7222:23:48"
                },
                {
                  "assignments": [
                    11901
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11901,
                      "name": "_len",
                      "nodeType": "VariableDeclaration",
                      "scope": 11982,
                      "src": "7256:12:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11900,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7256:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11903,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 11902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7271:1:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7256:16:48"
                },
                {
                  "assignments": [
                    11905
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11905,
                      "name": "_offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 11982,
                      "src": "7282:15:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11904,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7282:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11909,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7300:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11907,
                      "name": "_varIntDataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11870,
                      "src": "7304:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7300:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7282:36:48"
                },
                {
                  "body": {
                    "id": 11950,
                    "nodeType": "Block",
                    "src": "7370:240:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11920,
                            "name": "_remaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "7384:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11923,
                                "name": "_offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11905,
                                "src": "7408:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11924,
                                    "name": "_vin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11862,
                                    "src": "7417:4:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 11925,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7417:11:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11926,
                                  "name": "_offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11905,
                                  "src": "7431:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7417:21:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 11921,
                                "name": "_vin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11862,
                                "src": "7397:4:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 11922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "slice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13281,
                              "src": "7397:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 11928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7397:42:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "7384:55:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11930,
                        "nodeType": "ExpressionStatement",
                        "src": "7384:55:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11931,
                            "name": "_len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11901,
                            "src": "7453:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11933,
                                "name": "_remaining",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11898,
                                "src": "7481:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 11932,
                              "name": "determineInputLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12089,
                              "src": "7460:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) pure returns (uint256)"
                              }
                            },
                            "id": 11934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7460:32:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7453:39:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11936,
                        "nodeType": "ExpressionStatement",
                        "src": "7453:39:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11938,
                                "name": "_len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11901,
                                "src": "7514:4:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 11939,
                                "name": "ERR_BAD_ARG",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11499,
                                "src": "7522:11:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7514:19:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "42616420566172496e7420696e20736372697074536967",
                              "id": 11941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7535:25:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                                "typeString": "literal_string \"Bad VarInt in scriptSig\""
                              },
                              "value": "Bad VarInt in scriptSig"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                                "typeString": "literal_string \"Bad VarInt in scriptSig\""
                              }
                            ],
                            "id": 11937,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18363,
                              18364
                            ],
                            "referencedDeclaration": 18364,
                            "src": "7506:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7506:55:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11943,
                        "nodeType": "ExpressionStatement",
                        "src": "7506:55:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11944,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11905,
                            "src": "7575:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11945,
                              "name": "_offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11905,
                              "src": "7585:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11946,
                              "name": "_len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11901,
                              "src": "7595:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7585:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7575:24:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11949,
                        "nodeType": "ExpressionStatement",
                        "src": "7575:24:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11914,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11911,
                      "src": "7350:2:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11915,
                      "name": "_index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11864,
                      "src": "7355:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7350:11:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11951,
                  "initializationExpression": {
                    "assignments": [
                      11911
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11911,
                        "name": "_i",
                        "nodeType": "VariableDeclaration",
                        "scope": 11951,
                        "src": "7334:10:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11910,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7334:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11913,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7347:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7334:14:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11918,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7363:5:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11917,
                        "name": "_i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11911,
                        "src": "7363:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11919,
                    "nodeType": "ExpressionStatement",
                    "src": "7363:5:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "7329:281:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11952,
                      "name": "_remaining",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11898,
                      "src": "7620:10:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11955,
                          "name": "_offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11905,
                          "src": "7644:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11956,
                              "name": "_vin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11862,
                              "src": "7653:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 11957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7653:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11958,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11905,
                            "src": "7667:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7653:21:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11953,
                          "name": "_vin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11862,
                          "src": "7633:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "slice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13281,
                        "src": "7633:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 11960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7633:42:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7620:55:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 11962,
                  "nodeType": "ExpressionStatement",
                  "src": "7620:55:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11963,
                      "name": "_len",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11901,
                      "src": "7685:4:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11965,
                          "name": "_remaining",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "7713:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 11964,
                        "name": "determineInputLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12089,
                        "src": "7692:20:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256)"
                        }
                      },
                      "id": 11966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7692:32:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7685:39:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11968,
                  "nodeType": "ExpressionStatement",
                  "src": "7685:39:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11970,
                          "name": "_len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11901,
                          "src": "7742:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11971,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "7750:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7742:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "42616420566172496e7420696e20736372697074536967",
                        "id": 11973,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7763:25:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                        },
                        "value": "Bad VarInt in scriptSig"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                        }
                      ],
                      "id": 11969,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "7734:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7734:55:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11975,
                  "nodeType": "ExpressionStatement",
                  "src": "7734:55:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11978,
                        "name": "_offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11905,
                        "src": "7817:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11979,
                        "name": "_len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11901,
                        "src": "7826:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11976,
                        "name": "_vin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11862,
                        "src": "7806:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11977,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "7806:10:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 11980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7806:25:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11868,
                  "id": 11981,
                  "nodeType": "Return",
                  "src": "7799:32:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the nth input from the vin (0-indexed)\n @dev             Iterates over the vin. If you need to extract several, write a custom function\n @param _vin      The vin as a tightly-packed byte array\n @param _index    The 0-indexed location of the input to extract\n @return          The input as a byte array",
            "id": 11983,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractInputAtIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11862,
                  "name": "_vin",
                  "nodeType": "VariableDeclaration",
                  "scope": 11983,
                  "src": "6891:17:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11861,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6891:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11864,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "scope": 11983,
                  "src": "6910:14:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11863,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6910:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6890:35:48"
            },
            "returnParameters": {
              "id": 11868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11867,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11983,
                  "src": "6949:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11866,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6949:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6948:14:48"
            },
            "scope": 13216,
            "src": "6862:976:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12000,
              "nodeType": "Block",
              "src": "8138:74:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 11998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "3336",
                          "id": 11992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8177:2:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_36_by_1",
                            "typeString": "int_const 36"
                          },
                          "value": "36"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 11993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8181:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_36_by_1",
                            "typeString": "int_const 36"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11990,
                          "name": "_input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11985,
                          "src": "8155:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak256Slice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13431,
                        "src": "8155:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                        }
                      },
                      "id": 11994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8155:28:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "00",
                          "id": 11996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8197:7:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a",
                            "typeString": "literal_string \"\u0000\""
                          },
                          "value": "\u0000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a",
                            "typeString": "literal_string \"\u0000\""
                          }
                        ],
                        "id": 11995,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18354,
                        "src": "8187:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 11997,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8187:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8155:50:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11989,
                  "id": 11999,
                  "nodeType": "Return",
                  "src": "8148:57:48"
                }
              ]
            },
            "documentation": "@notice          Determines whether an input is legacy\n @dev             False if no scriptSig, otherwise True\n @param _input    The input\n @return          True for legacy, False for witness",
            "id": 12001,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isLegacyInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11985,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12001,
                  "src": "8088:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11984,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8088:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8087:21:48"
            },
            "returnParameters": {
              "id": 11989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11988,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12001,
                  "src": "8132:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11987,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8132:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8131:6:48"
            },
            "scope": 13216,
            "src": "8065:147:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12049,
              "nodeType": "Block",
              "src": "8545:348:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12010,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12003,
                        "src": "8559:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8559:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3337",
                      "id": 12012,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8575:2:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_37_by_1",
                        "typeString": "int_const 37"
                      },
                      "value": "37"
                    },
                    "src": "8559:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12019,
                  "nodeType": "IfStatement",
                  "src": "8555:72:48",
                  "trueBody": {
                    "id": 12018,
                    "nodeType": "Block",
                    "src": "8579:48:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 12014,
                              "name": "ERR_BAD_ARG",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11499,
                              "src": "8601:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8614:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 12016,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8600:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_rational_0_by_1_$",
                            "typeString": "tuple(uint256,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 12009,
                        "id": 12017,
                        "nodeType": "Return",
                        "src": "8593:23:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12021,
                      "name": "_afterOutpoint",
                      "nodeType": "VariableDeclaration",
                      "scope": 12049,
                      "src": "8636:27:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12020,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "8636:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12030,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3336",
                        "id": 12024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8679:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        "value": "36"
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12025,
                            "name": "_input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12003,
                            "src": "8683:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 12026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8683:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3336",
                          "id": 12027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8699:2:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_36_by_1",
                            "typeString": "int_const 36"
                          },
                          "value": "36"
                        },
                        "src": "8683:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12022,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12003,
                        "src": "8666:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12023,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "8666:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8666:36:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8636:66:48"
                },
                {
                  "assignments": [
                    12032
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12032,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12049,
                      "src": "8713:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12031,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8713:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12033,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8713:22:48"
                },
                {
                  "assignments": [
                    12035
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12035,
                      "name": "_scriptSigLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12049,
                      "src": "8745:21:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12034,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8745:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12036,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8745:21:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12037,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12032,
                          "src": "8777:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12038,
                          "name": "_scriptSigLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12035,
                          "src": "8793:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12039,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8776:31:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12041,
                          "name": "_afterOutpoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12021,
                          "src": "8822:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12040,
                        "name": "parseVarInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "8810:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8810:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8776:61:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12044,
                  "nodeType": "ExpressionStatement",
                  "src": "8776:61:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 12045,
                        "name": "_varIntDataLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12032,
                        "src": "8856:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12046,
                        "name": "_scriptSigLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12035,
                        "src": "8872:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 12047,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8855:31:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 12009,
                  "id": 12048,
                  "nodeType": "Return",
                  "src": "8848:38:48"
                }
              ]
            },
            "documentation": "@notice          Determines the length of a scriptSig in an input\n @dev             Will return 0 if passed a witness input.\n @param _input    The LEGACY input\n @return          The length of the script sig",
            "id": 12050,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractScriptSigLen",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12003,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12050,
                  "src": "8483:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12002,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8483:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8482:21:48"
            },
            "returnParameters": {
              "id": 12009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12006,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12050,
                  "src": "8527:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8527:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12008,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12050,
                  "src": "8536:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12007,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8536:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8526:18:48"
            },
            "scope": 13216,
            "src": "8454:439:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12088,
              "nodeType": "Block",
              "src": "9234:289:48",
              "statements": [
                {
                  "assignments": [
                    12058
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12058,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12088,
                      "src": "9244:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12057,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9244:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12059,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9244:22:48"
                },
                {
                  "assignments": [
                    12061
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12061,
                      "name": "_scriptSigLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12088,
                      "src": "9276:21:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12060,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9276:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12062,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9276:21:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12063,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12058,
                          "src": "9308:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12064,
                          "name": "_scriptSigLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12061,
                          "src": "9324:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12065,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9307:31:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12067,
                          "name": "_input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12052,
                          "src": "9361:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12066,
                        "name": "extractScriptSigLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12050,
                        "src": "9341:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12068,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9341:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9307:61:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12070,
                  "nodeType": "ExpressionStatement",
                  "src": "9307:61:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12071,
                      "name": "_varIntDataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12058,
                      "src": "9382:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12072,
                      "name": "ERR_BAD_ARG",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11499,
                      "src": "9400:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9382:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12077,
                  "nodeType": "IfStatement",
                  "src": "9378:78:48",
                  "trueBody": {
                    "id": 12076,
                    "nodeType": "Block",
                    "src": "9413:43:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12074,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "9434:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12056,
                        "id": 12075,
                        "nodeType": "Return",
                        "src": "9427:18:48"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_37_by_1",
                            "typeString": "int_const 37"
                          },
                          "id": 12080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3336",
                            "id": 12078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9473:2:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_36_by_1",
                              "typeString": "int_const 36"
                            },
                            "value": "36"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 12079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9478:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9473:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_37_by_1",
                            "typeString": "int_const 37"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12081,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12058,
                          "src": "9482:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9473:23:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 12083,
                        "name": "_scriptSigLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12061,
                        "src": "9499:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "9473:39:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "34",
                      "id": 12085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9515:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "9473:43:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12056,
                  "id": 12087,
                  "nodeType": "Return",
                  "src": "9466:50:48"
                }
              ]
            },
            "documentation": "@notice          Determines the length of an input from its scriptSig\n @dev             36 for outpoint, 1 for scriptSig length, 4 for sequence\n @param _input    The input\n @return          The length of the input in bytes",
            "id": 12089,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineInputLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12053,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12052,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12089,
                  "src": "9181:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12051,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9181:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9180:21:48"
            },
            "returnParameters": {
              "id": 12056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12055,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12089,
                  "src": "9225:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12054,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9225:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9224:9:48"
            },
            "scope": 13216,
            "src": "9151:372:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12129,
              "nodeType": "Block",
              "src": "9852:289:48",
              "statements": [
                {
                  "assignments": [
                    12097
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12097,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12129,
                      "src": "9862:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12096,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9862:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12098,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9862:22:48"
                },
                {
                  "assignments": [
                    12100
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12100,
                      "name": "_scriptSigLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12129,
                      "src": "9894:21:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12099,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9894:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12101,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9894:21:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12102,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12097,
                          "src": "9926:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12103,
                          "name": "_scriptSigLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12100,
                          "src": "9942:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12104,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9925:31:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12106,
                          "name": "_input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12091,
                          "src": "9979:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12105,
                        "name": "extractScriptSigLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12050,
                        "src": "9959:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12107,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9959:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9925:61:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12109,
                  "nodeType": "ExpressionStatement",
                  "src": "9925:61:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12111,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12097,
                          "src": "10004:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12112,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "10022:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10004:29:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "42616420566172496e7420696e20736372697074536967",
                        "id": 12114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10035:25:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                        },
                        "value": "Bad VarInt in scriptSig"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                        }
                      ],
                      "id": 12110,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9996:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9996:65:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12116,
                  "nodeType": "ExpressionStatement",
                  "src": "9996:65:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_37_by_1",
                              "typeString": "int_const 37"
                            },
                            "id": 12121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3336",
                              "id": 12119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10091:2:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_36_by_1",
                                "typeString": "int_const 36"
                              },
                              "value": "36"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 12120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10096:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "10091:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_37_by_1",
                              "typeString": "int_const 37"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12122,
                            "name": "_varIntDataLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12097,
                            "src": "10100:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10091:23:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12124,
                          "name": "_scriptSigLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12100,
                          "src": "10117:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10091:39:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 12126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10132:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12117,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12091,
                        "src": "10078:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "10078:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10078:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12095,
                  "id": 12128,
                  "nodeType": "Return",
                  "src": "10071:63:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the LE sequence bytes from an input\n @dev             Sequence is used for relative time locks\n @param _input    The LEGACY input\n @return          The sequence bytes (LE uint)",
            "id": 12130,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractSequenceLELegacy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12092,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12091,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12130,
                  "src": "9794:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12090,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9794:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9793:21:48"
            },
            "returnParameters": {
              "id": 12095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12094,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12130,
                  "src": "9838:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12093,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9838:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9837:14:48"
            },
            "scope": 13216,
            "src": "9761:380:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12155,
              "nodeType": "Block",
              "src": "10464:189:48",
              "statements": [
                {
                  "assignments": [
                    12138
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12138,
                      "name": "_leSeqence",
                      "nodeType": "VariableDeclaration",
                      "scope": 12155,
                      "src": "10474:23:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12137,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10474:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12142,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12140,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12132,
                        "src": "10524:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12139,
                      "name": "extractSequenceLELegacy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12130,
                      "src": "10500:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 12141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10500:31:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10474:57:48"
                },
                {
                  "assignments": [
                    12144
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12144,
                      "name": "_beSequence",
                      "nodeType": "VariableDeclaration",
                      "scope": 12155,
                      "src": "10541:24:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12143,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10541:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12148,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12146,
                        "name": "_leSeqence",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12138,
                        "src": "10586:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12145,
                      "name": "reverseEndianness",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11643,
                      "src": "10568:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 12147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10568:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10541:56:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12151,
                            "name": "_beSequence",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12144,
                            "src": "10633:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12150,
                          "name": "bytesToUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11790,
                          "src": "10621:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory) pure returns (uint256)"
                          }
                        },
                        "id": 12152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10621:24:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12149,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "10614:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint32_$",
                        "typeString": "type(uint32)"
                      },
                      "typeName": "uint32"
                    },
                    "id": 12153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10614:32:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 12136,
                  "id": 12154,
                  "nodeType": "Return",
                  "src": "10607:39:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the sequence from the input\n @dev             Sequence is a 4-byte little-endian number\n @param _input    The LEGACY input\n @return          The sequence number (big-endian uint)",
            "id": 12156,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractSequenceLegacy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12132,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12156,
                  "src": "10412:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12131,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10412:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10411:21:48"
            },
            "returnParameters": {
              "id": 12136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12135,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12156,
                  "src": "10456:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 12134,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10456:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10455:8:48"
            },
            "scope": 13216,
            "src": "10381:272:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12194,
              "nodeType": "Block",
              "src": "10999:285:48",
              "statements": [
                {
                  "assignments": [
                    12164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12164,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12194,
                      "src": "11009:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12163,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11009:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12165,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11009:22:48"
                },
                {
                  "assignments": [
                    12167
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12167,
                      "name": "_scriptSigLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12194,
                      "src": "11041:21:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12166,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11041:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12168,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11041:21:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12169,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12164,
                          "src": "11073:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12170,
                          "name": "_scriptSigLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12167,
                          "src": "11089:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12171,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11072:31:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12173,
                          "name": "_input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12158,
                          "src": "11126:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12172,
                        "name": "extractScriptSigLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12050,
                        "src": "11106:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12174,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11106:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11072:61:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12176,
                  "nodeType": "ExpressionStatement",
                  "src": "11072:61:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12178,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12164,
                          "src": "11151:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12179,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "11169:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11151:29:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "42616420566172496e7420696e20736372697074536967",
                        "id": 12181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11182:25:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                        },
                        "value": "Bad VarInt in scriptSig"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                        }
                      ],
                      "id": 12177,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "11143:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11143:65:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12183,
                  "nodeType": "ExpressionStatement",
                  "src": "11143:65:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3336",
                        "id": 12186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11238:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        "value": "36"
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 12187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11242:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12188,
                            "name": "_varIntDataLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12164,
                            "src": "11246:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11242:18:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12190,
                          "name": "_scriptSigLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12167,
                          "src": "11263:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11242:34:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12184,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12158,
                        "src": "11225:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "11225:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11225:52:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12162,
                  "id": 12193,
                  "nodeType": "Return",
                  "src": "11218:59:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the VarInt-prepended scriptSig from the input in a tx\n @dev             Will return hex\"00\" if passed a witness input\n @param _input    The LEGACY input\n @return          The length-prepended scriptSig",
            "id": 12195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractScriptSig",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12159,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12158,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12195,
                  "src": "10941:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12157,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10941:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10940:21:48"
            },
            "returnParameters": {
              "id": 12162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12161,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12195,
                  "src": "10985:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12160,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10985:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10984:14:48"
            },
            "scope": 13216,
            "src": "10915:369:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12208,
              "nodeType": "Block",
              "src": "11689:43:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3337",
                        "id": 12204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11719:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_37_by_1",
                          "typeString": "int_const 37"
                        },
                        "value": "37"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 12205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11723:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_37_by_1",
                          "typeString": "int_const 37"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12202,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12197,
                        "src": "11706:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "11706:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11706:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12201,
                  "id": 12207,
                  "nodeType": "Return",
                  "src": "11699:26:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the LE sequence bytes from an input\n @dev             Sequence is used for relative time locks\n @param _input    The WITNESS input\n @return          The sequence bytes (LE uint)",
            "id": 12209,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractSequenceLEWitness",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12197,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12209,
                  "src": "11631:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12196,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11631:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11630:21:48"
            },
            "returnParameters": {
              "id": 12201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12200,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12209,
                  "src": "11675:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12199,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11675:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11674:14:48"
            },
            "scope": 13216,
            "src": "11597:135:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12234,
              "nodeType": "Block",
              "src": "12065:198:48",
              "statements": [
                {
                  "assignments": [
                    12217
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12217,
                      "name": "_leSeqence",
                      "nodeType": "VariableDeclaration",
                      "scope": 12234,
                      "src": "12075:23:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12216,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12075:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12221,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12219,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12211,
                        "src": "12126:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12218,
                      "name": "extractSequenceLEWitness",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12209,
                      "src": "12101:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 12220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12101:32:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12075:58:48"
                },
                {
                  "assignments": [
                    12223
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12223,
                      "name": "_inputeSequence",
                      "nodeType": "VariableDeclaration",
                      "scope": 12234,
                      "src": "12143:28:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12222,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12143:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12227,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12225,
                        "name": "_leSeqence",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12217,
                        "src": "12192:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12224,
                      "name": "reverseEndianness",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11643,
                      "src": "12174:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 12226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12174:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12143:60:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12230,
                            "name": "_inputeSequence",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12223,
                            "src": "12239:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12229,
                          "name": "bytesToUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11790,
                          "src": "12227:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory) pure returns (uint256)"
                          }
                        },
                        "id": 12231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12227:28:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "12220:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint32_$",
                        "typeString": "type(uint32)"
                      },
                      "typeName": "uint32"
                    },
                    "id": 12232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12220:36:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 12215,
                  "id": 12233,
                  "nodeType": "Return",
                  "src": "12213:43:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the sequence from the input in a tx\n @dev             Sequence is a 4-byte little-endian number\n @param _input    The WITNESS input\n @return          The sequence number (big-endian uint)",
            "id": 12235,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractSequenceWitness",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12211,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12235,
                  "src": "12013:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12210,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12013:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12012:21:48"
            },
            "returnParameters": {
              "id": 12215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12214,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12235,
                  "src": "12057:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 12213,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12057:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12056:8:48"
            },
            "scope": 13216,
            "src": "11981:282:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12248,
              "nodeType": "Block",
              "src": "12607:43:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12637:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3336",
                        "id": 12245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12640:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        "value": "36"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12242,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12237,
                        "src": "12624:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "12624:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12624:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12241,
                  "id": 12247,
                  "nodeType": "Return",
                  "src": "12617:26:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the outpoint from the input in a tx\n @dev             32-byte tx id with 4-byte index\n @param _input    The input\n @return          The outpoint (LE bytes of prev tx hash + LE bytes of prev tx index)",
            "id": 12249,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractOutpoint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12237,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12249,
                  "src": "12549:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12236,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12549:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12548:21:48"
            },
            "returnParameters": {
              "id": 12241,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12240,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12249,
                  "src": "12593:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12239,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12593:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12592:14:48"
            },
            "scope": 13216,
            "src": "12524:126:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12264,
              "nodeType": "Block",
              "src": "12935:55:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12965:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 12259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12968:2:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12256,
                            "name": "_input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12251,
                            "src": "12952:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 12257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "slice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13281,
                          "src": "12952:12:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                          }
                        },
                        "id": 12260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12952:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toBytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13400,
                      "src": "12952:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 12262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12952:31:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12255,
                  "id": 12263,
                  "nodeType": "Return",
                  "src": "12945:38:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the outpoint tx id from an input\n @dev             32-byte tx id\n @param _input    The input\n @return          The tx id (little-endian bytes)",
            "id": 12265,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractInputTxIdLE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12252,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12251,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12265,
                  "src": "12882:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12250,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12882:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12881:21:48"
            },
            "returnParameters": {
              "id": 12255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12254,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12265,
                  "src": "12926:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12253,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12926:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12925:9:48"
            },
            "scope": 13216,
            "src": "12854:136:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12278,
              "nodeType": "Block",
              "src": "13295:43:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 12274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13325:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 12275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13329:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12272,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12267,
                        "src": "13312:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12273,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "13312:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13312:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12271,
                  "id": 12277,
                  "nodeType": "Return",
                  "src": "13305:26:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the LE tx input index from the input in a tx\n @dev             4-byte tx index\n @param _input    The input\n @return          The tx index (little-endian bytes)",
            "id": 12279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractTxIndexLE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12267,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "13237:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12266,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13237:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13236:21:48"
            },
            "returnParameters": {
              "id": 12271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12270,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "13281:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12269,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13281:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13280:14:48"
            },
            "scope": 13216,
            "src": "13211:127:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12334,
              "nodeType": "Block",
              "src": "13728:497:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12286,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12281,
                        "src": "13742:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13742:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "39",
                      "id": 12288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13759:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_9_by_1",
                        "typeString": "int_const 9"
                      },
                      "value": "9"
                    },
                    "src": "13742:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12293,
                  "nodeType": "IfStatement",
                  "src": "13738:67:48",
                  "trueBody": {
                    "id": 12292,
                    "nodeType": "Block",
                    "src": "13762:43:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12290,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "13783:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12285,
                        "id": 12291,
                        "nodeType": "Return",
                        "src": "13776:18:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12295
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12295,
                      "name": "_afterValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 12334,
                      "src": "13814:24:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12294,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13814:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12304,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "38",
                        "id": 12298,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13855:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12299,
                            "name": "_output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12281,
                            "src": "13858:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 12300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13858:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 12301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13875:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "src": "13858:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12296,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12281,
                        "src": "13841:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "13841:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13841:36:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13814:63:48"
                },
                {
                  "assignments": [
                    12306
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12306,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12334,
                      "src": "13888:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12305,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13888:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12307,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13888:22:48"
                },
                {
                  "assignments": [
                    12309
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12309,
                      "name": "_scriptPubkeyLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 12334,
                      "src": "13920:27:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12308,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13920:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12310,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13920:27:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12311,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12306,
                          "src": "13958:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12312,
                          "name": "_scriptPubkeyLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12309,
                          "src": "13974:19:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12313,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "13957:37:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12315,
                          "name": "_afterValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12295,
                          "src": "14009:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12314,
                        "name": "parseVarInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "13997:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13997:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "13957:64:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12318,
                  "nodeType": "ExpressionStatement",
                  "src": "13957:64:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12319,
                      "name": "_varIntDataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12306,
                      "src": "14036:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12320,
                      "name": "ERR_BAD_ARG",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11499,
                      "src": "14054:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14036:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12325,
                  "nodeType": "IfStatement",
                  "src": "14032:78:48",
                  "trueBody": {
                    "id": 12324,
                    "nodeType": "Block",
                    "src": "14067:43:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12322,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "14088:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12285,
                        "id": 12323,
                        "nodeType": "Return",
                        "src": "14081:18:48"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_rational_9_by_1",
                          "typeString": "int_const 9"
                        },
                        "id": 12328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 12326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14174:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14178:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "14174:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_9_by_1",
                          "typeString": "int_const 9"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 12329,
                        "name": "_varIntDataLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12306,
                        "src": "14182:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "14174:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12331,
                      "name": "_scriptPubkeyLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12309,
                      "src": "14199:19:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14174:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12285,
                  "id": 12333,
                  "nodeType": "Return",
                  "src": "14167:51:48"
                }
              ]
            },
            "documentation": "@notice          Determines the length of an output\n @dev             Works with any properly formatted output\n @param _output   The output\n @return          The length indicated by the prefix, error if invalid length",
            "id": 12335,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineOutputLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12281,
                  "name": "_output",
                  "nodeType": "VariableDeclaration",
                  "scope": 12335,
                  "src": "13674:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12280,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13674:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13673:22:48"
            },
            "returnParameters": {
              "id": 12285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12284,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12335,
                  "src": "13719:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13719:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13718:9:48"
            },
            "scope": 13216,
            "src": "13643:582:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12455,
              "nodeType": "Block",
              "src": "14693:884:48",
              "statements": [
                {
                  "assignments": [
                    12345
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12345,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12455,
                      "src": "14703:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12344,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14703:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12346,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14703:22:48"
                },
                {
                  "assignments": [
                    12348
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12348,
                      "name": "_nOuts",
                      "nodeType": "VariableDeclaration",
                      "scope": 12455,
                      "src": "14735:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12347,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14735:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12349,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14735:14:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12350,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12345,
                          "src": "14761:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12351,
                          "name": "_nOuts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12348,
                          "src": "14777:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12352,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "14760:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12354,
                          "name": "_vout",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12337,
                          "src": "14799:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12353,
                        "name": "parseVarInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "14787:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14787:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "14760:45:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12357,
                  "nodeType": "ExpressionStatement",
                  "src": "14760:45:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12359,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12345,
                          "src": "14823:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12360,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "14841:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "14823:29:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "52656164206f76657272756e20647572696e6720566172496e742070617273696e67",
                        "id": 12362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14854:36:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_44f1d85595cd9e7bca9d9a2d6049b01f75f753890836287504890b72b66f7afd",
                          "typeString": "literal_string \"Read overrun during VarInt parsing\""
                        },
                        "value": "Read overrun during VarInt parsing"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_44f1d85595cd9e7bca9d9a2d6049b01f75f753890836287504890b72b66f7afd",
                          "typeString": "literal_string \"Read overrun during VarInt parsing\""
                        }
                      ],
                      "id": 12358,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "14815:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14815:76:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12364,
                  "nodeType": "ExpressionStatement",
                  "src": "14815:76:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12366,
                          "name": "_index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12339,
                          "src": "14909:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12367,
                          "name": "_nOuts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12348,
                          "src": "14918:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "14909:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "566f75742072656164206f76657272756e",
                        "id": 12369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14926:19:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e068e1fd8aa77bf358e8fdf7376e327a6c370f4f6d3627d99c298841a0dd1ff4",
                          "typeString": "literal_string \"Vout read overrun\""
                        },
                        "value": "Vout read overrun"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e068e1fd8aa77bf358e8fdf7376e327a6c370f4f6d3627d99c298841a0dd1ff4",
                          "typeString": "literal_string \"Vout read overrun\""
                        }
                      ],
                      "id": 12365,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "14901:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14901:45:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12371,
                  "nodeType": "ExpressionStatement",
                  "src": "14901:45:48"
                },
                {
                  "assignments": [
                    12373
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12373,
                      "name": "_remaining",
                      "nodeType": "VariableDeclaration",
                      "scope": 12455,
                      "src": "14957:23:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12372,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14957:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12374,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14957:23:48"
                },
                {
                  "assignments": [
                    12376
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12376,
                      "name": "_len",
                      "nodeType": "VariableDeclaration",
                      "scope": 12455,
                      "src": "14991:12:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12375,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14991:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12378,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 12377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15006:1:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14991:16:48"
                },
                {
                  "assignments": [
                    12380
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12380,
                      "name": "_offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 12455,
                      "src": "15017:15:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12379,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15017:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12384,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 12381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15035:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12382,
                      "name": "_varIntDataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12345,
                      "src": "15039:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15035:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15017:36:48"
                },
                {
                  "body": {
                    "id": 12423,
                    "nodeType": "Block",
                    "src": "15105:237:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12395,
                            "name": "_remaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12373,
                            "src": "15119:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12398,
                                "name": "_offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12380,
                                "src": "15144:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12399,
                                    "name": "_vout",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12337,
                                    "src": "15153:5:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 12400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "15153:12:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 12401,
                                  "name": "_offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12380,
                                  "src": "15168:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15153:22:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 12396,
                                "name": "_vout",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12337,
                                "src": "15132:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 12397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "slice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13281,
                              "src": "15132:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 12403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15132:44:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "15119:57:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12405,
                        "nodeType": "ExpressionStatement",
                        "src": "15119:57:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12406,
                            "name": "_len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12376,
                            "src": "15190:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12408,
                                "name": "_remaining",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12373,
                                "src": "15219:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 12407,
                              "name": "determineOutputLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12335,
                              "src": "15197:21:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) pure returns (uint256)"
                              }
                            },
                            "id": 12409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15197:33:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15190:40:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12411,
                        "nodeType": "ExpressionStatement",
                        "src": "15190:40:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12413,
                                "name": "_len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12376,
                                "src": "15252:4:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12414,
                                "name": "ERR_BAD_ARG",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11499,
                                "src": "15260:11:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15252:19:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "42616420566172496e7420696e207363726970745075626b6579",
                              "id": 12416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15273:28:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_48d2595e6fa64d5f857e2d78dbcd21416ced754565dce896b9a2c1152aba80ab",
                                "typeString": "literal_string \"Bad VarInt in scriptPubkey\""
                              },
                              "value": "Bad VarInt in scriptPubkey"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_48d2595e6fa64d5f857e2d78dbcd21416ced754565dce896b9a2c1152aba80ab",
                                "typeString": "literal_string \"Bad VarInt in scriptPubkey\""
                              }
                            ],
                            "id": 12412,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18363,
                              18364
                            ],
                            "referencedDeclaration": 18364,
                            "src": "15244:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15244:58:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12418,
                        "nodeType": "ExpressionStatement",
                        "src": "15244:58:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12419,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12380,
                            "src": "15316:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12420,
                            "name": "_len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12376,
                            "src": "15327:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15316:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12422,
                        "nodeType": "ExpressionStatement",
                        "src": "15316:15:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12389,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12386,
                      "src": "15085:2:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12390,
                      "name": "_index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12339,
                      "src": "15090:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15085:11:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12424,
                  "initializationExpression": {
                    "assignments": [
                      12386
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12386,
                        "name": "_i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12424,
                        "src": "15069:10:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15069:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12388,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15082:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15069:14:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15098:5:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12392,
                        "name": "_i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12386,
                        "src": "15098:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12394,
                    "nodeType": "ExpressionStatement",
                    "src": "15098:5:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "15064:278:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12425,
                      "name": "_remaining",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12373,
                      "src": "15352:10:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12428,
                          "name": "_offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12380,
                          "src": "15377:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12429,
                              "name": "_vout",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12337,
                              "src": "15386:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15386:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12431,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12380,
                            "src": "15401:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15386:22:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12426,
                          "name": "_vout",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12337,
                          "src": "15365:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "slice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13281,
                        "src": "15365:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 12433,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15365:44:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "15352:57:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 12435,
                  "nodeType": "ExpressionStatement",
                  "src": "15352:57:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12436,
                      "name": "_len",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12376,
                      "src": "15419:4:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12438,
                          "name": "_remaining",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12373,
                          "src": "15448:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12437,
                        "name": "determineOutputLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12335,
                        "src": "15426:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256)"
                        }
                      },
                      "id": 12439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15426:33:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15419:40:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12441,
                  "nodeType": "ExpressionStatement",
                  "src": "15419:40:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12443,
                          "name": "_len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12376,
                          "src": "15477:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12444,
                          "name": "ERR_BAD_ARG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11499,
                          "src": "15485:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "15477:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "42616420566172496e7420696e207363726970745075626b6579",
                        "id": 12446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15498:28:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_48d2595e6fa64d5f857e2d78dbcd21416ced754565dce896b9a2c1152aba80ab",
                          "typeString": "literal_string \"Bad VarInt in scriptPubkey\""
                        },
                        "value": "Bad VarInt in scriptPubkey"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_48d2595e6fa64d5f857e2d78dbcd21416ced754565dce896b9a2c1152aba80ab",
                          "typeString": "literal_string \"Bad VarInt in scriptPubkey\""
                        }
                      ],
                      "id": 12442,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "15469:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15469:58:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12448,
                  "nodeType": "ExpressionStatement",
                  "src": "15469:58:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12451,
                        "name": "_offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12380,
                        "src": "15556:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12452,
                        "name": "_len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12376,
                        "src": "15565:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12449,
                        "name": "_vout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12337,
                        "src": "15544:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "15544:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15544:26:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12343,
                  "id": 12454,
                  "nodeType": "Return",
                  "src": "15537:33:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the output at a given index in the TxOuts vector\n @dev             Iterates over the vout. If you need to extract multiple, write a custom function\n @param _vout     The _vout to extract from\n @param _index    The 0-indexed location of the output to extract\n @return          The specified output",
            "id": 12456,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractOutputAtIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12337,
                  "name": "_vout",
                  "nodeType": "VariableDeclaration",
                  "scope": 12456,
                  "src": "14620:18:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12336,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14620:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12339,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "scope": 12456,
                  "src": "14640:14:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12338,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14640:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14619:36:48"
            },
            "returnParameters": {
              "id": 12343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12342,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12456,
                  "src": "14679:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12341,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14679:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14678:14:48"
            },
            "scope": 13216,
            "src": "14590:987:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12469,
              "nodeType": "Block",
              "src": "15895:43:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15926:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "38",
                        "id": 12466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15929:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12463,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12458,
                        "src": "15912:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "15912:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15912:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12462,
                  "id": 12468,
                  "nodeType": "Return",
                  "src": "15905:26:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the value bytes from the output in a tx\n @dev             Value is an 8-byte little-endian number\n @param _output   The output\n @return          The output value as LE bytes",
            "id": 12470,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractValueLE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12458,
                  "name": "_output",
                  "nodeType": "VariableDeclaration",
                  "scope": 12470,
                  "src": "15836:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12457,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15836:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15835:22:48"
            },
            "returnParameters": {
              "id": 12462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12461,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12470,
                  "src": "15881:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12460,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15881:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15880:14:48"
            },
            "scope": 13216,
            "src": "15812:126:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12495,
              "nodeType": "Block",
              "src": "16230:171:48",
              "statements": [
                {
                  "assignments": [
                    12478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12478,
                      "name": "_leValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 12495,
                      "src": "16240:21:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12477,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16240:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12482,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12480,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12472,
                        "src": "16279:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12479,
                      "name": "extractValueLE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12470,
                      "src": "16264:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 12481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16264:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16240:47:48"
                },
                {
                  "assignments": [
                    12484
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12484,
                      "name": "_beValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 12495,
                      "src": "16297:21:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12483,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16297:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12488,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12486,
                        "name": "_leValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12478,
                        "src": "16339:8:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12485,
                      "name": "reverseEndianness",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11643,
                      "src": "16321:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 12487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16321:27:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16297:51:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12491,
                            "name": "_beValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12484,
                            "src": "16384:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12490,
                          "name": "bytesToUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11790,
                          "src": "16372:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory) pure returns (uint256)"
                          }
                        },
                        "id": 12492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16372:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "16365:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint64_$",
                        "typeString": "type(uint64)"
                      },
                      "typeName": "uint64"
                    },
                    "id": 12493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16365:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 12476,
                  "id": 12494,
                  "nodeType": "Return",
                  "src": "16358:36:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the value from the output in a tx\n @dev             Value is an 8-byte little-endian number\n @param _output   The output\n @return          The output value",
            "id": 12496,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12472,
                  "name": "_output",
                  "nodeType": "VariableDeclaration",
                  "scope": 12496,
                  "src": "16177:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12471,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "16177:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16176:22:48"
            },
            "returnParameters": {
              "id": 12476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12475,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12496,
                  "src": "16222:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 12474,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "16222:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16221:8:48"
            },
            "scope": 13216,
            "src": "16155:246:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12532,
              "nodeType": "Block",
              "src": "16762:220:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 12511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "39",
                          "id": 12505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16799:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_9_by_1",
                            "typeString": "int_const 9"
                          },
                          "value": "9"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16802:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_9_by_1",
                            "typeString": "int_const 9"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12503,
                          "name": "_output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12498,
                          "src": "16776:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak256Slice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13431,
                        "src": "16776:22:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                        }
                      },
                      "id": 12507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16776:28:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "6a",
                          "id": 12509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16818:7:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b31d742db54d6961c6b346af2c9c4c495eb8aff2ebf6b3699e052d1cef5cf50b",
                            "typeString": "literal_string \"j\""
                          },
                          "value": "j"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_b31d742db54d6961c6b346af2c9c4c495eb8aff2ebf6b3699e052d1cef5cf50b",
                            "typeString": "literal_string \"j\""
                          }
                        ],
                        "id": 12508,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18354,
                        "src": "16808:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 12510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16808:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "16776:50:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12515,
                  "nodeType": "IfStatement",
                  "src": "16772:93:48",
                  "trueBody": {
                    "id": 12514,
                    "nodeType": "Block",
                    "src": "16828:37:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "",
                          "id": 12512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16849:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        },
                        "functionReturnParameters": 12502,
                        "id": 12513,
                        "nodeType": "Return",
                        "src": "16842:12:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12517,
                      "name": "_dataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12532,
                      "src": "16874:21:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12516,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16874:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12523,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 12520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16912:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 12521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16916:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12518,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12498,
                        "src": "16898:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "16898:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16898:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16874:44:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3131",
                        "id": 12526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16949:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_11_by_1",
                          "typeString": "int_const 11"
                        },
                        "value": "11"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12528,
                            "name": "_dataLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12517,
                            "src": "16965:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12527,
                          "name": "bytesToUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11790,
                          "src": "16953:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory) pure returns (uint256)"
                          }
                        },
                        "id": 12529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16953:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_11_by_1",
                          "typeString": "int_const 11"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12524,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12498,
                        "src": "16935:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12525,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "16935:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16935:40:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12502,
                  "id": 12531,
                  "nodeType": "Return",
                  "src": "16928:47:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the data from an op return output\n @dev             Returns hex\"\" if no data or not an op return\n @param _output   The output\n @return          Any data contained in the opreturn output, null if not an op return",
            "id": 12533,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractOpReturnData",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12498,
                  "name": "_output",
                  "nodeType": "VariableDeclaration",
                  "scope": 12533,
                  "src": "16703:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12497,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "16703:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16702:22:48"
            },
            "returnParameters": {
              "id": 12502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12501,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12533,
                  "src": "16748:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12500,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "16748:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16747:14:48"
            },
            "scope": 13216,
            "src": "16674:308:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12681,
              "nodeType": "Block",
              "src": "17337:1894:48",
              "statements": [
                {
                  "assignments": [
                    12541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12541,
                      "name": "_scriptLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12681,
                      "src": "17347:16:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 12540,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "17347:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12547,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12543,
                          "name": "_output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12535,
                          "src": "17372:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12545,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 12544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17380:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "17372:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      ],
                      "id": 12542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "17366:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 12546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17366:17:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17347:36:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 12550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12548,
                        "name": "_scriptLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12541,
                        "src": "17631:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "39",
                        "id": 12549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17644:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_9_by_1",
                          "typeString": "int_const 9"
                        },
                        "value": "9"
                      },
                      "src": "17631:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12551,
                        "name": "_output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12535,
                        "src": "17649:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17649:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17631:32:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12557,
                  "nodeType": "IfStatement",
                  "src": "17627:75:48",
                  "trueBody": {
                    "id": 12556,
                    "nodeType": "Block",
                    "src": "17665:37:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "",
                          "id": 12554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17686:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        },
                        "functionReturnParameters": 12539,
                        "id": 12555,
                        "nodeType": "Return",
                        "src": "17679:12:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 12564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12559,
                            "name": "_output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12535,
                            "src": "17722:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 12561,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 12560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17730:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17722:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 12558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "17716:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 12562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17716:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12563,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17737:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17716:22:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12677,
                    "nodeType": "Block",
                    "src": "18224:901:48",
                    "statements": [
                      {
                        "assignments": [
                          12606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12606,
                            "name": "_tag",
                            "nodeType": "VariableDeclaration",
                            "scope": 12677,
                            "src": "18238:12:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12605,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "18238:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12612,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "38",
                              "id": 12609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18276:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 12610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18279:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12607,
                              "name": "_output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12535,
                              "src": "18253:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "keccak256Slice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13431,
                            "src": "18253:22:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 12611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18253:28:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18238:43:48"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 12617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12613,
                            "name": "_tag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12606,
                            "src": "18320:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1976a9",
                                "id": 12615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18338:11:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_e1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6",
                                  "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"
                                },
                                "value": null
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_e1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6",
                                  "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"
                                }
                              ],
                              "id": 12614,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18354,
                              "src": "18328:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 12616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18328:22:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "18320:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 12653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12649,
                              "name": "_tag",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12606,
                              "src": "18771:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "17a914",
                                  "id": 12651,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18789:11:48",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7",
                                    "typeString": "literal_string (contains invalid UTF-8 sequence at position 1)"
                                  },
                                  "value": null
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7",
                                    "typeString": "literal_string (contains invalid UTF-8 sequence at position 1)"
                                  }
                                ],
                                "id": 12650,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18354,
                                "src": "18779:9:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 12652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18779:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "18771:30:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 12675,
                          "nodeType": "IfStatement",
                          "src": "18767:348:48",
                          "trueBody": {
                            "id": 12674,
                            "nodeType": "Block",
                            "src": "18803:312:48",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 12663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 12655,
                                          "name": "_output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12535,
                                          "src": "18964:7:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 12660,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 12659,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 12656,
                                              "name": "_output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12535,
                                              "src": "18972:7:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 12657,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "18972:14:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 12658,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "18989:1:48",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "18972:18:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "18964:27:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 12654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "18958:5:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": "uint8"
                                    },
                                    "id": 12661,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18958:34:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783837",
                                    "id": 12662,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18996:4:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_135_by_1",
                                      "typeString": "int_const 135"
                                    },
                                    "value": "0x87"
                                  },
                                  "src": "18958:42:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 12667,
                                "nodeType": "IfStatement",
                                "src": "18954:101:48",
                                "trueBody": {
                                  "id": 12666,
                                  "nodeType": "Block",
                                  "src": "19002:53:48",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "",
                                        "id": 12664,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19031:5:48",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                          "typeString": "literal_string \"\""
                                        },
                                        "value": ""
                                      },
                                      "functionReturnParameters": 12539,
                                      "id": 12665,
                                      "nodeType": "Return",
                                      "src": "19024:12:48"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3131",
                                      "id": 12670,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19093:2:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_11_by_1",
                                        "typeString": "int_const 11"
                                      },
                                      "value": "11"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3230",
                                      "id": 12671,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19097:2:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_20_by_1",
                                        "typeString": "int_const 20"
                                      },
                                      "value": "20"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_11_by_1",
                                        "typeString": "int_const 11"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_20_by_1",
                                        "typeString": "int_const 20"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12668,
                                      "name": "_output",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12535,
                                      "src": "19079:7:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 12669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "slice",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13281,
                                    "src": "19079:13:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 12672,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19079:21:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "functionReturnParameters": 12539,
                                "id": 12673,
                                "nodeType": "Return",
                                "src": "19072:28:48"
                              }
                            ]
                          }
                        },
                        "id": 12676,
                        "nodeType": "IfStatement",
                        "src": "18316:799:48",
                        "trueBody": {
                          "id": 12648,
                          "nodeType": "Block",
                          "src": "18352:409:48",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 12637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 12624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 12619,
                                          "name": "_output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12535,
                                          "src": "18514:7:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 12621,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3131",
                                          "id": 12620,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18522:2:48",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_11_by_1",
                                            "typeString": "int_const 11"
                                          },
                                          "value": "11"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "18514:11:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 12618,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "18508:5:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": "uint8"
                                    },
                                    "id": 12622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18508:18:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783134",
                                    "id": 12623,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18530:4:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "0x14"
                                  },
                                  "src": "18508:26:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "id": 12636,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 12630,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 12627,
                                            "name": "_output",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12535,
                                            "src": "18581:7:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 12628,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "18581:14:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 12629,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18598:1:48",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "18581:18:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 12631,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18601:1:48",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12625,
                                        "name": "_output",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12535,
                                        "src": "18558:7:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 12626,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "keccak256Slice",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13431,
                                      "src": "18558:22:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 12632,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18558:45:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "88ac",
                                        "id": 12634,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18617:9:48",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d",
                                          "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                        },
                                        "value": null
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d",
                                          "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                        }
                                      ],
                                      "id": 12633,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18354,
                                      "src": "18607:9:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 12635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18607:20:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "src": "18558:69:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "18508:119:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 12641,
                              "nodeType": "IfStatement",
                              "src": "18504:178:48",
                              "trueBody": {
                                "id": 12640,
                                "nodeType": "Block",
                                "src": "18629:53:48",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "hexValue": "",
                                      "id": 12638,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18658:5:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                        "typeString": "literal_string \"\""
                                      },
                                      "value": ""
                                    },
                                    "functionReturnParameters": 12539,
                                    "id": 12639,
                                    "nodeType": "Return",
                                    "src": "18651:12:48"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3132",
                                    "id": 12644,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18720:2:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3230",
                                    "id": 12645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18724:2:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12642,
                                    "name": "_output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12535,
                                    "src": "18706:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 12643,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "slice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13281,
                                  "src": "18706:13:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                  }
                                },
                                "id": 12646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18706:21:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 12539,
                              "id": 12647,
                              "nodeType": "Return",
                              "src": "18699:28:48"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12678,
                  "nodeType": "IfStatement",
                  "src": "17712:1413:48",
                  "trueBody": {
                    "id": 12604,
                    "nodeType": "Block",
                    "src": "17740:478:48",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 12567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12565,
                            "name": "_scriptLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12541,
                            "src": "17758:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 12566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17771:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "17758:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12571,
                        "nodeType": "IfStatement",
                        "src": "17754:65:48",
                        "trueBody": {
                          "id": 12570,
                          "nodeType": "Block",
                          "src": "17774:45:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 12568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17799:5:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              "functionReturnParameters": 12539,
                              "id": 12569,
                              "nodeType": "Return",
                              "src": "17792:12:48"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12573
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12573,
                            "name": "_payloadLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 12604,
                            "src": "17832:19:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12572,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17832:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12579,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12575,
                                "name": "_output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12535,
                                "src": "17860:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 12577,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 12576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17868:2:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17860:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 12574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17854:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": "uint8"
                          },
                          "id": 12578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17854:18:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17832:40:48"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12580,
                              "name": "_payloadLen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12573,
                              "src": "18033:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 12583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12581,
                                "name": "_scriptLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12541,
                                "src": "18048:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 12582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18061:1:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "18048:14:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "18033:29:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 12591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 12587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 12585,
                                    "name": "_payloadLen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12573,
                                    "src": "18067:11:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783230",
                                    "id": 12586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18082:4:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "0x20"
                                  },
                                  "src": "18067:19:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 12590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 12588,
                                    "name": "_payloadLen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12573,
                                    "src": "18090:11:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783134",
                                    "id": 12589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18105:4:48",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "0x14"
                                  },
                                  "src": "18090:19:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "18067:42:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 12592,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "18066:44:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18033:77:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12597,
                        "nodeType": "IfStatement",
                        "src": "18029:128:48",
                        "trueBody": {
                          "id": 12596,
                          "nodeType": "Block",
                          "src": "18112:45:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 12594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18137:5:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              "functionReturnParameters": 12539,
                              "id": 12595,
                              "nodeType": "Return",
                              "src": "18130:12:48"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3131",
                              "id": 12600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18191:2:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_11_by_1",
                                "typeString": "int_const 11"
                              },
                              "value": "11"
                            },
                            {
                              "argumentTypes": null,
                              "id": 12601,
                              "name": "_payloadLen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12573,
                              "src": "18195:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_11_by_1",
                                "typeString": "int_const 11"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12598,
                              "name": "_output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12535,
                              "src": "18177:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "slice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13281,
                            "src": "18177:13:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 12602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18177:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 12539,
                        "id": 12603,
                        "nodeType": "Return",
                        "src": "18170:37:48"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "",
                    "id": 12679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "19141:5:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 12539,
                  "id": 12680,
                  "nodeType": "Return",
                  "src": "19134:12:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the hash from the output script\n @dev             Determines type by the length prefix and validates format\n @param _output   The output\n @return          The hash committed to by the pk_script, or null for errors",
            "id": 12682,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12535,
                  "name": "_output",
                  "nodeType": "VariableDeclaration",
                  "scope": 12682,
                  "src": "17278:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12534,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "17278:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17277:22:48"
            },
            "returnParameters": {
              "id": 12539,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12538,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12682,
                  "src": "17323:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12537,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "17323:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17322:14:48"
            },
            "scope": 13216,
            "src": "17257:1974:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12773,
              "nodeType": "Block",
              "src": "19642:989:48",
              "statements": [
                {
                  "assignments": [
                    12690
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12690,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12773,
                      "src": "19652:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12689,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19652:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12691,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19652:22:48"
                },
                {
                  "assignments": [
                    12693
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12693,
                      "name": "_nIns",
                      "nodeType": "VariableDeclaration",
                      "scope": 12773,
                      "src": "19684:13:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12692,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19684:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12694,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19684:13:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12695,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12690,
                          "src": "19709:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12696,
                          "name": "_nIns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12693,
                          "src": "19725:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12697,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "19708:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12699,
                          "name": "_vin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12684,
                          "src": "19746:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12698,
                        "name": "parseVarInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "19734:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12700,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19734:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "19708:43:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12702,
                  "nodeType": "ExpressionStatement",
                  "src": "19708:43:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12705,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12703,
                        "name": "_nIns",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12693,
                        "src": "19830:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19839:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "19830:10:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12706,
                        "name": "_varIntDataLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12690,
                        "src": "19844:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 12707,
                        "name": "ERR_BAD_ARG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11499,
                        "src": "19862:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "19844:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19830:43:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12713,
                  "nodeType": "IfStatement",
                  "src": "19826:86:48",
                  "trueBody": {
                    "id": 12712,
                    "nodeType": "Block",
                    "src": "19875:37:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 12710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19896:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 12688,
                        "id": 12711,
                        "nodeType": "Return",
                        "src": "19889:12:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12715,
                      "name": "_offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 12773,
                      "src": "19922:15:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12714,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19922:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12719,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 12716,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19940:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12717,
                      "name": "_varIntDataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12690,
                      "src": "19944:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19940:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19922:36:48"
                },
                {
                  "body": {
                    "id": 12766,
                    "nodeType": "Block",
                    "src": "20005:523:48",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12730,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12715,
                            "src": "20081:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12731,
                              "name": "_vin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12684,
                              "src": "20092:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "20092:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20081:22:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12737,
                        "nodeType": "IfStatement",
                        "src": "20077:73:48",
                        "trueBody": {
                          "id": 12736,
                          "nodeType": "Block",
                          "src": "20105:45:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 12734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20130:5:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 12688,
                              "id": 12735,
                              "nodeType": "Return",
                              "src": "20123:12:48"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12739
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12739,
                            "name": "_next",
                            "nodeType": "VariableDeclaration",
                            "scope": 12766,
                            "src": "20225:18:48",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 12738,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "20225:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12748,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12742,
                              "name": "_offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12715,
                              "src": "20257:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12743,
                                  "name": "_vin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12684,
                                  "src": "20266:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 12744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20266:11:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12745,
                                "name": "_offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12715,
                                "src": "20280:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "20266:21:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12740,
                              "name": "_vin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12684,
                              "src": "20246:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "slice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13281,
                            "src": "20246:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 12747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20246:42:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20225:63:48"
                      },
                      {
                        "assignments": [
                          12750
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12750,
                            "name": "_nextLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 12766,
                            "src": "20302:16:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12749,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20302:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12754,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12752,
                              "name": "_next",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12739,
                              "src": "20342:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12751,
                            "name": "determineInputLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12089,
                            "src": "20321:20:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory) pure returns (uint256)"
                            }
                          },
                          "id": 12753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20321:27:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20302:46:48"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12755,
                            "name": "_nextLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12750,
                            "src": "20366:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12756,
                            "name": "ERR_BAD_ARG",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11499,
                            "src": "20378:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20366:23:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12761,
                        "nodeType": "IfStatement",
                        "src": "20362:74:48",
                        "trueBody": {
                          "id": 12760,
                          "nodeType": "Block",
                          "src": "20391:45:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 12758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20416:5:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 12688,
                              "id": 12759,
                              "nodeType": "Return",
                              "src": "20409:12:48"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12762,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12715,
                            "src": "20498:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12763,
                            "name": "_nextLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12750,
                            "src": "20509:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20498:19:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12765,
                        "nodeType": "ExpressionStatement",
                        "src": "20498:19:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12724,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12721,
                      "src": "19989:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12725,
                      "name": "_nIns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12693,
                      "src": "19993:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19989:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12767,
                  "initializationExpression": {
                    "assignments": [
                      12721
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12721,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12767,
                        "src": "19974:9:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19974:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12723,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19986:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19974:13:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20000:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12727,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12721,
                        "src": "20000:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12729,
                    "nodeType": "ExpressionStatement",
                    "src": "20000:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "19969:559:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12768,
                      "name": "_offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12715,
                      "src": "20602:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12769,
                        "name": "_vin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12684,
                        "src": "20613:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12770,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20613:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20602:22:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12688,
                  "id": 12772,
                  "nodeType": "Return",
                  "src": "20595:29:48"
                }
              ]
            },
            "documentation": "@notice      Checks that the vin passed up is properly formatted\n @dev         Consider a vin with a valid vout in its scriptsig\n @param _vin  Raw bytes length-prefixed input vector\n @return      True if it represents a validly formatted vin",
            "id": 12774,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validateVin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12685,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12684,
                  "name": "_vin",
                  "nodeType": "VariableDeclaration",
                  "scope": 12774,
                  "src": "19594:17:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12683,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19594:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19593:19:48"
            },
            "returnParameters": {
              "id": 12688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12687,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12774,
                  "src": "19636:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12686,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19636:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19635:6:48"
            },
            "scope": 13216,
            "src": "19573:1058:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12865,
              "nodeType": "Block",
              "src": "20974:1001:48",
              "statements": [
                {
                  "assignments": [
                    12782
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12782,
                      "name": "_varIntDataLen",
                      "nodeType": "VariableDeclaration",
                      "scope": 12865,
                      "src": "20984:22:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12781,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20984:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12783,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20984:22:48"
                },
                {
                  "assignments": [
                    12785
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12785,
                      "name": "_nOuts",
                      "nodeType": "VariableDeclaration",
                      "scope": 12865,
                      "src": "21016:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12784,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21016:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12786,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21016:14:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 12787,
                          "name": "_varIntDataLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12782,
                          "src": "21042:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12788,
                          "name": "_nOuts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12785,
                          "src": "21058:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12789,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "21041:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12791,
                          "name": "_vout",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12776,
                          "src": "21080:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12790,
                        "name": "parseVarInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "21068:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes memory) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 12792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21068:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "21041:45:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12794,
                  "nodeType": "ExpressionStatement",
                  "src": "21041:45:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12797,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12795,
                        "name": "_nOuts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12785,
                        "src": "21166:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "21176:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "21166:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12798,
                        "name": "_varIntDataLen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12782,
                        "src": "21181:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 12799,
                        "name": "ERR_BAD_ARG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11499,
                        "src": "21199:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "21181:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "21166:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12805,
                  "nodeType": "IfStatement",
                  "src": "21162:87:48",
                  "trueBody": {
                    "id": 12804,
                    "nodeType": "Block",
                    "src": "21212:37:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 12802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21233:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 12780,
                        "id": 12803,
                        "nodeType": "Return",
                        "src": "21226:12:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12807,
                      "name": "_offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 12865,
                      "src": "21259:15:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12806,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21259:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12811,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12810,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 12808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21277:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12809,
                      "name": "_varIntDataLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12782,
                      "src": "21281:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21277:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21259:36:48"
                },
                {
                  "body": {
                    "id": 12858,
                    "nodeType": "Block",
                    "src": "21343:528:48",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12822,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12807,
                            "src": "21419:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12823,
                              "name": "_vout",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12776,
                              "src": "21430:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "21430:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21419:23:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12829,
                        "nodeType": "IfStatement",
                        "src": "21415:74:48",
                        "trueBody": {
                          "id": 12828,
                          "nodeType": "Block",
                          "src": "21444:45:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 12826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21469:5:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 12780,
                              "id": 12827,
                              "nodeType": "Return",
                              "src": "21462:12:48"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12831
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12831,
                            "name": "_next",
                            "nodeType": "VariableDeclaration",
                            "scope": 12858,
                            "src": "21613:18:48",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 12830,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "21613:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12840,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12834,
                              "name": "_offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12807,
                              "src": "21646:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12835,
                                  "name": "_vout",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12776,
                                  "src": "21655:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 12836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "21655:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12837,
                                "name": "_offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12807,
                                "src": "21670:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21655:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12832,
                              "name": "_vout",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12776,
                              "src": "21634:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "slice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13281,
                            "src": "21634:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 12839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21634:44:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21613:65:48"
                      },
                      {
                        "assignments": [
                          12842
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12842,
                            "name": "_nextLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 12858,
                            "src": "21692:16:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12841,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21692:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12846,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12844,
                              "name": "_next",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12831,
                              "src": "21733:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12843,
                            "name": "determineOutputLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12335,
                            "src": "21711:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory) pure returns (uint256)"
                            }
                          },
                          "id": 12845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21711:28:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21692:47:48"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12847,
                            "name": "_nextLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12842,
                            "src": "21757:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12848,
                            "name": "ERR_BAD_ARG",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11499,
                            "src": "21769:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21757:23:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12853,
                        "nodeType": "IfStatement",
                        "src": "21753:74:48",
                        "trueBody": {
                          "id": 12852,
                          "nodeType": "Block",
                          "src": "21782:45:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 12850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21807:5:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 12780,
                              "id": 12851,
                              "nodeType": "Return",
                              "src": "21800:12:48"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12854,
                            "name": "_offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12807,
                            "src": "21841:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12855,
                            "name": "_nextLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12842,
                            "src": "21852:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21841:19:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12857,
                        "nodeType": "ExpressionStatement",
                        "src": "21841:19:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12816,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12813,
                      "src": "21326:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12817,
                      "name": "_nOuts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12785,
                      "src": "21330:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21326:10:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12859,
                  "initializationExpression": {
                    "assignments": [
                      12813
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12813,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12859,
                        "src": "21311:9:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12812,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21311:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12815,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12814,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21323:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21311:13:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12820,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21338:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12819,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12813,
                        "src": "21338:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12821,
                    "nodeType": "ExpressionStatement",
                    "src": "21338:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "21306:565:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12860,
                      "name": "_offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12807,
                      "src": "21945:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12861,
                        "name": "_vout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12776,
                        "src": "21956:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21956:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21945:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12780,
                  "id": 12864,
                  "nodeType": "Return",
                  "src": "21938:30:48"
                }
              ]
            },
            "documentation": "@notice      Checks that the vout passed up is properly formatted\n @dev         Consider a vout with a valid scriptpubkey\n @param _vout Raw bytes length-prefixed output vector\n @return      True if it represents a validly formatted vout",
            "id": 12866,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validateVout",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12776,
                  "name": "_vout",
                  "nodeType": "VariableDeclaration",
                  "scope": 12866,
                  "src": "20925:18:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12775,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "20925:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20924:20:48"
            },
            "returnParameters": {
              "id": 12780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12779,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12866,
                  "src": "20968:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12778,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20968:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20967:6:48"
            },
            "scope": 13216,
            "src": "20903:1072:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12879,
              "nodeType": "Block",
              "src": "22397:45:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3336",
                        "id": 12875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22428:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        "value": "36"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 12876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22432:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_36_by_1",
                          "typeString": "int_const 36"
                        },
                        {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12873,
                        "name": "_header",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12868,
                        "src": "22414:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "22414:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22414:21:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12872,
                  "id": 12878,
                  "nodeType": "Return",
                  "src": "22407:28:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the transaction merkle root from a block header\n @dev             Use verifyHash256Merkle to verify proofs with this root\n @param _header   The header\n @return          The merkle root (little-endian)",
            "id": 12880,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractMerkleRootLE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12868,
                  "name": "_header",
                  "nodeType": "VariableDeclaration",
                  "scope": 12880,
                  "src": "22338:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12867,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "22338:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22337:22:48"
            },
            "returnParameters": {
              "id": 12872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12871,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12880,
                  "src": "22383:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12870,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "22383:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22382:14:48"
            },
            "scope": 13216,
            "src": "22309:133:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12924,
              "nodeType": "Block",
              "src": "22773:239:48",
              "statements": [
                {
                  "assignments": [
                    12888
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12888,
                      "name": "_m",
                      "nodeType": "VariableDeclaration",
                      "scope": 12924,
                      "src": "22783:15:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12887,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "22783:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12894,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3732",
                        "id": 12891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22815:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_72_by_1",
                          "typeString": "int_const 72"
                        },
                        "value": "72"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 12892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22819:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_72_by_1",
                          "typeString": "int_const 72"
                        },
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12889,
                        "name": "_header",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12882,
                        "src": "22801:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "22801:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22801:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22783:38:48"
                },
                {
                  "assignments": [
                    12896
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12896,
                      "name": "_e",
                      "nodeType": "VariableDeclaration",
                      "scope": 12924,
                      "src": "22831:8:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 12895,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "22831:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12902,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12898,
                          "name": "_header",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12882,
                          "src": "22848:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12900,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "3735",
                          "id": 12899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22856:2:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_75_by_1",
                            "typeString": "int_const 75"
                          },
                          "value": "75"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "22848:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      ],
                      "id": 12897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "22842:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 12901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22842:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22831:29:48"
                },
                {
                  "assignments": [
                    12904
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12904,
                      "name": "_mantissa",
                      "nodeType": "VariableDeclaration",
                      "scope": 12924,
                      "src": "22870:17:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12903,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22870:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12910,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12907,
                            "name": "_m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12888,
                            "src": "22920:2:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12906,
                          "name": "reverseEndianness",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11643,
                          "src": "22902:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 12908,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22902:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12905,
                      "name": "bytesToUint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11790,
                      "src": "22890:11:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory) pure returns (uint256)"
                      }
                    },
                    "id": 12909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22890:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22870:54:48"
                },
                {
                  "assignments": [
                    12912
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12912,
                      "name": "_exponent",
                      "nodeType": "VariableDeclaration",
                      "scope": 12924,
                      "src": "22934:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12911,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "22934:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12916,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 12915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12913,
                      "name": "_e",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12896,
                      "src": "22951:2:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 12914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22956:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "22951:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22934:23:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12917,
                      "name": "_mantissa",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12904,
                      "src": "22975:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "323536",
                            "id": 12918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22988:3:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_256_by_1",
                              "typeString": "int_const 256"
                            },
                            "value": "256"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12919,
                            "name": "_exponent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12912,
                            "src": "22995:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22988:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 12921,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "22987:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22975:30:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12886,
                  "id": 12923,
                  "nodeType": "Return",
                  "src": "22968:37:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the target from a block header\n @dev             Target is a 256-bit number encoded as a 3-byte mantissa and 1-byte exponent\n @param _header   The header\n @return          The target threshold",
            "id": 12925,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractTarget",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12883,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12882,
                  "name": "_header",
                  "nodeType": "VariableDeclaration",
                  "scope": 12925,
                  "src": "22719:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12881,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "22719:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22718:22:48"
            },
            "returnParameters": {
              "id": 12886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12885,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12925,
                  "src": "22764:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12884,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22764:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22763:9:48"
            },
            "scope": 13216,
            "src": "22696:316:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12937,
              "nodeType": "Block",
              "src": "23470:100:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12934,
                        "name": "_target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12927,
                        "src": "23555:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12932,
                        "name": "DIFF1_TARGET",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11482,
                        "src": "23538:12:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13874,
                      "src": "23538:16:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 12935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23538:25:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12931,
                  "id": 12936,
                  "nodeType": "Return",
                  "src": "23531:32:48"
                }
              ]
            },
            "documentation": "@notice          Calculate difficulty from the difficulty 1 target and current target\n @dev             Difficulty 1 is 0x1d00ffff on mainnet and testnet\n @dev             Difficulty 1 is a 256-bit number encoded as a 3-byte mantissa and 1-byte exponent\n @param _target   The current target\n @return          The block difficulty (bdiff)",
            "id": 12938,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "calculateDifficulty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12927,
                  "name": "_target",
                  "nodeType": "VariableDeclaration",
                  "scope": 12938,
                  "src": "23421:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23421:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23420:17:48"
            },
            "returnParameters": {
              "id": 12931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12930,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12938,
                  "src": "23461:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12929,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23461:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23460:9:48"
            },
            "scope": 13216,
            "src": "23392:178:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12951,
              "nodeType": "Block",
              "src": "23916:44:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 12947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23947:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 12948,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23950:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12945,
                        "name": "_header",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12940,
                        "src": "23933:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "23933:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12949,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23933:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12944,
                  "id": 12950,
                  "nodeType": "Return",
                  "src": "23926:27:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the previous block's hash from a block header\n @dev             Block headers do NOT include block number :(\n @param _header   The header\n @return          The previous block's hash (little-endian)",
            "id": 12952,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractPrevBlockLE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12940,
                  "name": "_header",
                  "nodeType": "VariableDeclaration",
                  "scope": 12952,
                  "src": "23857:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12939,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "23857:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23856:22:48"
            },
            "returnParameters": {
              "id": 12944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12943,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12952,
                  "src": "23902:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12942,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "23902:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23901:14:48"
            },
            "scope": 13216,
            "src": "23829:131:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12965,
              "nodeType": "Block",
              "src": "24269:44:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3638",
                        "id": 12961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24300:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_68_by_1",
                          "typeString": "int_const 68"
                        },
                        "value": "68"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 12962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24304:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_68_by_1",
                          "typeString": "int_const 68"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12959,
                        "name": "_header",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12954,
                        "src": "24286:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 12960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13281,
                      "src": "24286:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 12963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24286:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 12958,
                  "id": 12964,
                  "nodeType": "Return",
                  "src": "24279:27:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the timestamp from a block header\n @dev             Time is not 100% reliable\n @param _header   The header\n @return          The timestamp (little-endian bytes)",
            "id": 12966,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractTimestampLE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12954,
                  "name": "_header",
                  "nodeType": "VariableDeclaration",
                  "scope": 12966,
                  "src": "24210:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12953,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "24210:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24209:22:48"
            },
            "returnParameters": {
              "id": 12958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12957,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12966,
                  "src": "24255:12:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12956,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "24255:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24254:14:48"
            },
            "scope": 13216,
            "src": "24182:131:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12983,
              "nodeType": "Block",
              "src": "24599:91:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12977,
                                    "name": "_header",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12968,
                                    "src": "24672:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 12976,
                                  "name": "extractTimestampLE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12966,
                                  "src": "24653:18:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 12978,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24653:27:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 12975,
                              "name": "reverseEndianness",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11643,
                              "src": "24635:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) pure returns (bytes memory)"
                              }
                            },
                            "id": 12979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24635:46:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12974,
                          "name": "bytesToUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11790,
                          "src": "24623:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory) pure returns (uint256)"
                          }
                        },
                        "id": 12980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24623:59:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12973,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "24616:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint32_$",
                        "typeString": "type(uint32)"
                      },
                      "typeName": "uint32"
                    },
                    "id": 12981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24616:67:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 12972,
                  "id": 12982,
                  "nodeType": "Return",
                  "src": "24609:74:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the timestamp from a block header\n @dev             Time is not 100% reliable\n @param _header   The header\n @return          The timestamp (uint)",
            "id": 12984,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12968,
                  "name": "_header",
                  "nodeType": "VariableDeclaration",
                  "scope": 12984,
                  "src": "24546:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12967,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "24546:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24545:22:48"
            },
            "returnParameters": {
              "id": 12972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12971,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12984,
                  "src": "24591:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 12970,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24591:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24590:8:48"
            },
            "scope": 13216,
            "src": "24520:170:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12997,
              "nodeType": "Block",
              "src": "24995:67:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12993,
                            "name": "_header",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12986,
                            "src": "25046:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 12992,
                          "name": "extractTarget",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12925,
                          "src": "25032:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory) pure returns (uint256)"
                          }
                        },
                        "id": 12994,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25032:22:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12991,
                      "name": "calculateDifficulty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12938,
                      "src": "25012:19:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint256)"
                      }
                    },
                    "id": 12995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25012:43:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12990,
                  "id": 12996,
                  "nodeType": "Return",
                  "src": "25005:50:48"
                }
              ]
            },
            "documentation": "@notice          Extracts the expected difficulty from a block header\n @dev             Does NOT verify the work\n @param _header   The header\n @return          The difficulty as an integer",
            "id": 12998,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "extractDifficulty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12986,
                  "name": "_header",
                  "nodeType": "VariableDeclaration",
                  "scope": 12998,
                  "src": "24941:20:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12985,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "24941:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24940:22:48"
            },
            "returnParameters": {
              "id": 12990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12989,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12998,
                  "src": "24986:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12988,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24986:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24985:9:48"
            },
            "scope": 13216,
            "src": "24914:148:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13015,
              "nodeType": "Block",
              "src": "25392:57:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13010,
                            "name": "_a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13000,
                            "src": "25434:2:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13011,
                            "name": "_b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13002,
                            "src": "25438:2:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13008,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18347,
                            "src": "25417:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "25417:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 13012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25417:24:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13007,
                      "name": "hash256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11851,
                      "src": "25409:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 13013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25409:33:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13006,
                  "id": 13014,
                  "nodeType": "Return",
                  "src": "25402:40:48"
                }
              ]
            },
            "documentation": "@notice          Concatenates and hashes two inputs for merkle proving\n @param _a        The first hash\n @param _b        The second hash\n @return          The double-sha256 of the concatenated hashes",
            "id": 13016,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_hash256MerkleStep",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13000,
                  "name": "_a",
                  "nodeType": "VariableDeclaration",
                  "scope": 13016,
                  "src": "25326:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12999,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "25326:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13002,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 13016,
                  "src": "25343:15:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13001,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "25343:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25325:34:48"
            },
            "returnParameters": {
              "id": 13006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13005,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13016,
                  "src": "25383:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13004,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "25383:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25382:9:48"
            },
            "scope": 13216,
            "src": "25298:151:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13147,
              "nodeType": "Block",
              "src": "25862:917:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13028,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13025,
                          "name": "_proof",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13018,
                          "src": "25916:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 13026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "25916:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "%",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 13027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25932:2:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "25916:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13029,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25938:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "25916:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13034,
                  "nodeType": "IfStatement",
                  "src": "25912:66:48",
                  "trueBody": {
                    "id": 13033,
                    "nodeType": "Block",
                    "src": "25941:37:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25962:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13024,
                        "id": 13032,
                        "nodeType": "Return",
                        "src": "25955:12:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13035,
                        "name": "_proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13018,
                        "src": "26041:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 13036,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "26041:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3332",
                      "id": 13037,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26058:2:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "26041:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13042,
                  "nodeType": "IfStatement",
                  "src": "26037:61:48",
                  "trueBody": {
                    "id": 13041,
                    "nodeType": "Block",
                    "src": "26062:36:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 13039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26083:4:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 13024,
                        "id": 13040,
                        "nodeType": "Return",
                        "src": "26076:11:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13043,
                        "name": "_proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13018,
                        "src": "26142:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 13044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "26142:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3634",
                      "id": 13045,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26159:2:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_64_by_1",
                        "typeString": "int_const 64"
                      },
                      "value": "64"
                    },
                    "src": "26142:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13050,
                  "nodeType": "IfStatement",
                  "src": "26138:62:48",
                  "trueBody": {
                    "id": 13049,
                    "nodeType": "Block",
                    "src": "26163:37:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26184:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13024,
                        "id": 13048,
                        "nodeType": "Return",
                        "src": "26177:12:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    13052
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13052,
                      "name": "_idx",
                      "nodeType": "VariableDeclaration",
                      "scope": 13147,
                      "src": "26210:9:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13051,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "26210:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13054,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 13053,
                    "name": "_index",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13020,
                    "src": "26222:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26210:18:48"
                },
                {
                  "assignments": [
                    13056
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13056,
                      "name": "_root",
                      "nodeType": "VariableDeclaration",
                      "scope": 13147,
                      "src": "26238:13:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 13055,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "26238:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13067,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13059,
                                "name": "_proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13018,
                                "src": "26267:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 13060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "26267:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3332",
                              "id": 13061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26283:2:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "26267:18:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 13063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26287:2:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13057,
                            "name": "_proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13018,
                            "src": "26254:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 13058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "slice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13281,
                          "src": "26254:12:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                          }
                        },
                        "id": 13064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26254:36:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 13065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toBytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13400,
                      "src": "26254:46:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 13066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26254:48:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26238:64:48"
                },
                {
                  "assignments": [
                    13069
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13069,
                      "name": "_current",
                      "nodeType": "VariableDeclaration",
                      "scope": 13147,
                      "src": "26312:16:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 13068,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "26312:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13077,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26344:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 13073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26347:2:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13070,
                            "name": "_proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13018,
                            "src": "26331:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 13071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "slice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13281,
                          "src": "26331:12:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                          }
                        },
                        "id": 13074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26331:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 13075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toBytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13400,
                      "src": "26331:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 13076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26331:31:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26312:50:48"
                },
                {
                  "body": {
                    "id": 13141,
                    "nodeType": "Block",
                    "src": "26428:311:48",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13095,
                              "name": "_idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13052,
                              "src": "26446:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 13096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26453:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "26446:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26458:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "26446:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13133,
                          "nodeType": "Block",
                          "src": "26583:116:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13117,
                                  "name": "_current",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13069,
                                  "src": "26601:8:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13121,
                                          "name": "_current",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13069,
                                          "src": "26648:8:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13119,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18347,
                                          "src": "26631:3:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 13120,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "26631:16:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 13122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26631:26:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 13127,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 13125,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13079,
                                            "src": "26672:1:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3332",
                                            "id": 13126,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "26676:2:48",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "26672:6:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "3332",
                                          "id": 13128,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "26680:2:48",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          },
                                          "value": "32"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13123,
                                          "name": "_proof",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13018,
                                          "src": "26659:6:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 13124,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "slice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 13281,
                                        "src": "26659:12:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 13129,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26659:24:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 13118,
                                    "name": "_hash256MerkleStep",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13016,
                                    "src": "26612:18:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 13130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26612:72:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "26601:83:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 13132,
                              "nodeType": "ExpressionStatement",
                              "src": "26601:83:48"
                            }
                          ]
                        },
                        "id": 13134,
                        "nodeType": "IfStatement",
                        "src": "26442:257:48",
                        "trueBody": {
                          "id": 13116,
                          "nodeType": "Block",
                          "src": "26461:116:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13100,
                                  "name": "_current",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13069,
                                  "src": "26479:8:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 13106,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 13104,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13079,
                                            "src": "26522:1:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3332",
                                            "id": 13105,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "26526:2:48",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "26522:6:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "3332",
                                          "id": 13107,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "26530:2:48",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          },
                                          "value": "32"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13102,
                                          "name": "_proof",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13018,
                                          "src": "26509:6:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 13103,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "slice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 13281,
                                        "src": "26509:12:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 13108,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26509:24:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13111,
                                          "name": "_current",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13069,
                                          "src": "26552:8:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13109,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18347,
                                          "src": "26535:3:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 13110,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "26535:16:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 13112,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26535:26:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 13101,
                                    "name": "_hash256MerkleStep",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13016,
                                    "src": "26490:18:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 13113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26490:72:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "26479:83:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 13115,
                              "nodeType": "ExpressionStatement",
                              "src": "26479:83:48"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13135,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13052,
                            "src": "26712:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13136,
                              "name": "_idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13052,
                              "src": "26719:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 13137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26727:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "26719:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26712:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13140,
                        "nodeType": "ExpressionStatement",
                        "src": "26712:16:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13082,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13079,
                      "src": "26390:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 13086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26413:2:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13083,
                                  "name": "_proof",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13018,
                                  "src": "26395:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 13084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "26395:13:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13874,
                              "src": "26395:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26395:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 13088,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "26394:23:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 13089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26420:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "26394:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26390:31:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13142,
                  "initializationExpression": {
                    "assignments": [
                      13079
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13079,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 13142,
                        "src": "26378:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13078,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26378:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 13081,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 13080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26387:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26378:10:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 13093,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "26423:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 13092,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13079,
                        "src": "26423:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13094,
                    "nodeType": "ExpressionStatement",
                    "src": "26423:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "26373:366:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 13145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13143,
                      "name": "_current",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13069,
                      "src": "26755:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 13144,
                      "name": "_root",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13056,
                      "src": "26767:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "26755:17:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13024,
                  "id": 13146,
                  "nodeType": "Return",
                  "src": "26748:24:48"
                }
              ]
            },
            "documentation": "@notice          Verifies a Bitcoin-style merkle tree\n @dev             Leaves are 0-indexed.\n @param _proof    The proof. Tightly packed LE sha256 hashes. The last hash is the root\n @param _index    The index of the leaf\n @return          true if the proof is valid, else false",
            "id": 13148,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "verifyHash256Merkle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13018,
                  "name": "_proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 13148,
                  "src": "25799:19:48",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13017,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "25799:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13020,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "scope": 13148,
                  "src": "25820:11:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13019,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25820:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25798:34:48"
            },
            "returnParameters": {
              "id": 13024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13023,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13148,
                  "src": "25856:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13022,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25856:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25855:6:48"
            },
            "scope": 13216,
            "src": "25770:1009:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13214,
              "nodeType": "Block",
              "src": "27720:755:48",
              "statements": [
                {
                  "assignments": [
                    13160
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13160,
                      "name": "_elapsedTime",
                      "nodeType": "VariableDeclaration",
                      "scope": 13214,
                      "src": "27730:20:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13159,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27730:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13165,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13163,
                        "name": "_firstTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13152,
                        "src": "27774:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 13161,
                        "name": "_secondTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13154,
                        "src": "27753:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13162,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13895,
                      "src": "27753:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 13164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27753:37:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27730:60:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13166,
                      "name": "_elapsedTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13160,
                      "src": "27874:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 13169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27909:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 13167,
                          "name": "RETARGET_PERIOD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11493,
                          "src": "27889:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13874,
                        "src": "27889:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 13170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "27889:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "27874:37:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13180,
                  "nodeType": "IfStatement",
                  "src": "27870:105:48",
                  "trueBody": {
                    "id": 13179,
                    "nodeType": "Block",
                    "src": "27913:62:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13172,
                            "name": "_elapsedTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13160,
                            "src": "27927:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 13175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27962:1:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13173,
                                "name": "RETARGET_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11493,
                                "src": "27942:15:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13874,
                              "src": "27942:19:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27942:22:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27927:37:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13178,
                        "nodeType": "ExpressionStatement",
                        "src": "27927:37:48"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13181,
                      "name": "_elapsedTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13160,
                      "src": "27988:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 13184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "28023:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 13182,
                          "name": "RETARGET_PERIOD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11493,
                          "src": "28003:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13860,
                        "src": "28003:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 13185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "28003:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "27988:37:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13195,
                  "nodeType": "IfStatement",
                  "src": "27984:105:48",
                  "trueBody": {
                    "id": 13194,
                    "nodeType": "Block",
                    "src": "28027:62:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13187,
                            "name": "_elapsedTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13160,
                            "src": "28041:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 13190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "28076:1:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13188,
                                "name": "RETARGET_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11493,
                                "src": "28056:15:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13860,
                              "src": "28056:19:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28056:22:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28041:37:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13193,
                        "nodeType": "ExpressionStatement",
                        "src": "28041:37:48"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    13197
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13197,
                      "name": "_adjusted",
                      "nodeType": "VariableDeclaration",
                      "scope": 13214,
                      "src": "28346:17:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13196,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28346:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13205,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13203,
                        "name": "_elapsedTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13160,
                        "src": "28397:12:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3635353336",
                            "id": 13200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28386:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_65536_by_1",
                              "typeString": "int_const 65536"
                            },
                            "value": "65536"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_65536_by_1",
                              "typeString": "int_const 65536"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13198,
                            "name": "_previousTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13150,
                            "src": "28366:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13874,
                          "src": "28366:19:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 13201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28366:26:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13860,
                      "src": "28366:30:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 13204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28366:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "28346:64:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3635353336",
                        "id": 13211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "28462:5:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_65536_by_1",
                          "typeString": "int_const 65536"
                        },
                        "value": "65536"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_65536_by_1",
                          "typeString": "int_const 65536"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13208,
                            "name": "RETARGET_PERIOD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11493,
                            "src": "28441:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13206,
                            "name": "_adjusted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13197,
                            "src": "28427:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13874,
                          "src": "28427:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 13209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28427:30:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13860,
                      "src": "28427:34:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 13212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28427:41:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13158,
                  "id": 13213,
                  "nodeType": "Return",
                  "src": "28420:48:48"
                }
              ]
            },
            "documentation": "@notice                 performs the bitcoin difficulty retarget\n @dev                    implements the Bitcoin algorithm precisely\n @param _previousTarget  the target of the previous period\n @param _firstTimestamp  the timestamp of the first block in the difficulty period\n @param _secondTimestamp the timestamp of the last block in the difficulty period\n @return                 the new period's target threshold",
            "id": 13215,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "retargetAlgorithm",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13150,
                  "name": "_previousTarget",
                  "nodeType": "VariableDeclaration",
                  "scope": 13215,
                  "src": "27591:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27591:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13152,
                  "name": "_firstTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 13215,
                  "src": "27624:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13151,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27624:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13154,
                  "name": "_secondTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 13215,
                  "src": "27657:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27657:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "27581:106:48"
            },
            "returnParameters": {
              "id": 13158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13157,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13215,
                  "src": "27711:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27711:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "27710:9:48"
            },
            "scope": 13216,
            "src": "27555:920:48",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 13217,
        "src": "176:28301:48"
      }
    ],
    "src": "0:28478:48"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
      "exportedSymbols": {
        "BTCUtils": [
          13216
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.5",
            ".10"
          ]
        },
        "id": 11469,
        "name": "PragmaDirective",
        "src": "0:24:48"
      },
      {
        "attributes": {
          "SourceUnit": 13433,
          "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
          "file": "./BytesLib.sol",
          "scope": 13217,
          "symbolAliases": [
            {
              "foreign": 11470,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 11471,
        "name": "ImportDirective",
        "src": "93:40:48"
      },
      {
        "attributes": {
          "SourceUnit": 13922,
          "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol",
          "file": "./SafeMath.sol",
          "scope": 13217,
          "symbolAliases": [
            {
              "foreign": 11472,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 11473,
        "name": "ImportDirective",
        "src": "134:40:48"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            13216
          ],
          "name": "BTCUtils",
          "scope": 13217
        },
        "children": [
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BytesLib",
                  "referencedDeclaration": 13432,
                  "type": "library BytesLib"
                },
                "id": 11474,
                "name": "UserDefinedTypeName",
                "src": "205:8:48"
              },
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 11475,
                "name": "ElementaryTypeName",
                "src": "218:5:48"
              }
            ],
            "id": 11476,
            "name": "UsingForDirective",
            "src": "199:25:48"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 13921,
                  "type": "library SafeMath"
                },
                "id": 11477,
                "name": "UserDefinedTypeName",
                "src": "235:8:48"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 11478,
                "name": "ElementaryTypeName",
                "src": "248:7:48"
              }
            ],
            "id": 11479,
            "name": "UsingForDirective",
            "src": "229:27:48"
          },
          {
            "attributes": {
              "constant": true,
              "name": "DIFF1_TARGET",
              "scope": 13216,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 11480,
                "name": "ElementaryTypeName",
                "src": "340:7:48"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "30786666666630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 2695...(60 digits omitted)...6960",
                  "value": "0xffff0000000000000000000000000000000000000000000000000000"
                },
                "id": 11481,
                "name": "Literal",
                "src": "379:58:48"
              }
            ],
            "id": 11482,
            "name": "VariableDeclaration",
            "src": "340:97:48"
          },
          {
            "attributes": {
              "constant": true,
              "name": "RETARGET_PERIOD",
              "scope": 13216,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 11483,
                "name": "ElementaryTypeName",
                "src": "444:7:48"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_1209600_by_1",
                    "typeString": "int_const 1209600"
                  },
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "operator": "*",
                  "type": "int_const 1209600"
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_20160_by_1",
                        "typeString": "int_const 20160"
                      },
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "operator": "*",
                      "type": "int_const 20160"
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_336_by_1",
                            "typeString": "int_const 336"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "int_const 336"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_14_by_1",
                                "typeString": "int_const 14"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "int_const 14"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 11484,
                                "name": "Literal",
                                "src": "486:1:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "37",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 7",
                                  "value": "7"
                                },
                                "id": 11485,
                                "name": "Literal",
                                "src": "490:1:48"
                              }
                            ],
                            "id": 11486,
                            "name": "BinaryOperation",
                            "src": "486:5:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3234",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 24",
                              "value": "24"
                            },
                            "id": 11487,
                            "name": "Literal",
                            "src": "494:2:48"
                          }
                        ],
                        "id": 11488,
                        "name": "BinaryOperation",
                        "src": "486:10:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "3630",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 60",
                          "value": "60"
                        },
                        "id": 11489,
                        "name": "Literal",
                        "src": "499:2:48"
                      }
                    ],
                    "id": 11490,
                    "name": "BinaryOperation",
                    "src": "486:15:48"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "3630",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 60",
                      "value": "60"
                    },
                    "id": 11491,
                    "name": "Literal",
                    "src": "504:2:48"
                  }
                ],
                "id": 11492,
                "name": "BinaryOperation",
                "src": "486:20:48"
              }
            ],
            "id": 11493,
            "name": "VariableDeclaration",
            "src": "444:62:48"
          },
          {
            "attributes": {
              "constant": true,
              "name": "RETARGET_PERIOD_BLOCKS",
              "scope": 13216,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 11494,
                "name": "ElementaryTypeName",
                "src": "535:7:48"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "32303136",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 2016",
                  "value": "2016"
                },
                "id": 11495,
                "name": "Literal",
                "src": "584:4:48"
              }
            ],
            "id": 11496,
            "name": "VariableDeclaration",
            "src": "535:53:48"
          },
          {
            "attributes": {
              "constant": true,
              "name": "ERR_BAD_ARG",
              "scope": 13216,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 11497,
                "name": "ElementaryTypeName",
                "src": "617:7:48"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 1157...(70 digits omitted)...9935",
                  "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                },
                "id": 11498,
                "name": "Literal",
                "src": "655:66:48"
              }
            ],
            "id": 11499,
            "name": "VariableDeclaration",
            "src": "617:104:48"
          },
          {
            "attributes": {
              "documentation": "@notice         Determines the length of a VarInt in bytes\n @dev            A VarInt of >1 byte is prefixed with a flag indicating its length\n @param _flag    The first byte of a VarInt\n @return         The number of non-flag bytes in the VarInt",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "determineVarIntDataLength",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_flag",
                      "scope": 11542,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11500,
                        "name": "ElementaryTypeName",
                        "src": "1087:5:48"
                      }
                    ],
                    "id": 11501,
                    "name": "VariableDeclaration",
                    "src": "1087:18:48"
                  }
                ],
                "id": 11502,
                "name": "ParameterList",
                "src": "1086:20:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11542,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 11503,
                        "name": "ElementaryTypeName",
                        "src": "1130:5:48"
                      }
                    ],
                    "id": 11504,
                    "name": "VariableDeclaration",
                    "src": "1130:5:48"
                  }
                ],
                "id": 11505,
                "name": "ParameterList",
                "src": "1129:7:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 11506,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1151:5:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11501,
                                      "type": "bytes memory",
                                      "value": "_flag"
                                    },
                                    "id": 11507,
                                    "name": "Identifier",
                                    "src": "1157:5:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11508,
                                    "name": "Literal",
                                    "src": "1163:1:48"
                                  }
                                ],
                                "id": 11509,
                                "name": "IndexAccess",
                                "src": "1157:8:48"
                              }
                            ],
                            "id": 11510,
                            "name": "FunctionCall",
                            "src": "1151:15:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30786666",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 255",
                              "value": "0xff"
                            },
                            "id": 11511,
                            "name": "Literal",
                            "src": "1170:4:48"
                          }
                        ],
                        "id": 11512,
                        "name": "BinaryOperation",
                        "src": "1151:23:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11505
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "38",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "8"
                                },
                                "id": 11513,
                                "name": "Literal",
                                "src": "1197:1:48"
                              }
                            ],
                            "id": 11514,
                            "name": "Return",
                            "src": "1190:8:48"
                          }
                        ],
                        "id": 11515,
                        "name": "Block",
                        "src": "1176:65:48"
                      }
                    ],
                    "id": 11516,
                    "name": "IfStatement",
                    "src": "1147:94:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 11517,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1254:5:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11501,
                                      "type": "bytes memory",
                                      "value": "_flag"
                                    },
                                    "id": 11518,
                                    "name": "Identifier",
                                    "src": "1260:5:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11519,
                                    "name": "Literal",
                                    "src": "1266:1:48"
                                  }
                                ],
                                "id": 11520,
                                "name": "IndexAccess",
                                "src": "1260:8:48"
                              }
                            ],
                            "id": 11521,
                            "name": "FunctionCall",
                            "src": "1254:15:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30786665",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 254",
                              "value": "0xfe"
                            },
                            "id": 11522,
                            "name": "Literal",
                            "src": "1273:4:48"
                          }
                        ],
                        "id": 11523,
                        "name": "BinaryOperation",
                        "src": "1254:23:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11505
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "34",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 4",
                                  "value": "4"
                                },
                                "id": 11524,
                                "name": "Literal",
                                "src": "1300:1:48"
                              }
                            ],
                            "id": 11525,
                            "name": "Return",
                            "src": "1293:8:48"
                          }
                        ],
                        "id": 11526,
                        "name": "Block",
                        "src": "1279:65:48"
                      }
                    ],
                    "id": 11527,
                    "name": "IfStatement",
                    "src": "1250:94:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 11528,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1357:5:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11501,
                                      "type": "bytes memory",
                                      "value": "_flag"
                                    },
                                    "id": 11529,
                                    "name": "Identifier",
                                    "src": "1363:5:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11530,
                                    "name": "Literal",
                                    "src": "1369:1:48"
                                  }
                                ],
                                "id": 11531,
                                "name": "IndexAccess",
                                "src": "1363:8:48"
                              }
                            ],
                            "id": 11532,
                            "name": "FunctionCall",
                            "src": "1357:15:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30786664",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 253",
                              "value": "0xfd"
                            },
                            "id": 11533,
                            "name": "Literal",
                            "src": "1376:4:48"
                          }
                        ],
                        "id": 11534,
                        "name": "BinaryOperation",
                        "src": "1357:23:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11505
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 11535,
                                "name": "Literal",
                                "src": "1403:1:48"
                              }
                            ],
                            "id": 11536,
                            "name": "Return",
                            "src": "1396:8:48"
                          }
                        ],
                        "id": 11537,
                        "name": "Block",
                        "src": "1382:65:48"
                      }
                    ],
                    "id": 11538,
                    "name": "IfStatement",
                    "src": "1353:94:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11505
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 11539,
                        "name": "Literal",
                        "src": "1464:1:48"
                      }
                    ],
                    "id": 11540,
                    "name": "Return",
                    "src": "1457:8:48"
                  }
                ],
                "id": 11541,
                "name": "Block",
                "src": "1137:352:48"
              }
            ],
            "id": 11542,
            "name": "FunctionDefinition",
            "src": "1052:437:48"
          },
          {
            "attributes": {
              "documentation": "@notice     Parse a VarInt into its data length and the number it represents\n @dev        Useful for Parsing Vins and Vouts. Returns ERR_BAD_ARG if insufficient bytes.\n             Caller SHOULD explicitly handle this case (or bubble it up)\n @param _b   A byte-string starting with a VarInt\n @return     number of bytes in the encoding (not counting the tag), the encoded int",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "parseVarInt",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11599,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11543,
                        "name": "ElementaryTypeName",
                        "src": "1928:5:48"
                      }
                    ],
                    "id": 11544,
                    "name": "VariableDeclaration",
                    "src": "1928:15:48"
                  }
                ],
                "id": 11545,
                "name": "ParameterList",
                "src": "1927:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11599,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11546,
                        "name": "ElementaryTypeName",
                        "src": "1968:7:48"
                      }
                    ],
                    "id": 11547,
                    "name": "VariableDeclaration",
                    "src": "1968:7:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11599,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11548,
                        "name": "ElementaryTypeName",
                        "src": "1977:7:48"
                      }
                    ],
                    "id": 11549,
                    "name": "VariableDeclaration",
                    "src": "1977:7:48"
                  }
                ],
                "id": 11550,
                "name": "ParameterList",
                "src": "1967:18:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11552
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_dataLen",
                          "scope": 11598,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 11551,
                            "name": "ElementaryTypeName",
                            "src": "1996:5:48"
                          }
                        ],
                        "id": 11552,
                        "name": "VariableDeclaration",
                        "src": "1996:14:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint8",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11542,
                              "type": "function (bytes memory) pure returns (uint8)",
                              "value": "determineVarIntDataLength"
                            },
                            "id": 11553,
                            "name": "Identifier",
                            "src": "2013:25:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11544,
                              "type": "bytes memory",
                              "value": "_b"
                            },
                            "id": 11554,
                            "name": "Identifier",
                            "src": "2039:2:48"
                          }
                        ],
                        "id": 11555,
                        "name": "FunctionCall",
                        "src": "2013:29:48"
                      }
                    ],
                    "id": 11556,
                    "name": "VariableDeclarationStatement",
                    "src": "1996:46:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11552,
                              "type": "uint8",
                              "value": "_dataLen"
                            },
                            "id": 11557,
                            "name": "Identifier",
                            "src": "2057:8:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11558,
                            "name": "Literal",
                            "src": "2069:1:48"
                          }
                        ],
                        "id": 11559,
                        "name": "BinaryOperation",
                        "src": "2057:13:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11550
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "tuple(int_const 0,uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11560,
                                    "name": "Literal",
                                    "src": "2094:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 11561,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "2097:5:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "bytes1"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11544,
                                              "type": "bytes memory",
                                              "value": "_b"
                                            },
                                            "id": 11562,
                                            "name": "Identifier",
                                            "src": "2103:2:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 11563,
                                            "name": "Literal",
                                            "src": "2106:1:48"
                                          }
                                        ],
                                        "id": 11564,
                                        "name": "IndexAccess",
                                        "src": "2103:5:48"
                                      }
                                    ],
                                    "id": 11565,
                                    "name": "FunctionCall",
                                    "src": "2097:12:48"
                                  }
                                ],
                                "id": 11566,
                                "name": "TupleExpression",
                                "src": "2093:17:48"
                              }
                            ],
                            "id": 11567,
                            "name": "Return",
                            "src": "2086:24:48"
                          }
                        ],
                        "id": 11568,
                        "name": "Block",
                        "src": "2072:49:48"
                      }
                    ],
                    "id": 11569,
                    "name": "IfStatement",
                    "src": "2053:68:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11544,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 11570,
                                "name": "Identifier",
                                "src": "2134:2:48"
                              }
                            ],
                            "id": 11571,
                            "name": "MemberAccess",
                            "src": "2134:9:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 11572,
                                "name": "Literal",
                                "src": "2146:1:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11552,
                                  "type": "uint8",
                                  "value": "_dataLen"
                                },
                                "id": 11573,
                                "name": "Identifier",
                                "src": "2150:8:48"
                              }
                            ],
                            "id": 11574,
                            "name": "BinaryOperation",
                            "src": "2146:12:48"
                          }
                        ],
                        "id": 11575,
                        "name": "BinaryOperation",
                        "src": "2134:24:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11550
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "tuple(uint256,int_const 0)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11499,
                                      "type": "uint256",
                                      "value": "ERR_BAD_ARG"
                                    },
                                    "id": 11576,
                                    "name": "Identifier",
                                    "src": "2182:11:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11577,
                                    "name": "Literal",
                                    "src": "2195:1:48"
                                  }
                                ],
                                "id": 11578,
                                "name": "TupleExpression",
                                "src": "2181:16:48"
                              }
                            ],
                            "id": 11579,
                            "name": "Return",
                            "src": "2174:23:48"
                          }
                        ],
                        "id": 11580,
                        "name": "Block",
                        "src": "2160:48:48"
                      }
                    ],
                    "id": 11581,
                    "name": "IfStatement",
                    "src": "2130:78:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11583
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_number",
                          "scope": 11598,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11582,
                            "name": "ElementaryTypeName",
                            "src": "2217:7:48"
                          }
                        ],
                        "id": 11583,
                        "name": "VariableDeclaration",
                        "src": "2217:15:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11790,
                              "type": "function (bytes memory) pure returns (uint256)",
                              "value": "bytesToUint"
                            },
                            "id": 11584,
                            "name": "Identifier",
                            "src": "2235:11:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11643,
                                  "type": "function (bytes memory) pure returns (bytes memory)",
                                  "value": "reverseEndianness"
                                },
                                "id": 11585,
                                "name": "Identifier",
                                "src": "2247:17:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11544,
                                          "type": "bytes memory",
                                          "value": "_b"
                                        },
                                        "id": 11586,
                                        "name": "Identifier",
                                        "src": "2265:2:48"
                                      }
                                    ],
                                    "id": 11587,
                                    "name": "MemberAccess",
                                    "src": "2265:8:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 11588,
                                    "name": "Literal",
                                    "src": "2274:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11552,
                                      "type": "uint8",
                                      "value": "_dataLen"
                                    },
                                    "id": 11589,
                                    "name": "Identifier",
                                    "src": "2277:8:48"
                                  }
                                ],
                                "id": 11590,
                                "name": "FunctionCall",
                                "src": "2265:21:48"
                              }
                            ],
                            "id": 11591,
                            "name": "FunctionCall",
                            "src": "2247:40:48"
                          }
                        ],
                        "id": 11592,
                        "name": "FunctionCall",
                        "src": "2235:53:48"
                      }
                    ],
                    "id": 11593,
                    "name": "VariableDeclarationStatement",
                    "src": "2217:71:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11550
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint8,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11552,
                              "type": "uint8",
                              "value": "_dataLen"
                            },
                            "id": 11594,
                            "name": "Identifier",
                            "src": "2306:8:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11583,
                              "type": "uint256",
                              "value": "_number"
                            },
                            "id": 11595,
                            "name": "Identifier",
                            "src": "2316:7:48"
                          }
                        ],
                        "id": 11596,
                        "name": "TupleExpression",
                        "src": "2305:19:48"
                      }
                    ],
                    "id": 11597,
                    "name": "Return",
                    "src": "2298:26:48"
                  }
                ],
                "id": 11598,
                "name": "Block",
                "src": "1986:345:48"
              }
            ],
            "id": 11599,
            "name": "FunctionDefinition",
            "src": "1907:424:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Changes the endianness of a byte array\n @dev             Returns a new, backwards, bytes\n @param _b        The bytes to reverse\n @return          The reversed bytes",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "reverseEndianness",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11643,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11600,
                        "name": "ElementaryTypeName",
                        "src": "2575:5:48"
                      }
                    ],
                    "id": 11601,
                    "name": "VariableDeclaration",
                    "src": "2575:15:48"
                  }
                ],
                "id": 11602,
                "name": "ParameterList",
                "src": "2574:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11643,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11603,
                        "name": "ElementaryTypeName",
                        "src": "2615:5:48"
                      }
                    ],
                    "id": 11604,
                    "name": "VariableDeclaration",
                    "src": "2615:12:48"
                  }
                ],
                "id": 11605,
                "name": "ParameterList",
                "src": "2614:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11607
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_newValue",
                          "scope": 11642,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 11606,
                            "name": "ElementaryTypeName",
                            "src": "2639:5:48"
                          }
                        ],
                        "id": 11607,
                        "name": "VariableDeclaration",
                        "src": "2639:22:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "bytes",
                                  "type": "bytes"
                                },
                                "id": 11608,
                                "name": "ElementaryTypeName",
                                "src": "2668:5:48"
                              }
                            ],
                            "id": 11609,
                            "name": "NewExpression",
                            "src": "2664:9:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11601,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 11610,
                                "name": "Identifier",
                                "src": "2674:2:48"
                              }
                            ],
                            "id": 11611,
                            "name": "MemberAccess",
                            "src": "2674:9:48"
                          }
                        ],
                        "id": 11612,
                        "name": "FunctionCall",
                        "src": "2664:20:48"
                      }
                    ],
                    "id": 11613,
                    "name": "VariableDeclarationStatement",
                    "src": "2639:45:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            11615
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 11639,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 11614,
                                "name": "ElementaryTypeName",
                                "src": "2700:4:48"
                              }
                            ],
                            "id": 11615,
                            "name": "VariableDeclaration",
                            "src": "2700:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11616,
                            "name": "Literal",
                            "src": "2709:1:48"
                          }
                        ],
                        "id": 11617,
                        "name": "VariableDeclarationStatement",
                        "src": "2700:10:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11615,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 11618,
                            "name": "Identifier",
                            "src": "2712:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11601,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 11619,
                                "name": "Identifier",
                                "src": "2716:2:48"
                              }
                            ],
                            "id": 11620,
                            "name": "MemberAccess",
                            "src": "2716:9:48"
                          }
                        ],
                        "id": 11621,
                        "name": "BinaryOperation",
                        "src": "2712:13:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11615,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 11622,
                                "name": "Identifier",
                                "src": "2727:1:48"
                              }
                            ],
                            "id": 11623,
                            "name": "UnaryOperation",
                            "src": "2727:3:48"
                          }
                        ],
                        "id": 11624,
                        "name": "ExpressionStatement",
                        "src": "2727:3:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bytes1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "bytes1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11607,
                                          "type": "bytes memory",
                                          "value": "_newValue"
                                        },
                                        "id": 11625,
                                        "name": "Identifier",
                                        "src": "2746:9:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "length",
                                                  "referencedDeclaration": null,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 11601,
                                                      "type": "bytes memory",
                                                      "value": "_b"
                                                    },
                                                    "id": 11626,
                                                    "name": "Identifier",
                                                    "src": "2756:2:48"
                                                  }
                                                ],
                                                "id": 11627,
                                                "name": "MemberAccess",
                                                "src": "2756:9:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11615,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 11628,
                                                "name": "Identifier",
                                                "src": "2768:1:48"
                                              }
                                            ],
                                            "id": 11629,
                                            "name": "BinaryOperation",
                                            "src": "2756:13:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "31",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1",
                                              "value": "1"
                                            },
                                            "id": 11630,
                                            "name": "Literal",
                                            "src": "2772:1:48"
                                          }
                                        ],
                                        "id": 11631,
                                        "name": "BinaryOperation",
                                        "src": "2756:17:48"
                                      }
                                    ],
                                    "id": 11632,
                                    "name": "IndexAccess",
                                    "src": "2746:28:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bytes1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11601,
                                          "type": "bytes memory",
                                          "value": "_b"
                                        },
                                        "id": 11633,
                                        "name": "Identifier",
                                        "src": "2777:2:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11615,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 11634,
                                        "name": "Identifier",
                                        "src": "2780:1:48"
                                      }
                                    ],
                                    "id": 11635,
                                    "name": "IndexAccess",
                                    "src": "2777:5:48"
                                  }
                                ],
                                "id": 11636,
                                "name": "Assignment",
                                "src": "2746:36:48"
                              }
                            ],
                            "id": 11637,
                            "name": "ExpressionStatement",
                            "src": "2746:36:48"
                          }
                        ],
                        "id": 11638,
                        "name": "Block",
                        "src": "2732:61:48"
                      }
                    ],
                    "id": 11639,
                    "name": "ForStatement",
                    "src": "2695:98:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11605
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 11607,
                          "type": "bytes memory",
                          "value": "_newValue"
                        },
                        "id": 11640,
                        "name": "Identifier",
                        "src": "2810:9:48"
                      }
                    ],
                    "id": 11641,
                    "name": "Return",
                    "src": "2803:16:48"
                  }
                ],
                "id": 11642,
                "name": "Block",
                "src": "2629:197:48"
              }
            ],
            "id": 11643,
            "name": "FunctionDefinition",
            "src": "2548:278:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Changes the endianness of a uint256\n @dev             https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel\n @param _b        The unsigned integer to reverse\n @return          The reversed value",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "reverseUint256",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11739,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11644,
                        "name": "ElementaryTypeName",
                        "src": "3112:7:48"
                      }
                    ],
                    "id": 11645,
                    "name": "VariableDeclaration",
                    "src": "3112:10:48"
                  }
                ],
                "id": 11646,
                "name": "ParameterList",
                "src": "3111:12:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "v",
                      "scope": 11739,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11647,
                        "name": "ElementaryTypeName",
                        "src": "3147:7:48"
                      }
                    ],
                    "id": 11648,
                    "name": "VariableDeclaration",
                    "src": "3147:9:48"
                  }
                ],
                "id": 11649,
                "name": "ParameterList",
                "src": "3146:11:48"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11648,
                              "type": "uint256",
                              "value": "v"
                            },
                            "id": 11650,
                            "name": "Identifier",
                            "src": "3168:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11645,
                              "type": "uint256",
                              "value": "_b"
                            },
                            "id": 11651,
                            "name": "Identifier",
                            "src": "3172:2:48"
                          }
                        ],
                        "id": 11652,
                        "name": "Assignment",
                        "src": "3168:6:48"
                      }
                    ],
                    "id": 11653,
                    "name": "ExpressionStatement",
                    "src": "3168:6:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11648,
                              "type": "uint256",
                              "value": "v"
                            },
                            "id": 11654,
                            "name": "Identifier",
                            "src": "3207:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "|",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "&",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": ">>",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11655,
                                                "name": "Identifier",
                                                "src": "3213:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "38",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 8",
                                                  "value": "8"
                                                },
                                                "id": 11656,
                                                "name": "Literal",
                                                "src": "3218:1:48"
                                              }
                                            ],
                                            "id": 11657,
                                            "name": "BinaryOperation",
                                            "src": "3213:6:48"
                                          }
                                        ],
                                        "id": 11658,
                                        "name": "TupleExpression",
                                        "src": "3212:8:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 4505...(67 digits omitted)...9455",
                                          "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
                                        },
                                        "id": 11659,
                                        "name": "Literal",
                                        "src": "3223:66:48"
                                      }
                                    ],
                                    "id": 11660,
                                    "name": "BinaryOperation",
                                    "src": "3212:77:48"
                                  }
                                ],
                                "id": 11661,
                                "name": "TupleExpression",
                                "src": "3211:79:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<<",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11662,
                                                "name": "Identifier",
                                                "src": "3307:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 4505...(67 digits omitted)...9455",
                                                  "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
                                                },
                                                "id": 11663,
                                                "name": "Literal",
                                                "src": "3311:66:48"
                                              }
                                            ],
                                            "id": 11664,
                                            "name": "BinaryOperation",
                                            "src": "3307:70:48"
                                          }
                                        ],
                                        "id": 11665,
                                        "name": "TupleExpression",
                                        "src": "3306:72:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "38",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 8",
                                          "value": "8"
                                        },
                                        "id": 11666,
                                        "name": "Literal",
                                        "src": "3382:1:48"
                                      }
                                    ],
                                    "id": 11667,
                                    "name": "BinaryOperation",
                                    "src": "3306:77:48"
                                  }
                                ],
                                "id": 11668,
                                "name": "TupleExpression",
                                "src": "3305:79:48"
                              }
                            ],
                            "id": 11669,
                            "name": "BinaryOperation",
                            "src": "3211:173:48"
                          }
                        ],
                        "id": 11670,
                        "name": "Assignment",
                        "src": "3207:177:48"
                      }
                    ],
                    "id": 11671,
                    "name": "ExpressionStatement",
                    "src": "3207:177:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11648,
                              "type": "uint256",
                              "value": "v"
                            },
                            "id": 11672,
                            "name": "Identifier",
                            "src": "3428:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "|",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "&",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": ">>",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11673,
                                                "name": "Identifier",
                                                "src": "3434:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "3136",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 16",
                                                  "value": "16"
                                                },
                                                "id": 11674,
                                                "name": "Literal",
                                                "src": "3439:2:48"
                                              }
                                            ],
                                            "id": 11675,
                                            "name": "BinaryOperation",
                                            "src": "3434:7:48"
                                          }
                                        ],
                                        "id": 11676,
                                        "name": "TupleExpression",
                                        "src": "3433:9:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1766...(65 digits omitted)...4255",
                                          "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
                                        },
                                        "id": 11677,
                                        "name": "Literal",
                                        "src": "3445:66:48"
                                      }
                                    ],
                                    "id": 11678,
                                    "name": "BinaryOperation",
                                    "src": "3433:78:48"
                                  }
                                ],
                                "id": 11679,
                                "name": "TupleExpression",
                                "src": "3432:80:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<<",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11680,
                                                "name": "Identifier",
                                                "src": "3529:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 1766...(65 digits omitted)...4255",
                                                  "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
                                                },
                                                "id": 11681,
                                                "name": "Literal",
                                                "src": "3533:66:48"
                                              }
                                            ],
                                            "id": 11682,
                                            "name": "BinaryOperation",
                                            "src": "3529:70:48"
                                          }
                                        ],
                                        "id": 11683,
                                        "name": "TupleExpression",
                                        "src": "3528:72:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3136",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 16",
                                          "value": "16"
                                        },
                                        "id": 11684,
                                        "name": "Literal",
                                        "src": "3604:2:48"
                                      }
                                    ],
                                    "id": 11685,
                                    "name": "BinaryOperation",
                                    "src": "3528:78:48"
                                  }
                                ],
                                "id": 11686,
                                "name": "TupleExpression",
                                "src": "3527:80:48"
                              }
                            ],
                            "id": 11687,
                            "name": "BinaryOperation",
                            "src": "3432:175:48"
                          }
                        ],
                        "id": 11688,
                        "name": "Assignment",
                        "src": "3428:179:48"
                      }
                    ],
                    "id": 11689,
                    "name": "ExpressionStatement",
                    "src": "3428:179:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11648,
                              "type": "uint256",
                              "value": "v"
                            },
                            "id": 11690,
                            "name": "Identifier",
                            "src": "3651:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "|",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "&",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": ">>",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11691,
                                                "name": "Identifier",
                                                "src": "3657:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "3332",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 32",
                                                  "value": "32"
                                                },
                                                "id": 11692,
                                                "name": "Literal",
                                                "src": "3662:2:48"
                                              }
                                            ],
                                            "id": 11693,
                                            "name": "BinaryOperation",
                                            "src": "3657:7:48"
                                          }
                                        ],
                                        "id": 11694,
                                        "name": "TupleExpression",
                                        "src": "3656:9:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 2695...(60 digits omitted)...3855",
                                          "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
                                        },
                                        "id": 11695,
                                        "name": "Literal",
                                        "src": "3668:66:48"
                                      }
                                    ],
                                    "id": 11696,
                                    "name": "BinaryOperation",
                                    "src": "3656:78:48"
                                  }
                                ],
                                "id": 11697,
                                "name": "TupleExpression",
                                "src": "3655:80:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<<",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11698,
                                                "name": "Identifier",
                                                "src": "3752:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 2695...(60 digits omitted)...3855",
                                                  "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
                                                },
                                                "id": 11699,
                                                "name": "Literal",
                                                "src": "3756:66:48"
                                              }
                                            ],
                                            "id": 11700,
                                            "name": "BinaryOperation",
                                            "src": "3752:70:48"
                                          }
                                        ],
                                        "id": 11701,
                                        "name": "TupleExpression",
                                        "src": "3751:72:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 11702,
                                        "name": "Literal",
                                        "src": "3827:2:48"
                                      }
                                    ],
                                    "id": 11703,
                                    "name": "BinaryOperation",
                                    "src": "3751:78:48"
                                  }
                                ],
                                "id": 11704,
                                "name": "TupleExpression",
                                "src": "3750:80:48"
                              }
                            ],
                            "id": 11705,
                            "name": "BinaryOperation",
                            "src": "3655:175:48"
                          }
                        ],
                        "id": 11706,
                        "name": "Assignment",
                        "src": "3651:179:48"
                      }
                    ],
                    "id": 11707,
                    "name": "ExpressionStatement",
                    "src": "3651:179:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11648,
                              "type": "uint256",
                              "value": "v"
                            },
                            "id": 11708,
                            "name": "Identifier",
                            "src": "3874:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "|",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "&",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": ">>",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11709,
                                                "name": "Identifier",
                                                "src": "3880:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "3634",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 64",
                                                  "value": "64"
                                                },
                                                "id": 11710,
                                                "name": "Literal",
                                                "src": "3885:2:48"
                                              }
                                            ],
                                            "id": 11711,
                                            "name": "BinaryOperation",
                                            "src": "3880:7:48"
                                          }
                                        ],
                                        "id": 11712,
                                        "name": "TupleExpression",
                                        "src": "3879:9:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 6277...(50 digits omitted)...3055",
                                          "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
                                        },
                                        "id": 11713,
                                        "name": "Literal",
                                        "src": "3891:66:48"
                                      }
                                    ],
                                    "id": 11714,
                                    "name": "BinaryOperation",
                                    "src": "3879:78:48"
                                  }
                                ],
                                "id": 11715,
                                "name": "TupleExpression",
                                "src": "3878:80:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<<",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11648,
                                                  "type": "uint256",
                                                  "value": "v"
                                                },
                                                "id": 11716,
                                                "name": "Identifier",
                                                "src": "3975:1:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 6277...(50 digits omitted)...3055",
                                                  "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
                                                },
                                                "id": 11717,
                                                "name": "Literal",
                                                "src": "3979:66:48"
                                              }
                                            ],
                                            "id": 11718,
                                            "name": "BinaryOperation",
                                            "src": "3975:70:48"
                                          }
                                        ],
                                        "id": 11719,
                                        "name": "TupleExpression",
                                        "src": "3974:72:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3634",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 64",
                                          "value": "64"
                                        },
                                        "id": 11720,
                                        "name": "Literal",
                                        "src": "4050:2:48"
                                      }
                                    ],
                                    "id": 11721,
                                    "name": "BinaryOperation",
                                    "src": "3974:78:48"
                                  }
                                ],
                                "id": 11722,
                                "name": "TupleExpression",
                                "src": "3973:80:48"
                              }
                            ],
                            "id": 11723,
                            "name": "BinaryOperation",
                            "src": "3878:175:48"
                          }
                        ],
                        "id": 11724,
                        "name": "Assignment",
                        "src": "3874:179:48"
                      }
                    ],
                    "id": 11725,
                    "name": "ExpressionStatement",
                    "src": "3874:179:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11648,
                              "type": "uint256",
                              "value": "v"
                            },
                            "id": 11726,
                            "name": "Identifier",
                            "src": "4098:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "|",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">>",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11648,
                                          "type": "uint256",
                                          "value": "v"
                                        },
                                        "id": 11727,
                                        "name": "Identifier",
                                        "src": "4103:1:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "313238",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 128",
                                          "value": "128"
                                        },
                                        "id": 11728,
                                        "name": "Literal",
                                        "src": "4108:3:48"
                                      }
                                    ],
                                    "id": 11729,
                                    "name": "BinaryOperation",
                                    "src": "4103:8:48"
                                  }
                                ],
                                "id": 11730,
                                "name": "TupleExpression",
                                "src": "4102:10:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<<",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11648,
                                          "type": "uint256",
                                          "value": "v"
                                        },
                                        "id": 11731,
                                        "name": "Identifier",
                                        "src": "4116:1:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "313238",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 128",
                                          "value": "128"
                                        },
                                        "id": 11732,
                                        "name": "Literal",
                                        "src": "4121:3:48"
                                      }
                                    ],
                                    "id": 11733,
                                    "name": "BinaryOperation",
                                    "src": "4116:8:48"
                                  }
                                ],
                                "id": 11734,
                                "name": "TupleExpression",
                                "src": "4115:10:48"
                              }
                            ],
                            "id": 11735,
                            "name": "BinaryOperation",
                            "src": "4102:23:48"
                          }
                        ],
                        "id": 11736,
                        "name": "Assignment",
                        "src": "4098:27:48"
                      }
                    ],
                    "id": 11737,
                    "name": "ExpressionStatement",
                    "src": "4098:27:48"
                  }
                ],
                "id": 11738,
                "name": "Block",
                "src": "3158:974:48"
              }
            ],
            "id": 11739,
            "name": "FunctionDefinition",
            "src": "3088:1044:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Converts big-endian bytes to a uint\n @dev             Traverses the byte array and sums the bytes\n @param _b        The big-endian bytes-encoded integer\n @return          The integer representation",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "bytesToUint",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11790,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11740,
                        "name": "ElementaryTypeName",
                        "src": "4403:5:48"
                      }
                    ],
                    "id": 11741,
                    "name": "VariableDeclaration",
                    "src": "4403:15:48"
                  }
                ],
                "id": 11742,
                "name": "ParameterList",
                "src": "4402:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11790,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11743,
                        "name": "ElementaryTypeName",
                        "src": "4443:7:48"
                      }
                    ],
                    "id": 11744,
                    "name": "VariableDeclaration",
                    "src": "4443:7:48"
                  }
                ],
                "id": 11745,
                "name": "ParameterList",
                "src": "4442:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11747
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_number",
                          "scope": 11789,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11746,
                            "name": "ElementaryTypeName",
                            "src": "4462:7:48"
                          }
                        ],
                        "id": 11747,
                        "name": "VariableDeclaration",
                        "src": "4462:15:48"
                      }
                    ],
                    "id": 11748,
                    "name": "VariableDeclarationStatement",
                    "src": "4462:15:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            11750
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 11786,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 11749,
                                "name": "ElementaryTypeName",
                                "src": "4493:4:48"
                              }
                            ],
                            "id": 11750,
                            "name": "VariableDeclaration",
                            "src": "4493:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11751,
                            "name": "Literal",
                            "src": "4502:1:48"
                          }
                        ],
                        "id": 11752,
                        "name": "VariableDeclarationStatement",
                        "src": "4493:10:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11750,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 11753,
                            "name": "Identifier",
                            "src": "4505:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11741,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 11754,
                                "name": "Identifier",
                                "src": "4509:2:48"
                              }
                            ],
                            "id": 11755,
                            "name": "MemberAccess",
                            "src": "4509:9:48"
                          }
                        ],
                        "id": 11756,
                        "name": "BinaryOperation",
                        "src": "4505:13:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11750,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 11757,
                                "name": "Identifier",
                                "src": "4520:1:48"
                              }
                            ],
                            "id": 11758,
                            "name": "UnaryOperation",
                            "src": "4520:3:48"
                          }
                        ],
                        "id": 11759,
                        "name": "ExpressionStatement",
                        "src": "4520:3:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11747,
                                      "type": "uint256",
                                      "value": "_number"
                                    },
                                    "id": 11760,
                                    "name": "Identifier",
                                    "src": "4539:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11747,
                                          "type": "uint256",
                                          "value": "_number"
                                        },
                                        "id": 11761,
                                        "name": "Identifier",
                                        "src": "4549:7:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "uint8",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes1",
                                                      "typeString": "bytes1"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(uint8)",
                                                  "value": "uint8"
                                                },
                                                "id": 11762,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "4559:5:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "bytes1"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 11741,
                                                      "type": "bytes memory",
                                                      "value": "_b"
                                                    },
                                                    "id": 11763,
                                                    "name": "Identifier",
                                                    "src": "4565:2:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 11750,
                                                      "type": "uint256",
                                                      "value": "i"
                                                    },
                                                    "id": 11764,
                                                    "name": "Identifier",
                                                    "src": "4568:1:48"
                                                  }
                                                ],
                                                "id": 11765,
                                                "name": "IndexAccess",
                                                "src": "4565:5:48"
                                              }
                                            ],
                                            "id": 11766,
                                            "name": "FunctionCall",
                                            "src": "4559:12:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "**",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "32",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "number",
                                                      "type": "int_const 2",
                                                      "value": "2"
                                                    },
                                                    "id": 11767,
                                                    "name": "Literal",
                                                    "src": "4575:1:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "*",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "hexvalue": "38",
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "subdenomination": null,
                                                              "token": "number",
                                                              "type": "int_const 8",
                                                              "value": "8"
                                                            },
                                                            "id": 11768,
                                                            "name": "Literal",
                                                            "src": "4581:1:48"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isInlineArray": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "operator": "-",
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "member_name": "length",
                                                                      "referencedDeclaration": null,
                                                                      "type": "uint256"
                                                                    },
                                                                    "children": [
                                                                      {
                                                                        "attributes": {
                                                                          "argumentTypes": null,
                                                                          "overloadedDeclarations": [
                                                                            null
                                                                          ],
                                                                          "referencedDeclaration": 11741,
                                                                          "type": "bytes memory",
                                                                          "value": "_b"
                                                                        },
                                                                        "id": 11769,
                                                                        "name": "Identifier",
                                                                        "src": "4586:2:48"
                                                                      }
                                                                    ],
                                                                    "id": 11770,
                                                                    "name": "MemberAccess",
                                                                    "src": "4586:9:48"
                                                                  },
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "isConstant": false,
                                                                      "isInlineArray": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "type": "uint256"
                                                                    },
                                                                    "children": [
                                                                      {
                                                                        "attributes": {
                                                                          "argumentTypes": null,
                                                                          "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          },
                                                                          "isConstant": false,
                                                                          "isLValue": false,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "operator": "+",
                                                                          "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                          {
                                                                            "attributes": {
                                                                              "argumentTypes": null,
                                                                              "overloadedDeclarations": [
                                                                                null
                                                                              ],
                                                                              "referencedDeclaration": 11750,
                                                                              "type": "uint256",
                                                                              "value": "i"
                                                                            },
                                                                            "id": 11771,
                                                                            "name": "Identifier",
                                                                            "src": "4599:1:48"
                                                                          },
                                                                          {
                                                                            "attributes": {
                                                                              "argumentTypes": null,
                                                                              "hexvalue": "31",
                                                                              "isConstant": false,
                                                                              "isLValue": false,
                                                                              "isPure": true,
                                                                              "lValueRequested": false,
                                                                              "subdenomination": null,
                                                                              "token": "number",
                                                                              "type": "int_const 1",
                                                                              "value": "1"
                                                                            },
                                                                            "id": 11772,
                                                                            "name": "Literal",
                                                                            "src": "4603:1:48"
                                                                          }
                                                                        ],
                                                                        "id": 11773,
                                                                        "name": "BinaryOperation",
                                                                        "src": "4599:5:48"
                                                                      }
                                                                    ],
                                                                    "id": 11774,
                                                                    "name": "TupleExpression",
                                                                    "src": "4598:7:48"
                                                                  }
                                                                ],
                                                                "id": 11775,
                                                                "name": "BinaryOperation",
                                                                "src": "4586:19:48"
                                                              }
                                                            ],
                                                            "id": 11776,
                                                            "name": "TupleExpression",
                                                            "src": "4585:21:48"
                                                          }
                                                        ],
                                                        "id": 11777,
                                                        "name": "BinaryOperation",
                                                        "src": "4581:25:48"
                                                      }
                                                    ],
                                                    "id": 11778,
                                                    "name": "TupleExpression",
                                                    "src": "4580:27:48"
                                                  }
                                                ],
                                                "id": 11779,
                                                "name": "BinaryOperation",
                                                "src": "4575:32:48"
                                              }
                                            ],
                                            "id": 11780,
                                            "name": "TupleExpression",
                                            "src": "4574:34:48"
                                          }
                                        ],
                                        "id": 11781,
                                        "name": "BinaryOperation",
                                        "src": "4559:49:48"
                                      }
                                    ],
                                    "id": 11782,
                                    "name": "BinaryOperation",
                                    "src": "4549:59:48"
                                  }
                                ],
                                "id": 11783,
                                "name": "Assignment",
                                "src": "4539:69:48"
                              }
                            ],
                            "id": 11784,
                            "name": "ExpressionStatement",
                            "src": "4539:69:48"
                          }
                        ],
                        "id": 11785,
                        "name": "Block",
                        "src": "4525:94:48"
                      }
                    ],
                    "id": 11786,
                    "name": "ForStatement",
                    "src": "4488:131:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11745
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 11747,
                          "type": "uint256",
                          "value": "_number"
                        },
                        "id": 11787,
                        "name": "Identifier",
                        "src": "4636:7:48"
                      }
                    ],
                    "id": 11788,
                    "name": "Return",
                    "src": "4629:14:48"
                  }
                ],
                "id": 11789,
                "name": "Block",
                "src": "4452:198:48"
              }
            ],
            "id": 11790,
            "name": "FunctionDefinition",
            "src": "4382:268:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Get the last _num bytes from a byte array\n @param _b        The byte array to slice\n @param _num      The number of bytes to extract from the end\n @return          The last _num bytes of _b",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "lastBytes",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11814,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11791,
                        "name": "ElementaryTypeName",
                        "src": "4911:5:48"
                      }
                    ],
                    "id": 11792,
                    "name": "VariableDeclaration",
                    "src": "4911:15:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_num",
                      "scope": 11814,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11793,
                        "name": "ElementaryTypeName",
                        "src": "4928:7:48"
                      }
                    ],
                    "id": 11794,
                    "name": "VariableDeclaration",
                    "src": "4928:12:48"
                  }
                ],
                "id": 11795,
                "name": "ParameterList",
                "src": "4910:31:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11814,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11796,
                        "name": "ElementaryTypeName",
                        "src": "4965:5:48"
                      }
                    ],
                    "id": 11797,
                    "name": "VariableDeclaration",
                    "src": "4965:12:48"
                  }
                ],
                "id": 11798,
                "name": "ParameterList",
                "src": "4964:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11800
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_start",
                          "scope": 11813,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11799,
                            "name": "ElementaryTypeName",
                            "src": "4989:7:48"
                          }
                        ],
                        "id": 11800,
                        "name": "VariableDeclaration",
                        "src": "4989:14:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sub",
                              "referencedDeclaration": 13895,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11792,
                                      "type": "bytes memory",
                                      "value": "_b"
                                    },
                                    "id": 11801,
                                    "name": "Identifier",
                                    "src": "5006:2:48"
                                  }
                                ],
                                "id": 11802,
                                "name": "MemberAccess",
                                "src": "5006:9:48"
                              }
                            ],
                            "id": 11803,
                            "name": "MemberAccess",
                            "src": "5006:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11794,
                              "type": "uint256",
                              "value": "_num"
                            },
                            "id": 11804,
                            "name": "Identifier",
                            "src": "5020:4:48"
                          }
                        ],
                        "id": 11805,
                        "name": "FunctionCall",
                        "src": "5006:19:48"
                      }
                    ],
                    "id": 11806,
                    "name": "VariableDeclarationStatement",
                    "src": "4989:36:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11798
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11792,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 11807,
                                "name": "Identifier",
                                "src": "5043:2:48"
                              }
                            ],
                            "id": 11808,
                            "name": "MemberAccess",
                            "src": "5043:8:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11800,
                              "type": "uint256",
                              "value": "_start"
                            },
                            "id": 11809,
                            "name": "Identifier",
                            "src": "5052:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11794,
                              "type": "uint256",
                              "value": "_num"
                            },
                            "id": 11810,
                            "name": "Identifier",
                            "src": "5060:4:48"
                          }
                        ],
                        "id": 11811,
                        "name": "FunctionCall",
                        "src": "5043:22:48"
                      }
                    ],
                    "id": 11812,
                    "name": "Return",
                    "src": "5036:29:48"
                  }
                ],
                "id": 11813,
                "name": "Block",
                "src": "4979:93:48"
              }
            ],
            "id": 11814,
            "name": "FunctionDefinition",
            "src": "4892:180:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Implements bitcoin's hash160 (rmd160(sha2()))\n @dev             abi.encodePacked changes the return to bytes instead of bytes32\n @param _b        The pre-image\n @return          The digest",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "hash160",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11834,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11815,
                        "name": "ElementaryTypeName",
                        "src": "5330:5:48"
                      }
                    ],
                    "id": 11816,
                    "name": "VariableDeclaration",
                    "src": "5330:15:48"
                  }
                ],
                "id": 11817,
                "name": "ParameterList",
                "src": "5329:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11834,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11818,
                        "name": "ElementaryTypeName",
                        "src": "5370:5:48"
                      }
                    ],
                    "id": 11819,
                    "name": "VariableDeclaration",
                    "src": "5370:12:48"
                  }
                ],
                "id": 11820,
                "name": "ParameterList",
                "src": "5369:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11820
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes20",
                                  "typeString": "bytes20"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "encodePacked",
                              "referencedDeclaration": null,
                              "type": "function () pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18347,
                                  "type": "abi",
                                  "value": "abi"
                                },
                                "id": 11821,
                                "name": "Identifier",
                                "src": "5401:3:48"
                              }
                            ],
                            "id": 11822,
                            "name": "MemberAccess",
                            "src": "5401:16:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes20",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18367,
                                  "type": "function (bytes memory) pure returns (bytes20)",
                                  "value": "ripemd160"
                                },
                                "id": 11823,
                                "name": "Identifier",
                                "src": "5418:9:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "encodePacked",
                                      "referencedDeclaration": null,
                                      "type": "function () pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18347,
                                          "type": "abi",
                                          "value": "abi"
                                        },
                                        "id": 11824,
                                        "name": "Identifier",
                                        "src": "5428:3:48"
                                      }
                                    ],
                                    "id": 11825,
                                    "name": "MemberAccess",
                                    "src": "5428:16:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18369,
                                          "type": "function (bytes memory) pure returns (bytes32)",
                                          "value": "sha256"
                                        },
                                        "id": 11826,
                                        "name": "Identifier",
                                        "src": "5445:6:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11816,
                                          "type": "bytes memory",
                                          "value": "_b"
                                        },
                                        "id": 11827,
                                        "name": "Identifier",
                                        "src": "5452:2:48"
                                      }
                                    ],
                                    "id": 11828,
                                    "name": "FunctionCall",
                                    "src": "5445:10:48"
                                  }
                                ],
                                "id": 11829,
                                "name": "FunctionCall",
                                "src": "5428:28:48"
                              }
                            ],
                            "id": 11830,
                            "name": "FunctionCall",
                            "src": "5418:39:48"
                          }
                        ],
                        "id": 11831,
                        "name": "FunctionCall",
                        "src": "5401:57:48"
                      }
                    ],
                    "id": 11832,
                    "name": "Return",
                    "src": "5394:64:48"
                  }
                ],
                "id": 11833,
                "name": "Block",
                "src": "5384:81:48"
              }
            ],
            "id": 11834,
            "name": "FunctionDefinition",
            "src": "5313:152:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Implements bitcoin's hash256 (double sha2)\n @dev             abi.encodePacked changes the return to bytes instead of bytes32\n @param _b        The pre-image\n @return          The digest",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "hash256",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11851,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11835,
                        "name": "ElementaryTypeName",
                        "src": "5720:5:48"
                      }
                    ],
                    "id": 11836,
                    "name": "VariableDeclaration",
                    "src": "5720:15:48"
                  }
                ],
                "id": 11837,
                "name": "ParameterList",
                "src": "5719:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11851,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 11838,
                        "name": "ElementaryTypeName",
                        "src": "5760:7:48"
                      }
                    ],
                    "id": 11839,
                    "name": "VariableDeclaration",
                    "src": "5760:7:48"
                  }
                ],
                "id": 11840,
                "name": "ParameterList",
                "src": "5759:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11840
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 18369,
                              "type": "function (bytes memory) pure returns (bytes32)",
                              "value": "sha256"
                            },
                            "id": 11841,
                            "name": "Identifier",
                            "src": "5786:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodePacked",
                                  "referencedDeclaration": null,
                                  "type": "function () pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18347,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 11842,
                                    "name": "Identifier",
                                    "src": "5793:3:48"
                                  }
                                ],
                                "id": 11843,
                                "name": "MemberAccess",
                                "src": "5793:16:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18369,
                                      "type": "function (bytes memory) pure returns (bytes32)",
                                      "value": "sha256"
                                    },
                                    "id": 11844,
                                    "name": "Identifier",
                                    "src": "5810:6:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11836,
                                      "type": "bytes memory",
                                      "value": "_b"
                                    },
                                    "id": 11845,
                                    "name": "Identifier",
                                    "src": "5817:2:48"
                                  }
                                ],
                                "id": 11846,
                                "name": "FunctionCall",
                                "src": "5810:10:48"
                              }
                            ],
                            "id": 11847,
                            "name": "FunctionCall",
                            "src": "5793:28:48"
                          }
                        ],
                        "id": 11848,
                        "name": "FunctionCall",
                        "src": "5786:36:48"
                      }
                    ],
                    "id": 11849,
                    "name": "Return",
                    "src": "5779:43:48"
                  }
                ],
                "id": 11850,
                "name": "Block",
                "src": "5769:60:48"
              }
            ],
            "id": 11851,
            "name": "FunctionDefinition",
            "src": "5703:126:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Implements bitcoin's hash256 (double sha2)\n @dev             sha2 is precompiled smart contract located at address(2)\n @param _b        The pre-image\n @return          The digest",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "hash256View",
              "scope": 13216,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 11860,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11852,
                        "name": "ElementaryTypeName",
                        "src": "6081:5:48"
                      }
                    ],
                    "id": 11853,
                    "name": "VariableDeclaration",
                    "src": "6081:15:48"
                  }
                ],
                "id": 11854,
                "name": "ParameterList",
                "src": "6080:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "res",
                      "scope": 11860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 11855,
                        "name": "ElementaryTypeName",
                        "src": "6121:7:48"
                      }
                    ],
                    "id": 11856,
                    "name": "VariableDeclaration",
                    "src": "6121:11:48"
                  }
                ],
                "id": 11857,
                "name": "ParameterList",
                "src": "6120:13:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "_b": {
                            "declaration": 11853,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6293:2:48",
                            "valueSize": 1
                          }
                        },
                        {
                          "res": {
                            "declaration": 11856,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6389:3:48",
                            "valueSize": 1
                          }
                        },
                        {
                          "_b": {
                            "declaration": 11853,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6308:2:48",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    let ptr := mload(0x40)\n    pop(staticcall(gas(), 2, add(_b, 32), mload(_b), ptr, 32))\n    pop(staticcall(gas(), 2, ptr, 32, ptr, 32))\n    res := mload(ptr)\n}"
                    },
                    "children": [],
                    "id": 11858,
                    "name": "InlineAssembly",
                    "src": "6208:208:48"
                  }
                ],
                "id": 11859,
                "name": "Block",
                "src": "6134:288:48"
              }
            ],
            "id": 11860,
            "name": "FunctionDefinition",
            "src": "6060:362:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the nth input from the vin (0-indexed)\n @dev             Iterates over the vin. If you need to extract several, write a custom function\n @param _vin      The vin as a tightly-packed byte array\n @param _index    The 0-indexed location of the input to extract\n @return          The input as a byte array",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractInputAtIndex",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vin",
                      "scope": 11983,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11861,
                        "name": "ElementaryTypeName",
                        "src": "6891:5:48"
                      }
                    ],
                    "id": 11862,
                    "name": "VariableDeclaration",
                    "src": "6891:17:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_index",
                      "scope": 11983,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11863,
                        "name": "ElementaryTypeName",
                        "src": "6910:7:48"
                      }
                    ],
                    "id": 11864,
                    "name": "VariableDeclaration",
                    "src": "6910:14:48"
                  }
                ],
                "id": 11865,
                "name": "ParameterList",
                "src": "6890:35:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11983,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11866,
                        "name": "ElementaryTypeName",
                        "src": "6949:5:48"
                      }
                    ],
                    "id": 11867,
                    "name": "VariableDeclaration",
                    "src": "6949:12:48"
                  }
                ],
                "id": 11868,
                "name": "ParameterList",
                "src": "6948:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11870
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 11982,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11869,
                            "name": "ElementaryTypeName",
                            "src": "6973:7:48"
                          }
                        ],
                        "id": 11870,
                        "name": "VariableDeclaration",
                        "src": "6973:22:48"
                      }
                    ],
                    "id": 11871,
                    "name": "VariableDeclarationStatement",
                    "src": "6973:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11873
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_nIns",
                          "scope": 11982,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11872,
                            "name": "ElementaryTypeName",
                            "src": "7005:7:48"
                          }
                        ],
                        "id": 11873,
                        "name": "VariableDeclaration",
                        "src": "7005:13:48"
                      }
                    ],
                    "id": 11874,
                    "name": "VariableDeclarationStatement",
                    "src": "7005:13:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11870,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 11875,
                                "name": "Identifier",
                                "src": "7030:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11873,
                                  "type": "uint256",
                                  "value": "_nIns"
                                },
                                "id": 11876,
                                "name": "Identifier",
                                "src": "7046:5:48"
                              }
                            ],
                            "id": 11877,
                            "name": "TupleExpression",
                            "src": "7029:23:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11599,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "parseVarInt"
                                },
                                "id": 11878,
                                "name": "Identifier",
                                "src": "7055:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11862,
                                  "type": "bytes memory",
                                  "value": "_vin"
                                },
                                "id": 11879,
                                "name": "Identifier",
                                "src": "7067:4:48"
                              }
                            ],
                            "id": 11880,
                            "name": "FunctionCall",
                            "src": "7055:17:48"
                          }
                        ],
                        "id": 11881,
                        "name": "Assignment",
                        "src": "7029:43:48"
                      }
                    ],
                    "id": 11882,
                    "name": "ExpressionStatement",
                    "src": "7029:43:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_44f1d85595cd9e7bca9d9a2d6049b01f75f753890836287504890b72b66f7afd",
                                  "typeString": "literal_string \"Read overrun during VarInt parsing\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 11883,
                            "name": "Identifier",
                            "src": "7082:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11870,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 11884,
                                "name": "Identifier",
                                "src": "7090:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 11885,
                                "name": "Identifier",
                                "src": "7108:11:48"
                              }
                            ],
                            "id": 11886,
                            "name": "BinaryOperation",
                            "src": "7090:29:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "52656164206f76657272756e20647572696e6720566172496e742070617273696e67",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Read overrun during VarInt parsing\"",
                              "value": "Read overrun during VarInt parsing"
                            },
                            "id": 11887,
                            "name": "Literal",
                            "src": "7121:36:48"
                          }
                        ],
                        "id": 11888,
                        "name": "FunctionCall",
                        "src": "7082:76:48"
                      }
                    ],
                    "id": 11889,
                    "name": "ExpressionStatement",
                    "src": "7082:76:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_a957e9d3071160b28fdf54b241ef5554d7ebf4457632e38cd7ec08cd05aece4f",
                                  "typeString": "literal_string \"Vin read overrun\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 11890,
                            "name": "Identifier",
                            "src": "7168:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11864,
                                  "type": "uint256",
                                  "value": "_index"
                                },
                                "id": 11891,
                                "name": "Identifier",
                                "src": "7176:6:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11873,
                                  "type": "uint256",
                                  "value": "_nIns"
                                },
                                "id": 11892,
                                "name": "Identifier",
                                "src": "7185:5:48"
                              }
                            ],
                            "id": 11893,
                            "name": "BinaryOperation",
                            "src": "7176:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "56696e2072656164206f76657272756e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Vin read overrun\"",
                              "value": "Vin read overrun"
                            },
                            "id": 11894,
                            "name": "Literal",
                            "src": "7192:18:48"
                          }
                        ],
                        "id": 11895,
                        "name": "FunctionCall",
                        "src": "7168:43:48"
                      }
                    ],
                    "id": 11896,
                    "name": "ExpressionStatement",
                    "src": "7168:43:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11898
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_remaining",
                          "scope": 11982,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 11897,
                            "name": "ElementaryTypeName",
                            "src": "7222:5:48"
                          }
                        ],
                        "id": 11898,
                        "name": "VariableDeclaration",
                        "src": "7222:23:48"
                      }
                    ],
                    "id": 11899,
                    "name": "VariableDeclarationStatement",
                    "src": "7222:23:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11901
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_len",
                          "scope": 11982,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11900,
                            "name": "ElementaryTypeName",
                            "src": "7256:7:48"
                          }
                        ],
                        "id": 11901,
                        "name": "VariableDeclaration",
                        "src": "7256:12:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 11902,
                        "name": "Literal",
                        "src": "7271:1:48"
                      }
                    ],
                    "id": 11903,
                    "name": "VariableDeclarationStatement",
                    "src": "7256:16:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11905
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_offset",
                          "scope": 11982,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11904,
                            "name": "ElementaryTypeName",
                            "src": "7282:7:48"
                          }
                        ],
                        "id": 11905,
                        "name": "VariableDeclaration",
                        "src": "7282:15:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 11906,
                            "name": "Literal",
                            "src": "7300:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11870,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 11907,
                            "name": "Identifier",
                            "src": "7304:14:48"
                          }
                        ],
                        "id": 11908,
                        "name": "BinaryOperation",
                        "src": "7300:18:48"
                      }
                    ],
                    "id": 11909,
                    "name": "VariableDeclarationStatement",
                    "src": "7282:36:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            11911
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "_i",
                              "scope": 11951,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 11910,
                                "name": "ElementaryTypeName",
                                "src": "7334:7:48"
                              }
                            ],
                            "id": 11911,
                            "name": "VariableDeclaration",
                            "src": "7334:10:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11912,
                            "name": "Literal",
                            "src": "7347:1:48"
                          }
                        ],
                        "id": 11913,
                        "name": "VariableDeclarationStatement",
                        "src": "7334:14:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11911,
                              "type": "uint256",
                              "value": "_i"
                            },
                            "id": 11914,
                            "name": "Identifier",
                            "src": "7350:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11864,
                              "type": "uint256",
                              "value": "_index"
                            },
                            "id": 11915,
                            "name": "Identifier",
                            "src": "7355:6:48"
                          }
                        ],
                        "id": 11916,
                        "name": "BinaryOperation",
                        "src": "7350:11:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11911,
                                  "type": "uint256",
                                  "value": "_i"
                                },
                                "id": 11917,
                                "name": "Identifier",
                                "src": "7363:2:48"
                              }
                            ],
                            "id": 11918,
                            "name": "UnaryOperation",
                            "src": "7363:5:48"
                          }
                        ],
                        "id": 11919,
                        "name": "ExpressionStatement",
                        "src": "7363:5:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11898,
                                      "type": "bytes memory",
                                      "value": "_remaining"
                                    },
                                    "id": 11920,
                                    "name": "Identifier",
                                    "src": "7384:10:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "slice",
                                          "referencedDeclaration": 13281,
                                          "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11862,
                                              "type": "bytes memory",
                                              "value": "_vin"
                                            },
                                            "id": 11921,
                                            "name": "Identifier",
                                            "src": "7397:4:48"
                                          }
                                        ],
                                        "id": 11922,
                                        "name": "MemberAccess",
                                        "src": "7397:10:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11905,
                                          "type": "uint256",
                                          "value": "_offset"
                                        },
                                        "id": 11923,
                                        "name": "Identifier",
                                        "src": "7408:7:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "length",
                                              "referencedDeclaration": null,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11862,
                                                  "type": "bytes memory",
                                                  "value": "_vin"
                                                },
                                                "id": 11924,
                                                "name": "Identifier",
                                                "src": "7417:4:48"
                                              }
                                            ],
                                            "id": 11925,
                                            "name": "MemberAccess",
                                            "src": "7417:11:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11905,
                                              "type": "uint256",
                                              "value": "_offset"
                                            },
                                            "id": 11926,
                                            "name": "Identifier",
                                            "src": "7431:7:48"
                                          }
                                        ],
                                        "id": 11927,
                                        "name": "BinaryOperation",
                                        "src": "7417:21:48"
                                      }
                                    ],
                                    "id": 11928,
                                    "name": "FunctionCall",
                                    "src": "7397:42:48"
                                  }
                                ],
                                "id": 11929,
                                "name": "Assignment",
                                "src": "7384:55:48"
                              }
                            ],
                            "id": 11930,
                            "name": "ExpressionStatement",
                            "src": "7384:55:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11901,
                                      "type": "uint256",
                                      "value": "_len"
                                    },
                                    "id": 11931,
                                    "name": "Identifier",
                                    "src": "7453:4:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12089,
                                          "type": "function (bytes memory) pure returns (uint256)",
                                          "value": "determineInputLength"
                                        },
                                        "id": 11932,
                                        "name": "Identifier",
                                        "src": "7460:20:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11898,
                                          "type": "bytes memory",
                                          "value": "_remaining"
                                        },
                                        "id": 11933,
                                        "name": "Identifier",
                                        "src": "7481:10:48"
                                      }
                                    ],
                                    "id": 11934,
                                    "name": "FunctionCall",
                                    "src": "7460:32:48"
                                  }
                                ],
                                "id": 11935,
                                "name": "Assignment",
                                "src": "7453:39:48"
                              }
                            ],
                            "id": 11936,
                            "name": "ExpressionStatement",
                            "src": "7453:39:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                                          "typeString": "literal_string \"Bad VarInt in scriptSig\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        18363,
                                        18364
                                      ],
                                      "referencedDeclaration": 18364,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 11937,
                                    "name": "Identifier",
                                    "src": "7506:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "!=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11901,
                                          "type": "uint256",
                                          "value": "_len"
                                        },
                                        "id": 11938,
                                        "name": "Identifier",
                                        "src": "7514:4:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11499,
                                          "type": "uint256",
                                          "value": "ERR_BAD_ARG"
                                        },
                                        "id": 11939,
                                        "name": "Identifier",
                                        "src": "7522:11:48"
                                      }
                                    ],
                                    "id": 11940,
                                    "name": "BinaryOperation",
                                    "src": "7514:19:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "42616420566172496e7420696e20736372697074536967",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "string",
                                      "type": "literal_string \"Bad VarInt in scriptSig\"",
                                      "value": "Bad VarInt in scriptSig"
                                    },
                                    "id": 11941,
                                    "name": "Literal",
                                    "src": "7535:25:48"
                                  }
                                ],
                                "id": 11942,
                                "name": "FunctionCall",
                                "src": "7506:55:48"
                              }
                            ],
                            "id": 11943,
                            "name": "ExpressionStatement",
                            "src": "7506:55:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11905,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 11944,
                                    "name": "Identifier",
                                    "src": "7575:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11905,
                                          "type": "uint256",
                                          "value": "_offset"
                                        },
                                        "id": 11945,
                                        "name": "Identifier",
                                        "src": "7585:7:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11901,
                                          "type": "uint256",
                                          "value": "_len"
                                        },
                                        "id": 11946,
                                        "name": "Identifier",
                                        "src": "7595:4:48"
                                      }
                                    ],
                                    "id": 11947,
                                    "name": "BinaryOperation",
                                    "src": "7585:14:48"
                                  }
                                ],
                                "id": 11948,
                                "name": "Assignment",
                                "src": "7575:24:48"
                              }
                            ],
                            "id": 11949,
                            "name": "ExpressionStatement",
                            "src": "7575:24:48"
                          }
                        ],
                        "id": 11950,
                        "name": "Block",
                        "src": "7370:240:48"
                      }
                    ],
                    "id": 11951,
                    "name": "ForStatement",
                    "src": "7329:281:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11898,
                              "type": "bytes memory",
                              "value": "_remaining"
                            },
                            "id": 11952,
                            "name": "Identifier",
                            "src": "7620:10:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "slice",
                                  "referencedDeclaration": 13281,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11862,
                                      "type": "bytes memory",
                                      "value": "_vin"
                                    },
                                    "id": 11953,
                                    "name": "Identifier",
                                    "src": "7633:4:48"
                                  }
                                ],
                                "id": 11954,
                                "name": "MemberAccess",
                                "src": "7633:10:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11905,
                                  "type": "uint256",
                                  "value": "_offset"
                                },
                                "id": 11955,
                                "name": "Identifier",
                                "src": "7644:7:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11862,
                                          "type": "bytes memory",
                                          "value": "_vin"
                                        },
                                        "id": 11956,
                                        "name": "Identifier",
                                        "src": "7653:4:48"
                                      }
                                    ],
                                    "id": 11957,
                                    "name": "MemberAccess",
                                    "src": "7653:11:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11905,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 11958,
                                    "name": "Identifier",
                                    "src": "7667:7:48"
                                  }
                                ],
                                "id": 11959,
                                "name": "BinaryOperation",
                                "src": "7653:21:48"
                              }
                            ],
                            "id": 11960,
                            "name": "FunctionCall",
                            "src": "7633:42:48"
                          }
                        ],
                        "id": 11961,
                        "name": "Assignment",
                        "src": "7620:55:48"
                      }
                    ],
                    "id": 11962,
                    "name": "ExpressionStatement",
                    "src": "7620:55:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11901,
                              "type": "uint256",
                              "value": "_len"
                            },
                            "id": 11963,
                            "name": "Identifier",
                            "src": "7685:4:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12089,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "determineInputLength"
                                },
                                "id": 11964,
                                "name": "Identifier",
                                "src": "7692:20:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11898,
                                  "type": "bytes memory",
                                  "value": "_remaining"
                                },
                                "id": 11965,
                                "name": "Identifier",
                                "src": "7713:10:48"
                              }
                            ],
                            "id": 11966,
                            "name": "FunctionCall",
                            "src": "7692:32:48"
                          }
                        ],
                        "id": 11967,
                        "name": "Assignment",
                        "src": "7685:39:48"
                      }
                    ],
                    "id": 11968,
                    "name": "ExpressionStatement",
                    "src": "7685:39:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                                  "typeString": "literal_string \"Bad VarInt in scriptSig\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 11969,
                            "name": "Identifier",
                            "src": "7734:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11901,
                                  "type": "uint256",
                                  "value": "_len"
                                },
                                "id": 11970,
                                "name": "Identifier",
                                "src": "7742:4:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 11971,
                                "name": "Identifier",
                                "src": "7750:11:48"
                              }
                            ],
                            "id": 11972,
                            "name": "BinaryOperation",
                            "src": "7742:19:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "42616420566172496e7420696e20736372697074536967",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Bad VarInt in scriptSig\"",
                              "value": "Bad VarInt in scriptSig"
                            },
                            "id": 11973,
                            "name": "Literal",
                            "src": "7763:25:48"
                          }
                        ],
                        "id": 11974,
                        "name": "FunctionCall",
                        "src": "7734:55:48"
                      }
                    ],
                    "id": 11975,
                    "name": "ExpressionStatement",
                    "src": "7734:55:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11868
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11862,
                                  "type": "bytes memory",
                                  "value": "_vin"
                                },
                                "id": 11976,
                                "name": "Identifier",
                                "src": "7806:4:48"
                              }
                            ],
                            "id": 11977,
                            "name": "MemberAccess",
                            "src": "7806:10:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11905,
                              "type": "uint256",
                              "value": "_offset"
                            },
                            "id": 11978,
                            "name": "Identifier",
                            "src": "7817:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11901,
                              "type": "uint256",
                              "value": "_len"
                            },
                            "id": 11979,
                            "name": "Identifier",
                            "src": "7826:4:48"
                          }
                        ],
                        "id": 11980,
                        "name": "FunctionCall",
                        "src": "7806:25:48"
                      }
                    ],
                    "id": 11981,
                    "name": "Return",
                    "src": "7799:32:48"
                  }
                ],
                "id": 11982,
                "name": "Block",
                "src": "6963:875:48"
              }
            ],
            "id": 11983,
            "name": "FunctionDefinition",
            "src": "6862:976:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Determines whether an input is legacy\n @dev             False if no scriptSig, otherwise True\n @param _input    The input\n @return          True for legacy, False for witness",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isLegacyInput",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12001,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 11984,
                        "name": "ElementaryTypeName",
                        "src": "8088:5:48"
                      }
                    ],
                    "id": 11985,
                    "name": "VariableDeclaration",
                    "src": "8088:19:48"
                  }
                ],
                "id": 11986,
                "name": "ParameterList",
                "src": "8087:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11987,
                        "name": "ElementaryTypeName",
                        "src": "8132:4:48"
                      }
                    ],
                    "id": 11988,
                    "name": "VariableDeclaration",
                    "src": "8132:4:48"
                  }
                ],
                "id": 11989,
                "name": "ParameterList",
                "src": "8131:6:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11989
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_36_by_1",
                                      "typeString": "int_const 36"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "keccak256Slice",
                                  "referencedDeclaration": 13431,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11985,
                                      "type": "bytes memory",
                                      "value": "_input"
                                    },
                                    "id": 11990,
                                    "name": "Identifier",
                                    "src": "8155:6:48"
                                  }
                                ],
                                "id": 11991,
                                "name": "MemberAccess",
                                "src": "8155:21:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3336",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 36",
                                  "value": "36"
                                },
                                "id": 11992,
                                "name": "Literal",
                                "src": "8177:2:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 11993,
                                "name": "Literal",
                                "src": "8181:1:48"
                              }
                            ],
                            "id": 11994,
                            "name": "FunctionCall",
                            "src": "8155:28:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a",
                                      "typeString": "literal_string \"\u0000\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18354,
                                  "type": "function (bytes memory) pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 11995,
                                "name": "Identifier",
                                "src": "8187:9:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "00",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"\u0000\"",
                                  "value": "\u0000"
                                },
                                "id": 11996,
                                "name": "Literal",
                                "src": "8197:7:48"
                              }
                            ],
                            "id": 11997,
                            "name": "FunctionCall",
                            "src": "8187:18:48"
                          }
                        ],
                        "id": 11998,
                        "name": "BinaryOperation",
                        "src": "8155:50:48"
                      }
                    ],
                    "id": 11999,
                    "name": "Return",
                    "src": "8148:57:48"
                  }
                ],
                "id": 12000,
                "name": "Block",
                "src": "8138:74:48"
              }
            ],
            "id": 12001,
            "name": "FunctionDefinition",
            "src": "8065:147:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Determines the length of a scriptSig in an input\n @dev             Will return 0 if passed a witness input.\n @param _input    The LEGACY input\n @return          The length of the script sig",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractScriptSigLen",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12050,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12002,
                        "name": "ElementaryTypeName",
                        "src": "8483:5:48"
                      }
                    ],
                    "id": 12003,
                    "name": "VariableDeclaration",
                    "src": "8483:19:48"
                  }
                ],
                "id": 12004,
                "name": "ParameterList",
                "src": "8482:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12050,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12005,
                        "name": "ElementaryTypeName",
                        "src": "8527:7:48"
                      }
                    ],
                    "id": 12006,
                    "name": "VariableDeclaration",
                    "src": "8527:7:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12050,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12007,
                        "name": "ElementaryTypeName",
                        "src": "8536:7:48"
                      }
                    ],
                    "id": 12008,
                    "name": "VariableDeclaration",
                    "src": "8536:7:48"
                  }
                ],
                "id": 12009,
                "name": "ParameterList",
                "src": "8526:18:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12003,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12010,
                                "name": "Identifier",
                                "src": "8559:6:48"
                              }
                            ],
                            "id": 12011,
                            "name": "MemberAccess",
                            "src": "8559:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3337",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 37",
                              "value": "37"
                            },
                            "id": 12012,
                            "name": "Literal",
                            "src": "8575:2:48"
                          }
                        ],
                        "id": 12013,
                        "name": "BinaryOperation",
                        "src": "8559:18:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12009
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "tuple(uint256,int_const 0)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11499,
                                      "type": "uint256",
                                      "value": "ERR_BAD_ARG"
                                    },
                                    "id": 12014,
                                    "name": "Identifier",
                                    "src": "8601:11:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 12015,
                                    "name": "Literal",
                                    "src": "8614:1:48"
                                  }
                                ],
                                "id": 12016,
                                "name": "TupleExpression",
                                "src": "8600:16:48"
                              }
                            ],
                            "id": 12017,
                            "name": "Return",
                            "src": "8593:23:48"
                          }
                        ],
                        "id": 12018,
                        "name": "Block",
                        "src": "8579:48:48"
                      }
                    ],
                    "id": 12019,
                    "name": "IfStatement",
                    "src": "8555:72:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12021
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_afterOutpoint",
                          "scope": 12049,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12020,
                            "name": "ElementaryTypeName",
                            "src": "8636:5:48"
                          }
                        ],
                        "id": 12021,
                        "name": "VariableDeclaration",
                        "src": "8636:27:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_36_by_1",
                                  "typeString": "int_const 36"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12003,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12022,
                                "name": "Identifier",
                                "src": "8666:6:48"
                              }
                            ],
                            "id": 12023,
                            "name": "MemberAccess",
                            "src": "8666:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3336",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 36",
                              "value": "36"
                            },
                            "id": 12024,
                            "name": "Literal",
                            "src": "8679:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12003,
                                      "type": "bytes memory",
                                      "value": "_input"
                                    },
                                    "id": 12025,
                                    "name": "Identifier",
                                    "src": "8683:6:48"
                                  }
                                ],
                                "id": 12026,
                                "name": "MemberAccess",
                                "src": "8683:13:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3336",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 36",
                                  "value": "36"
                                },
                                "id": 12027,
                                "name": "Literal",
                                "src": "8699:2:48"
                              }
                            ],
                            "id": 12028,
                            "name": "BinaryOperation",
                            "src": "8683:18:48"
                          }
                        ],
                        "id": 12029,
                        "name": "FunctionCall",
                        "src": "8666:36:48"
                      }
                    ],
                    "id": 12030,
                    "name": "VariableDeclarationStatement",
                    "src": "8636:66:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12032
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12049,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12031,
                            "name": "ElementaryTypeName",
                            "src": "8713:7:48"
                          }
                        ],
                        "id": 12032,
                        "name": "VariableDeclaration",
                        "src": "8713:22:48"
                      }
                    ],
                    "id": 12033,
                    "name": "VariableDeclarationStatement",
                    "src": "8713:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12035
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_scriptSigLen",
                          "scope": 12049,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12034,
                            "name": "ElementaryTypeName",
                            "src": "8745:7:48"
                          }
                        ],
                        "id": 12035,
                        "name": "VariableDeclaration",
                        "src": "8745:21:48"
                      }
                    ],
                    "id": 12036,
                    "name": "VariableDeclarationStatement",
                    "src": "8745:21:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12032,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12037,
                                "name": "Identifier",
                                "src": "8777:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12035,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12038,
                                "name": "Identifier",
                                "src": "8793:13:48"
                              }
                            ],
                            "id": 12039,
                            "name": "TupleExpression",
                            "src": "8776:31:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11599,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "parseVarInt"
                                },
                                "id": 12040,
                                "name": "Identifier",
                                "src": "8810:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12021,
                                  "type": "bytes memory",
                                  "value": "_afterOutpoint"
                                },
                                "id": 12041,
                                "name": "Identifier",
                                "src": "8822:14:48"
                              }
                            ],
                            "id": 12042,
                            "name": "FunctionCall",
                            "src": "8810:27:48"
                          }
                        ],
                        "id": 12043,
                        "name": "Assignment",
                        "src": "8776:61:48"
                      }
                    ],
                    "id": 12044,
                    "name": "ExpressionStatement",
                    "src": "8776:61:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12009
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12032,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 12045,
                            "name": "Identifier",
                            "src": "8856:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12035,
                              "type": "uint256",
                              "value": "_scriptSigLen"
                            },
                            "id": 12046,
                            "name": "Identifier",
                            "src": "8872:13:48"
                          }
                        ],
                        "id": 12047,
                        "name": "TupleExpression",
                        "src": "8855:31:48"
                      }
                    ],
                    "id": 12048,
                    "name": "Return",
                    "src": "8848:38:48"
                  }
                ],
                "id": 12049,
                "name": "Block",
                "src": "8545:348:48"
              }
            ],
            "id": 12050,
            "name": "FunctionDefinition",
            "src": "8454:439:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Determines the length of an input from its scriptSig\n @dev             36 for outpoint, 1 for scriptSig length, 4 for sequence\n @param _input    The input\n @return          The length of the input in bytes",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "determineInputLength",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12089,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12051,
                        "name": "ElementaryTypeName",
                        "src": "9181:5:48"
                      }
                    ],
                    "id": 12052,
                    "name": "VariableDeclaration",
                    "src": "9181:19:48"
                  }
                ],
                "id": 12053,
                "name": "ParameterList",
                "src": "9180:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12089,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12054,
                        "name": "ElementaryTypeName",
                        "src": "9225:7:48"
                      }
                    ],
                    "id": 12055,
                    "name": "VariableDeclaration",
                    "src": "9225:7:48"
                  }
                ],
                "id": 12056,
                "name": "ParameterList",
                "src": "9224:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12058
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12088,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12057,
                            "name": "ElementaryTypeName",
                            "src": "9244:7:48"
                          }
                        ],
                        "id": 12058,
                        "name": "VariableDeclaration",
                        "src": "9244:22:48"
                      }
                    ],
                    "id": 12059,
                    "name": "VariableDeclarationStatement",
                    "src": "9244:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12061
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_scriptSigLen",
                          "scope": 12088,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12060,
                            "name": "ElementaryTypeName",
                            "src": "9276:7:48"
                          }
                        ],
                        "id": 12061,
                        "name": "VariableDeclaration",
                        "src": "9276:21:48"
                      }
                    ],
                    "id": 12062,
                    "name": "VariableDeclarationStatement",
                    "src": "9276:21:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12058,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12063,
                                "name": "Identifier",
                                "src": "9308:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12061,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12064,
                                "name": "Identifier",
                                "src": "9324:13:48"
                              }
                            ],
                            "id": 12065,
                            "name": "TupleExpression",
                            "src": "9307:31:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12050,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "extractScriptSigLen"
                                },
                                "id": 12066,
                                "name": "Identifier",
                                "src": "9341:19:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12052,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12067,
                                "name": "Identifier",
                                "src": "9361:6:48"
                              }
                            ],
                            "id": 12068,
                            "name": "FunctionCall",
                            "src": "9341:27:48"
                          }
                        ],
                        "id": 12069,
                        "name": "Assignment",
                        "src": "9307:61:48"
                      }
                    ],
                    "id": 12070,
                    "name": "ExpressionStatement",
                    "src": "9307:61:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12058,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 12071,
                            "name": "Identifier",
                            "src": "9382:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11499,
                              "type": "uint256",
                              "value": "ERR_BAD_ARG"
                            },
                            "id": 12072,
                            "name": "Identifier",
                            "src": "9400:11:48"
                          }
                        ],
                        "id": 12073,
                        "name": "BinaryOperation",
                        "src": "9382:29:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12056
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12074,
                                "name": "Identifier",
                                "src": "9434:11:48"
                              }
                            ],
                            "id": 12075,
                            "name": "Return",
                            "src": "9427:18:48"
                          }
                        ],
                        "id": 12076,
                        "name": "Block",
                        "src": "9413:43:48"
                      }
                    ],
                    "id": 12077,
                    "name": "IfStatement",
                    "src": "9378:78:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12056
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_37_by_1",
                                        "typeString": "int_const 37"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "int_const 37"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3336",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 36",
                                          "value": "36"
                                        },
                                        "id": 12078,
                                        "name": "Literal",
                                        "src": "9473:2:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 12079,
                                        "name": "Literal",
                                        "src": "9478:1:48"
                                      }
                                    ],
                                    "id": 12080,
                                    "name": "BinaryOperation",
                                    "src": "9473:6:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12058,
                                      "type": "uint256",
                                      "value": "_varIntDataLen"
                                    },
                                    "id": 12081,
                                    "name": "Identifier",
                                    "src": "9482:14:48"
                                  }
                                ],
                                "id": 12082,
                                "name": "BinaryOperation",
                                "src": "9473:23:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12061,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12083,
                                "name": "Identifier",
                                "src": "9499:13:48"
                              }
                            ],
                            "id": 12084,
                            "name": "BinaryOperation",
                            "src": "9473:39:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 12085,
                            "name": "Literal",
                            "src": "9515:1:48"
                          }
                        ],
                        "id": 12086,
                        "name": "BinaryOperation",
                        "src": "9473:43:48"
                      }
                    ],
                    "id": 12087,
                    "name": "Return",
                    "src": "9466:50:48"
                  }
                ],
                "id": 12088,
                "name": "Block",
                "src": "9234:289:48"
              }
            ],
            "id": 12089,
            "name": "FunctionDefinition",
            "src": "9151:372:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the LE sequence bytes from an input\n @dev             Sequence is used for relative time locks\n @param _input    The LEGACY input\n @return          The sequence bytes (LE uint)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractSequenceLELegacy",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12130,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12090,
                        "name": "ElementaryTypeName",
                        "src": "9794:5:48"
                      }
                    ],
                    "id": 12091,
                    "name": "VariableDeclaration",
                    "src": "9794:19:48"
                  }
                ],
                "id": 12092,
                "name": "ParameterList",
                "src": "9793:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12130,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12093,
                        "name": "ElementaryTypeName",
                        "src": "9838:5:48"
                      }
                    ],
                    "id": 12094,
                    "name": "VariableDeclaration",
                    "src": "9838:12:48"
                  }
                ],
                "id": 12095,
                "name": "ParameterList",
                "src": "9837:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12097
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12129,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12096,
                            "name": "ElementaryTypeName",
                            "src": "9862:7:48"
                          }
                        ],
                        "id": 12097,
                        "name": "VariableDeclaration",
                        "src": "9862:22:48"
                      }
                    ],
                    "id": 12098,
                    "name": "VariableDeclarationStatement",
                    "src": "9862:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12100
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_scriptSigLen",
                          "scope": 12129,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12099,
                            "name": "ElementaryTypeName",
                            "src": "9894:7:48"
                          }
                        ],
                        "id": 12100,
                        "name": "VariableDeclaration",
                        "src": "9894:21:48"
                      }
                    ],
                    "id": 12101,
                    "name": "VariableDeclarationStatement",
                    "src": "9894:21:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12097,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12102,
                                "name": "Identifier",
                                "src": "9926:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12100,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12103,
                                "name": "Identifier",
                                "src": "9942:13:48"
                              }
                            ],
                            "id": 12104,
                            "name": "TupleExpression",
                            "src": "9925:31:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12050,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "extractScriptSigLen"
                                },
                                "id": 12105,
                                "name": "Identifier",
                                "src": "9959:19:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12091,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12106,
                                "name": "Identifier",
                                "src": "9979:6:48"
                              }
                            ],
                            "id": 12107,
                            "name": "FunctionCall",
                            "src": "9959:27:48"
                          }
                        ],
                        "id": 12108,
                        "name": "Assignment",
                        "src": "9925:61:48"
                      }
                    ],
                    "id": 12109,
                    "name": "ExpressionStatement",
                    "src": "9925:61:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                                  "typeString": "literal_string \"Bad VarInt in scriptSig\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 12110,
                            "name": "Identifier",
                            "src": "9996:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12097,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12111,
                                "name": "Identifier",
                                "src": "10004:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12112,
                                "name": "Identifier",
                                "src": "10022:11:48"
                              }
                            ],
                            "id": 12113,
                            "name": "BinaryOperation",
                            "src": "10004:29:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "42616420566172496e7420696e20736372697074536967",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Bad VarInt in scriptSig\"",
                              "value": "Bad VarInt in scriptSig"
                            },
                            "id": 12114,
                            "name": "Literal",
                            "src": "10035:25:48"
                          }
                        ],
                        "id": 12115,
                        "name": "FunctionCall",
                        "src": "9996:65:48"
                      }
                    ],
                    "id": 12116,
                    "name": "ExpressionStatement",
                    "src": "9996:65:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12095
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12091,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12117,
                                "name": "Identifier",
                                "src": "10078:6:48"
                              }
                            ],
                            "id": 12118,
                            "name": "MemberAccess",
                            "src": "10078:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_37_by_1",
                                        "typeString": "int_const 37"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "int_const 37"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3336",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 36",
                                          "value": "36"
                                        },
                                        "id": 12119,
                                        "name": "Literal",
                                        "src": "10091:2:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 12120,
                                        "name": "Literal",
                                        "src": "10096:1:48"
                                      }
                                    ],
                                    "id": 12121,
                                    "name": "BinaryOperation",
                                    "src": "10091:6:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12097,
                                      "type": "uint256",
                                      "value": "_varIntDataLen"
                                    },
                                    "id": 12122,
                                    "name": "Identifier",
                                    "src": "10100:14:48"
                                  }
                                ],
                                "id": 12123,
                                "name": "BinaryOperation",
                                "src": "10091:23:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12100,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12124,
                                "name": "Identifier",
                                "src": "10117:13:48"
                              }
                            ],
                            "id": 12125,
                            "name": "BinaryOperation",
                            "src": "10091:39:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 12126,
                            "name": "Literal",
                            "src": "10132:1:48"
                          }
                        ],
                        "id": 12127,
                        "name": "FunctionCall",
                        "src": "10078:56:48"
                      }
                    ],
                    "id": 12128,
                    "name": "Return",
                    "src": "10071:63:48"
                  }
                ],
                "id": 12129,
                "name": "Block",
                "src": "9852:289:48"
              }
            ],
            "id": 12130,
            "name": "FunctionDefinition",
            "src": "9761:380:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the sequence from the input\n @dev             Sequence is a 4-byte little-endian number\n @param _input    The LEGACY input\n @return          The sequence number (big-endian uint)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractSequenceLegacy",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12156,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12131,
                        "name": "ElementaryTypeName",
                        "src": "10412:5:48"
                      }
                    ],
                    "id": 12132,
                    "name": "VariableDeclaration",
                    "src": "10412:19:48"
                  }
                ],
                "id": 12133,
                "name": "ParameterList",
                "src": "10411:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12156,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 12134,
                        "name": "ElementaryTypeName",
                        "src": "10456:6:48"
                      }
                    ],
                    "id": 12135,
                    "name": "VariableDeclaration",
                    "src": "10456:6:48"
                  }
                ],
                "id": 12136,
                "name": "ParameterList",
                "src": "10455:8:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12138
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_leSeqence",
                          "scope": 12155,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12137,
                            "name": "ElementaryTypeName",
                            "src": "10474:5:48"
                          }
                        ],
                        "id": 12138,
                        "name": "VariableDeclaration",
                        "src": "10474:23:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12130,
                              "type": "function (bytes memory) pure returns (bytes memory)",
                              "value": "extractSequenceLELegacy"
                            },
                            "id": 12139,
                            "name": "Identifier",
                            "src": "10500:23:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12132,
                              "type": "bytes memory",
                              "value": "_input"
                            },
                            "id": 12140,
                            "name": "Identifier",
                            "src": "10524:6:48"
                          }
                        ],
                        "id": 12141,
                        "name": "FunctionCall",
                        "src": "10500:31:48"
                      }
                    ],
                    "id": 12142,
                    "name": "VariableDeclarationStatement",
                    "src": "10474:57:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12144
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_beSequence",
                          "scope": 12155,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12143,
                            "name": "ElementaryTypeName",
                            "src": "10541:5:48"
                          }
                        ],
                        "id": 12144,
                        "name": "VariableDeclaration",
                        "src": "10541:24:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11643,
                              "type": "function (bytes memory) pure returns (bytes memory)",
                              "value": "reverseEndianness"
                            },
                            "id": 12145,
                            "name": "Identifier",
                            "src": "10568:17:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12138,
                              "type": "bytes memory",
                              "value": "_leSeqence"
                            },
                            "id": 12146,
                            "name": "Identifier",
                            "src": "10586:10:48"
                          }
                        ],
                        "id": 12147,
                        "name": "FunctionCall",
                        "src": "10568:29:48"
                      }
                    ],
                    "id": 12148,
                    "name": "VariableDeclarationStatement",
                    "src": "10541:56:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12136
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint32",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint32)",
                              "value": "uint32"
                            },
                            "id": 12149,
                            "name": "ElementaryTypeNameExpression",
                            "src": "10614:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11790,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "bytesToUint"
                                },
                                "id": 12150,
                                "name": "Identifier",
                                "src": "10621:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12144,
                                  "type": "bytes memory",
                                  "value": "_beSequence"
                                },
                                "id": 12151,
                                "name": "Identifier",
                                "src": "10633:11:48"
                              }
                            ],
                            "id": 12152,
                            "name": "FunctionCall",
                            "src": "10621:24:48"
                          }
                        ],
                        "id": 12153,
                        "name": "FunctionCall",
                        "src": "10614:32:48"
                      }
                    ],
                    "id": 12154,
                    "name": "Return",
                    "src": "10607:39:48"
                  }
                ],
                "id": 12155,
                "name": "Block",
                "src": "10464:189:48"
              }
            ],
            "id": 12156,
            "name": "FunctionDefinition",
            "src": "10381:272:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the VarInt-prepended scriptSig from the input in a tx\n @dev             Will return hex\"00\" if passed a witness input\n @param _input    The LEGACY input\n @return          The length-prepended scriptSig",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractScriptSig",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12195,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12157,
                        "name": "ElementaryTypeName",
                        "src": "10941:5:48"
                      }
                    ],
                    "id": 12158,
                    "name": "VariableDeclaration",
                    "src": "10941:19:48"
                  }
                ],
                "id": 12159,
                "name": "ParameterList",
                "src": "10940:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12195,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12160,
                        "name": "ElementaryTypeName",
                        "src": "10985:5:48"
                      }
                    ],
                    "id": 12161,
                    "name": "VariableDeclaration",
                    "src": "10985:12:48"
                  }
                ],
                "id": 12162,
                "name": "ParameterList",
                "src": "10984:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12164
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12194,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12163,
                            "name": "ElementaryTypeName",
                            "src": "11009:7:48"
                          }
                        ],
                        "id": 12164,
                        "name": "VariableDeclaration",
                        "src": "11009:22:48"
                      }
                    ],
                    "id": 12165,
                    "name": "VariableDeclarationStatement",
                    "src": "11009:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12167
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_scriptSigLen",
                          "scope": 12194,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12166,
                            "name": "ElementaryTypeName",
                            "src": "11041:7:48"
                          }
                        ],
                        "id": 12167,
                        "name": "VariableDeclaration",
                        "src": "11041:21:48"
                      }
                    ],
                    "id": 12168,
                    "name": "VariableDeclarationStatement",
                    "src": "11041:21:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12164,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12169,
                                "name": "Identifier",
                                "src": "11073:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12167,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12170,
                                "name": "Identifier",
                                "src": "11089:13:48"
                              }
                            ],
                            "id": 12171,
                            "name": "TupleExpression",
                            "src": "11072:31:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12050,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "extractScriptSigLen"
                                },
                                "id": 12172,
                                "name": "Identifier",
                                "src": "11106:19:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12158,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12173,
                                "name": "Identifier",
                                "src": "11126:6:48"
                              }
                            ],
                            "id": 12174,
                            "name": "FunctionCall",
                            "src": "11106:27:48"
                          }
                        ],
                        "id": 12175,
                        "name": "Assignment",
                        "src": "11072:61:48"
                      }
                    ],
                    "id": 12176,
                    "name": "ExpressionStatement",
                    "src": "11072:61:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5a8a4de2c8904c92ac1068c35465c2d5adf89b19d43265f879508348e387f026",
                                  "typeString": "literal_string \"Bad VarInt in scriptSig\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 12177,
                            "name": "Identifier",
                            "src": "11143:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12164,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12178,
                                "name": "Identifier",
                                "src": "11151:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12179,
                                "name": "Identifier",
                                "src": "11169:11:48"
                              }
                            ],
                            "id": 12180,
                            "name": "BinaryOperation",
                            "src": "11151:29:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "42616420566172496e7420696e20736372697074536967",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Bad VarInt in scriptSig\"",
                              "value": "Bad VarInt in scriptSig"
                            },
                            "id": 12181,
                            "name": "Literal",
                            "src": "11182:25:48"
                          }
                        ],
                        "id": 12182,
                        "name": "FunctionCall",
                        "src": "11143:65:48"
                      }
                    ],
                    "id": 12183,
                    "name": "ExpressionStatement",
                    "src": "11143:65:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12162
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_36_by_1",
                                  "typeString": "int_const 36"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12158,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12184,
                                "name": "Identifier",
                                "src": "11225:6:48"
                              }
                            ],
                            "id": 12185,
                            "name": "MemberAccess",
                            "src": "11225:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3336",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 36",
                              "value": "36"
                            },
                            "id": 12186,
                            "name": "Literal",
                            "src": "11238:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 12187,
                                    "name": "Literal",
                                    "src": "11242:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12164,
                                      "type": "uint256",
                                      "value": "_varIntDataLen"
                                    },
                                    "id": 12188,
                                    "name": "Identifier",
                                    "src": "11246:14:48"
                                  }
                                ],
                                "id": 12189,
                                "name": "BinaryOperation",
                                "src": "11242:18:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12167,
                                  "type": "uint256",
                                  "value": "_scriptSigLen"
                                },
                                "id": 12190,
                                "name": "Identifier",
                                "src": "11263:13:48"
                              }
                            ],
                            "id": 12191,
                            "name": "BinaryOperation",
                            "src": "11242:34:48"
                          }
                        ],
                        "id": 12192,
                        "name": "FunctionCall",
                        "src": "11225:52:48"
                      }
                    ],
                    "id": 12193,
                    "name": "Return",
                    "src": "11218:59:48"
                  }
                ],
                "id": 12194,
                "name": "Block",
                "src": "10999:285:48"
              }
            ],
            "id": 12195,
            "name": "FunctionDefinition",
            "src": "10915:369:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the LE sequence bytes from an input\n @dev             Sequence is used for relative time locks\n @param _input    The WITNESS input\n @return          The sequence bytes (LE uint)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractSequenceLEWitness",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12209,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12196,
                        "name": "ElementaryTypeName",
                        "src": "11631:5:48"
                      }
                    ],
                    "id": 12197,
                    "name": "VariableDeclaration",
                    "src": "11631:19:48"
                  }
                ],
                "id": 12198,
                "name": "ParameterList",
                "src": "11630:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12209,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12199,
                        "name": "ElementaryTypeName",
                        "src": "11675:5:48"
                      }
                    ],
                    "id": 12200,
                    "name": "VariableDeclaration",
                    "src": "11675:12:48"
                  }
                ],
                "id": 12201,
                "name": "ParameterList",
                "src": "11674:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12201
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_37_by_1",
                                  "typeString": "int_const 37"
                                },
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12197,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12202,
                                "name": "Identifier",
                                "src": "11706:6:48"
                              }
                            ],
                            "id": 12203,
                            "name": "MemberAccess",
                            "src": "11706:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3337",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 37",
                              "value": "37"
                            },
                            "id": 12204,
                            "name": "Literal",
                            "src": "11719:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 12205,
                            "name": "Literal",
                            "src": "11723:1:48"
                          }
                        ],
                        "id": 12206,
                        "name": "FunctionCall",
                        "src": "11706:19:48"
                      }
                    ],
                    "id": 12207,
                    "name": "Return",
                    "src": "11699:26:48"
                  }
                ],
                "id": 12208,
                "name": "Block",
                "src": "11689:43:48"
              }
            ],
            "id": 12209,
            "name": "FunctionDefinition",
            "src": "11597:135:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the sequence from the input in a tx\n @dev             Sequence is a 4-byte little-endian number\n @param _input    The WITNESS input\n @return          The sequence number (big-endian uint)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractSequenceWitness",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12235,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12210,
                        "name": "ElementaryTypeName",
                        "src": "12013:5:48"
                      }
                    ],
                    "id": 12211,
                    "name": "VariableDeclaration",
                    "src": "12013:19:48"
                  }
                ],
                "id": 12212,
                "name": "ParameterList",
                "src": "12012:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12235,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 12213,
                        "name": "ElementaryTypeName",
                        "src": "12057:6:48"
                      }
                    ],
                    "id": 12214,
                    "name": "VariableDeclaration",
                    "src": "12057:6:48"
                  }
                ],
                "id": 12215,
                "name": "ParameterList",
                "src": "12056:8:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12217
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_leSeqence",
                          "scope": 12234,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12216,
                            "name": "ElementaryTypeName",
                            "src": "12075:5:48"
                          }
                        ],
                        "id": 12217,
                        "name": "VariableDeclaration",
                        "src": "12075:23:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12209,
                              "type": "function (bytes memory) pure returns (bytes memory)",
                              "value": "extractSequenceLEWitness"
                            },
                            "id": 12218,
                            "name": "Identifier",
                            "src": "12101:24:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12211,
                              "type": "bytes memory",
                              "value": "_input"
                            },
                            "id": 12219,
                            "name": "Identifier",
                            "src": "12126:6:48"
                          }
                        ],
                        "id": 12220,
                        "name": "FunctionCall",
                        "src": "12101:32:48"
                      }
                    ],
                    "id": 12221,
                    "name": "VariableDeclarationStatement",
                    "src": "12075:58:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12223
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_inputeSequence",
                          "scope": 12234,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12222,
                            "name": "ElementaryTypeName",
                            "src": "12143:5:48"
                          }
                        ],
                        "id": 12223,
                        "name": "VariableDeclaration",
                        "src": "12143:28:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11643,
                              "type": "function (bytes memory) pure returns (bytes memory)",
                              "value": "reverseEndianness"
                            },
                            "id": 12224,
                            "name": "Identifier",
                            "src": "12174:17:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12217,
                              "type": "bytes memory",
                              "value": "_leSeqence"
                            },
                            "id": 12225,
                            "name": "Identifier",
                            "src": "12192:10:48"
                          }
                        ],
                        "id": 12226,
                        "name": "FunctionCall",
                        "src": "12174:29:48"
                      }
                    ],
                    "id": 12227,
                    "name": "VariableDeclarationStatement",
                    "src": "12143:60:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12215
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint32",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint32)",
                              "value": "uint32"
                            },
                            "id": 12228,
                            "name": "ElementaryTypeNameExpression",
                            "src": "12220:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11790,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "bytesToUint"
                                },
                                "id": 12229,
                                "name": "Identifier",
                                "src": "12227:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12223,
                                  "type": "bytes memory",
                                  "value": "_inputeSequence"
                                },
                                "id": 12230,
                                "name": "Identifier",
                                "src": "12239:15:48"
                              }
                            ],
                            "id": 12231,
                            "name": "FunctionCall",
                            "src": "12227:28:48"
                          }
                        ],
                        "id": 12232,
                        "name": "FunctionCall",
                        "src": "12220:36:48"
                      }
                    ],
                    "id": 12233,
                    "name": "Return",
                    "src": "12213:43:48"
                  }
                ],
                "id": 12234,
                "name": "Block",
                "src": "12065:198:48"
              }
            ],
            "id": 12235,
            "name": "FunctionDefinition",
            "src": "11981:282:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the outpoint from the input in a tx\n @dev             32-byte tx id with 4-byte index\n @param _input    The input\n @return          The outpoint (LE bytes of prev tx hash + LE bytes of prev tx index)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractOutpoint",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12249,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12236,
                        "name": "ElementaryTypeName",
                        "src": "12549:5:48"
                      }
                    ],
                    "id": 12237,
                    "name": "VariableDeclaration",
                    "src": "12549:19:48"
                  }
                ],
                "id": 12238,
                "name": "ParameterList",
                "src": "12548:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12249,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12239,
                        "name": "ElementaryTypeName",
                        "src": "12593:5:48"
                      }
                    ],
                    "id": 12240,
                    "name": "VariableDeclaration",
                    "src": "12593:12:48"
                  }
                ],
                "id": 12241,
                "name": "ParameterList",
                "src": "12592:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12241
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_36_by_1",
                                  "typeString": "int_const 36"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12237,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12242,
                                "name": "Identifier",
                                "src": "12624:6:48"
                              }
                            ],
                            "id": 12243,
                            "name": "MemberAccess",
                            "src": "12624:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 12244,
                            "name": "Literal",
                            "src": "12637:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3336",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 36",
                              "value": "36"
                            },
                            "id": 12245,
                            "name": "Literal",
                            "src": "12640:2:48"
                          }
                        ],
                        "id": 12246,
                        "name": "FunctionCall",
                        "src": "12624:19:48"
                      }
                    ],
                    "id": 12247,
                    "name": "Return",
                    "src": "12617:26:48"
                  }
                ],
                "id": 12248,
                "name": "Block",
                "src": "12607:43:48"
              }
            ],
            "id": 12249,
            "name": "FunctionDefinition",
            "src": "12524:126:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the outpoint tx id from an input\n @dev             32-byte tx id\n @param _input    The input\n @return          The tx id (little-endian bytes)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractInputTxIdLE",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12265,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12250,
                        "name": "ElementaryTypeName",
                        "src": "12882:5:48"
                      }
                    ],
                    "id": 12251,
                    "name": "VariableDeclaration",
                    "src": "12882:19:48"
                  }
                ],
                "id": 12252,
                "name": "ParameterList",
                "src": "12881:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12265,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 12253,
                        "name": "ElementaryTypeName",
                        "src": "12926:7:48"
                      }
                    ],
                    "id": 12254,
                    "name": "VariableDeclaration",
                    "src": "12926:7:48"
                  }
                ],
                "id": 12255,
                "name": "ParameterList",
                "src": "12925:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12255
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "toBytes32",
                              "referencedDeclaration": 13400,
                              "type": "function (bytes memory) pure returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12251,
                                          "type": "bytes memory",
                                          "value": "_input"
                                        },
                                        "id": 12256,
                                        "name": "Identifier",
                                        "src": "12952:6:48"
                                      }
                                    ],
                                    "id": 12257,
                                    "name": "MemberAccess",
                                    "src": "12952:12:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 12258,
                                    "name": "Literal",
                                    "src": "12965:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 12259,
                                    "name": "Literal",
                                    "src": "12968:2:48"
                                  }
                                ],
                                "id": 12260,
                                "name": "FunctionCall",
                                "src": "12952:19:48"
                              }
                            ],
                            "id": 12261,
                            "name": "MemberAccess",
                            "src": "12952:29:48"
                          }
                        ],
                        "id": 12262,
                        "name": "FunctionCall",
                        "src": "12952:31:48"
                      }
                    ],
                    "id": 12263,
                    "name": "Return",
                    "src": "12945:38:48"
                  }
                ],
                "id": 12264,
                "name": "Block",
                "src": "12935:55:48"
              }
            ],
            "id": 12265,
            "name": "FunctionDefinition",
            "src": "12854:136:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the LE tx input index from the input in a tx\n @dev             4-byte tx index\n @param _input    The input\n @return          The tx index (little-endian bytes)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractTxIndexLE",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_input",
                      "scope": 12279,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12266,
                        "name": "ElementaryTypeName",
                        "src": "13237:5:48"
                      }
                    ],
                    "id": 12267,
                    "name": "VariableDeclaration",
                    "src": "13237:19:48"
                  }
                ],
                "id": 12268,
                "name": "ParameterList",
                "src": "13236:21:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12279,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12269,
                        "name": "ElementaryTypeName",
                        "src": "13281:5:48"
                      }
                    ],
                    "id": 12270,
                    "name": "VariableDeclaration",
                    "src": "13281:12:48"
                  }
                ],
                "id": 12271,
                "name": "ParameterList",
                "src": "13280:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12271
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12267,
                                  "type": "bytes memory",
                                  "value": "_input"
                                },
                                "id": 12272,
                                "name": "Identifier",
                                "src": "13312:6:48"
                              }
                            ],
                            "id": 12273,
                            "name": "MemberAccess",
                            "src": "13312:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 12274,
                            "name": "Literal",
                            "src": "13325:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 12275,
                            "name": "Literal",
                            "src": "13329:1:48"
                          }
                        ],
                        "id": 12276,
                        "name": "FunctionCall",
                        "src": "13312:19:48"
                      }
                    ],
                    "id": 12277,
                    "name": "Return",
                    "src": "13305:26:48"
                  }
                ],
                "id": 12278,
                "name": "Block",
                "src": "13295:43:48"
              }
            ],
            "id": 12279,
            "name": "FunctionDefinition",
            "src": "13211:127:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Determines the length of an output\n @dev             Works with any properly formatted output\n @param _output   The output\n @return          The length indicated by the prefix, error if invalid length",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "determineOutputLength",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_output",
                      "scope": 12335,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12280,
                        "name": "ElementaryTypeName",
                        "src": "13674:5:48"
                      }
                    ],
                    "id": 12281,
                    "name": "VariableDeclaration",
                    "src": "13674:20:48"
                  }
                ],
                "id": 12282,
                "name": "ParameterList",
                "src": "13673:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12335,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12283,
                        "name": "ElementaryTypeName",
                        "src": "13719:7:48"
                      }
                    ],
                    "id": 12284,
                    "name": "VariableDeclaration",
                    "src": "13719:7:48"
                  }
                ],
                "id": 12285,
                "name": "ParameterList",
                "src": "13718:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12281,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12286,
                                "name": "Identifier",
                                "src": "13742:7:48"
                              }
                            ],
                            "id": 12287,
                            "name": "MemberAccess",
                            "src": "13742:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "39",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 9",
                              "value": "9"
                            },
                            "id": 12288,
                            "name": "Literal",
                            "src": "13759:1:48"
                          }
                        ],
                        "id": 12289,
                        "name": "BinaryOperation",
                        "src": "13742:18:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12285
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12290,
                                "name": "Identifier",
                                "src": "13783:11:48"
                              }
                            ],
                            "id": 12291,
                            "name": "Return",
                            "src": "13776:18:48"
                          }
                        ],
                        "id": 12292,
                        "name": "Block",
                        "src": "13762:43:48"
                      }
                    ],
                    "id": 12293,
                    "name": "IfStatement",
                    "src": "13738:67:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12295
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_afterValue",
                          "scope": 12334,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12294,
                            "name": "ElementaryTypeName",
                            "src": "13814:5:48"
                          }
                        ],
                        "id": 12295,
                        "name": "VariableDeclaration",
                        "src": "13814:24:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12281,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12296,
                                "name": "Identifier",
                                "src": "13841:7:48"
                              }
                            ],
                            "id": 12297,
                            "name": "MemberAccess",
                            "src": "13841:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "38",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 8",
                              "value": "8"
                            },
                            "id": 12298,
                            "name": "Literal",
                            "src": "13855:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12281,
                                      "type": "bytes memory",
                                      "value": "_output"
                                    },
                                    "id": 12299,
                                    "name": "Identifier",
                                    "src": "13858:7:48"
                                  }
                                ],
                                "id": 12300,
                                "name": "MemberAccess",
                                "src": "13858:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "38",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "8"
                                },
                                "id": 12301,
                                "name": "Literal",
                                "src": "13875:1:48"
                              }
                            ],
                            "id": 12302,
                            "name": "BinaryOperation",
                            "src": "13858:18:48"
                          }
                        ],
                        "id": 12303,
                        "name": "FunctionCall",
                        "src": "13841:36:48"
                      }
                    ],
                    "id": 12304,
                    "name": "VariableDeclarationStatement",
                    "src": "13814:63:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12306
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12334,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12305,
                            "name": "ElementaryTypeName",
                            "src": "13888:7:48"
                          }
                        ],
                        "id": 12306,
                        "name": "VariableDeclaration",
                        "src": "13888:22:48"
                      }
                    ],
                    "id": 12307,
                    "name": "VariableDeclarationStatement",
                    "src": "13888:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12309
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_scriptPubkeyLength",
                          "scope": 12334,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12308,
                            "name": "ElementaryTypeName",
                            "src": "13920:7:48"
                          }
                        ],
                        "id": 12309,
                        "name": "VariableDeclaration",
                        "src": "13920:27:48"
                      }
                    ],
                    "id": 12310,
                    "name": "VariableDeclarationStatement",
                    "src": "13920:27:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12306,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12311,
                                "name": "Identifier",
                                "src": "13958:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12309,
                                  "type": "uint256",
                                  "value": "_scriptPubkeyLength"
                                },
                                "id": 12312,
                                "name": "Identifier",
                                "src": "13974:19:48"
                              }
                            ],
                            "id": 12313,
                            "name": "TupleExpression",
                            "src": "13957:37:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11599,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "parseVarInt"
                                },
                                "id": 12314,
                                "name": "Identifier",
                                "src": "13997:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12295,
                                  "type": "bytes memory",
                                  "value": "_afterValue"
                                },
                                "id": 12315,
                                "name": "Identifier",
                                "src": "14009:11:48"
                              }
                            ],
                            "id": 12316,
                            "name": "FunctionCall",
                            "src": "13997:24:48"
                          }
                        ],
                        "id": 12317,
                        "name": "Assignment",
                        "src": "13957:64:48"
                      }
                    ],
                    "id": 12318,
                    "name": "ExpressionStatement",
                    "src": "13957:64:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12306,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 12319,
                            "name": "Identifier",
                            "src": "14036:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11499,
                              "type": "uint256",
                              "value": "ERR_BAD_ARG"
                            },
                            "id": 12320,
                            "name": "Identifier",
                            "src": "14054:11:48"
                          }
                        ],
                        "id": 12321,
                        "name": "BinaryOperation",
                        "src": "14036:29:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12285
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12322,
                                "name": "Identifier",
                                "src": "14088:11:48"
                              }
                            ],
                            "id": 12323,
                            "name": "Return",
                            "src": "14081:18:48"
                          }
                        ],
                        "id": 12324,
                        "name": "Block",
                        "src": "14067:43:48"
                      }
                    ],
                    "id": 12325,
                    "name": "IfStatement",
                    "src": "14032:78:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12285
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_9_by_1",
                                    "typeString": "int_const 9"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "int_const 9"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 12326,
                                    "name": "Literal",
                                    "src": "14174:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 12327,
                                    "name": "Literal",
                                    "src": "14178:1:48"
                                  }
                                ],
                                "id": 12328,
                                "name": "BinaryOperation",
                                "src": "14174:5:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12306,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12329,
                                "name": "Identifier",
                                "src": "14182:14:48"
                              }
                            ],
                            "id": 12330,
                            "name": "BinaryOperation",
                            "src": "14174:22:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12309,
                              "type": "uint256",
                              "value": "_scriptPubkeyLength"
                            },
                            "id": 12331,
                            "name": "Identifier",
                            "src": "14199:19:48"
                          }
                        ],
                        "id": 12332,
                        "name": "BinaryOperation",
                        "src": "14174:44:48"
                      }
                    ],
                    "id": 12333,
                    "name": "Return",
                    "src": "14167:51:48"
                  }
                ],
                "id": 12334,
                "name": "Block",
                "src": "13728:497:48"
              }
            ],
            "id": 12335,
            "name": "FunctionDefinition",
            "src": "13643:582:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the output at a given index in the TxOuts vector\n @dev             Iterates over the vout. If you need to extract multiple, write a custom function\n @param _vout     The _vout to extract from\n @param _index    The 0-indexed location of the output to extract\n @return          The specified output",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractOutputAtIndex",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vout",
                      "scope": 12456,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12336,
                        "name": "ElementaryTypeName",
                        "src": "14620:5:48"
                      }
                    ],
                    "id": 12337,
                    "name": "VariableDeclaration",
                    "src": "14620:18:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_index",
                      "scope": 12456,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12338,
                        "name": "ElementaryTypeName",
                        "src": "14640:7:48"
                      }
                    ],
                    "id": 12339,
                    "name": "VariableDeclaration",
                    "src": "14640:14:48"
                  }
                ],
                "id": 12340,
                "name": "ParameterList",
                "src": "14619:36:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12456,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12341,
                        "name": "ElementaryTypeName",
                        "src": "14679:5:48"
                      }
                    ],
                    "id": 12342,
                    "name": "VariableDeclaration",
                    "src": "14679:12:48"
                  }
                ],
                "id": 12343,
                "name": "ParameterList",
                "src": "14678:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12345
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12455,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12344,
                            "name": "ElementaryTypeName",
                            "src": "14703:7:48"
                          }
                        ],
                        "id": 12345,
                        "name": "VariableDeclaration",
                        "src": "14703:22:48"
                      }
                    ],
                    "id": 12346,
                    "name": "VariableDeclarationStatement",
                    "src": "14703:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12348
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_nOuts",
                          "scope": 12455,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12347,
                            "name": "ElementaryTypeName",
                            "src": "14735:7:48"
                          }
                        ],
                        "id": 12348,
                        "name": "VariableDeclaration",
                        "src": "14735:14:48"
                      }
                    ],
                    "id": 12349,
                    "name": "VariableDeclarationStatement",
                    "src": "14735:14:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12345,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12350,
                                "name": "Identifier",
                                "src": "14761:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12348,
                                  "type": "uint256",
                                  "value": "_nOuts"
                                },
                                "id": 12351,
                                "name": "Identifier",
                                "src": "14777:6:48"
                              }
                            ],
                            "id": 12352,
                            "name": "TupleExpression",
                            "src": "14760:24:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11599,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "parseVarInt"
                                },
                                "id": 12353,
                                "name": "Identifier",
                                "src": "14787:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12337,
                                  "type": "bytes memory",
                                  "value": "_vout"
                                },
                                "id": 12354,
                                "name": "Identifier",
                                "src": "14799:5:48"
                              }
                            ],
                            "id": 12355,
                            "name": "FunctionCall",
                            "src": "14787:18:48"
                          }
                        ],
                        "id": 12356,
                        "name": "Assignment",
                        "src": "14760:45:48"
                      }
                    ],
                    "id": 12357,
                    "name": "ExpressionStatement",
                    "src": "14760:45:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_44f1d85595cd9e7bca9d9a2d6049b01f75f753890836287504890b72b66f7afd",
                                  "typeString": "literal_string \"Read overrun during VarInt parsing\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 12358,
                            "name": "Identifier",
                            "src": "14815:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12345,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12359,
                                "name": "Identifier",
                                "src": "14823:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12360,
                                "name": "Identifier",
                                "src": "14841:11:48"
                              }
                            ],
                            "id": 12361,
                            "name": "BinaryOperation",
                            "src": "14823:29:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "52656164206f76657272756e20647572696e6720566172496e742070617273696e67",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Read overrun during VarInt parsing\"",
                              "value": "Read overrun during VarInt parsing"
                            },
                            "id": 12362,
                            "name": "Literal",
                            "src": "14854:36:48"
                          }
                        ],
                        "id": 12363,
                        "name": "FunctionCall",
                        "src": "14815:76:48"
                      }
                    ],
                    "id": 12364,
                    "name": "ExpressionStatement",
                    "src": "14815:76:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e068e1fd8aa77bf358e8fdf7376e327a6c370f4f6d3627d99c298841a0dd1ff4",
                                  "typeString": "literal_string \"Vout read overrun\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 12365,
                            "name": "Identifier",
                            "src": "14901:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12339,
                                  "type": "uint256",
                                  "value": "_index"
                                },
                                "id": 12366,
                                "name": "Identifier",
                                "src": "14909:6:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12348,
                                  "type": "uint256",
                                  "value": "_nOuts"
                                },
                                "id": 12367,
                                "name": "Identifier",
                                "src": "14918:6:48"
                              }
                            ],
                            "id": 12368,
                            "name": "BinaryOperation",
                            "src": "14909:15:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "566f75742072656164206f76657272756e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Vout read overrun\"",
                              "value": "Vout read overrun"
                            },
                            "id": 12369,
                            "name": "Literal",
                            "src": "14926:19:48"
                          }
                        ],
                        "id": 12370,
                        "name": "FunctionCall",
                        "src": "14901:45:48"
                      }
                    ],
                    "id": 12371,
                    "name": "ExpressionStatement",
                    "src": "14901:45:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12373
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_remaining",
                          "scope": 12455,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12372,
                            "name": "ElementaryTypeName",
                            "src": "14957:5:48"
                          }
                        ],
                        "id": 12373,
                        "name": "VariableDeclaration",
                        "src": "14957:23:48"
                      }
                    ],
                    "id": 12374,
                    "name": "VariableDeclarationStatement",
                    "src": "14957:23:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12376
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_len",
                          "scope": 12455,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12375,
                            "name": "ElementaryTypeName",
                            "src": "14991:7:48"
                          }
                        ],
                        "id": 12376,
                        "name": "VariableDeclaration",
                        "src": "14991:12:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 12377,
                        "name": "Literal",
                        "src": "15006:1:48"
                      }
                    ],
                    "id": 12378,
                    "name": "VariableDeclarationStatement",
                    "src": "14991:16:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12380
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_offset",
                          "scope": 12455,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12379,
                            "name": "ElementaryTypeName",
                            "src": "15017:7:48"
                          }
                        ],
                        "id": 12380,
                        "name": "VariableDeclaration",
                        "src": "15017:15:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 12381,
                            "name": "Literal",
                            "src": "15035:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12345,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 12382,
                            "name": "Identifier",
                            "src": "15039:14:48"
                          }
                        ],
                        "id": 12383,
                        "name": "BinaryOperation",
                        "src": "15035:18:48"
                      }
                    ],
                    "id": 12384,
                    "name": "VariableDeclarationStatement",
                    "src": "15017:36:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            12386
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "_i",
                              "scope": 12424,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 12385,
                                "name": "ElementaryTypeName",
                                "src": "15069:7:48"
                              }
                            ],
                            "id": 12386,
                            "name": "VariableDeclaration",
                            "src": "15069:10:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 12387,
                            "name": "Literal",
                            "src": "15082:1:48"
                          }
                        ],
                        "id": 12388,
                        "name": "VariableDeclarationStatement",
                        "src": "15069:14:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12386,
                              "type": "uint256",
                              "value": "_i"
                            },
                            "id": 12389,
                            "name": "Identifier",
                            "src": "15085:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12339,
                              "type": "uint256",
                              "value": "_index"
                            },
                            "id": 12390,
                            "name": "Identifier",
                            "src": "15090:6:48"
                          }
                        ],
                        "id": 12391,
                        "name": "BinaryOperation",
                        "src": "15085:11:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12386,
                                  "type": "uint256",
                                  "value": "_i"
                                },
                                "id": 12392,
                                "name": "Identifier",
                                "src": "15098:2:48"
                              }
                            ],
                            "id": 12393,
                            "name": "UnaryOperation",
                            "src": "15098:5:48"
                          }
                        ],
                        "id": 12394,
                        "name": "ExpressionStatement",
                        "src": "15098:5:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12373,
                                      "type": "bytes memory",
                                      "value": "_remaining"
                                    },
                                    "id": 12395,
                                    "name": "Identifier",
                                    "src": "15119:10:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "slice",
                                          "referencedDeclaration": 13281,
                                          "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12337,
                                              "type": "bytes memory",
                                              "value": "_vout"
                                            },
                                            "id": 12396,
                                            "name": "Identifier",
                                            "src": "15132:5:48"
                                          }
                                        ],
                                        "id": 12397,
                                        "name": "MemberAccess",
                                        "src": "15132:11:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12380,
                                          "type": "uint256",
                                          "value": "_offset"
                                        },
                                        "id": 12398,
                                        "name": "Identifier",
                                        "src": "15144:7:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "length",
                                              "referencedDeclaration": null,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12337,
                                                  "type": "bytes memory",
                                                  "value": "_vout"
                                                },
                                                "id": 12399,
                                                "name": "Identifier",
                                                "src": "15153:5:48"
                                              }
                                            ],
                                            "id": 12400,
                                            "name": "MemberAccess",
                                            "src": "15153:12:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12380,
                                              "type": "uint256",
                                              "value": "_offset"
                                            },
                                            "id": 12401,
                                            "name": "Identifier",
                                            "src": "15168:7:48"
                                          }
                                        ],
                                        "id": 12402,
                                        "name": "BinaryOperation",
                                        "src": "15153:22:48"
                                      }
                                    ],
                                    "id": 12403,
                                    "name": "FunctionCall",
                                    "src": "15132:44:48"
                                  }
                                ],
                                "id": 12404,
                                "name": "Assignment",
                                "src": "15119:57:48"
                              }
                            ],
                            "id": 12405,
                            "name": "ExpressionStatement",
                            "src": "15119:57:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12376,
                                      "type": "uint256",
                                      "value": "_len"
                                    },
                                    "id": 12406,
                                    "name": "Identifier",
                                    "src": "15190:4:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12335,
                                          "type": "function (bytes memory) pure returns (uint256)",
                                          "value": "determineOutputLength"
                                        },
                                        "id": 12407,
                                        "name": "Identifier",
                                        "src": "15197:21:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12373,
                                          "type": "bytes memory",
                                          "value": "_remaining"
                                        },
                                        "id": 12408,
                                        "name": "Identifier",
                                        "src": "15219:10:48"
                                      }
                                    ],
                                    "id": 12409,
                                    "name": "FunctionCall",
                                    "src": "15197:33:48"
                                  }
                                ],
                                "id": 12410,
                                "name": "Assignment",
                                "src": "15190:40:48"
                              }
                            ],
                            "id": 12411,
                            "name": "ExpressionStatement",
                            "src": "15190:40:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_48d2595e6fa64d5f857e2d78dbcd21416ced754565dce896b9a2c1152aba80ab",
                                          "typeString": "literal_string \"Bad VarInt in scriptPubkey\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        18363,
                                        18364
                                      ],
                                      "referencedDeclaration": 18364,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 12412,
                                    "name": "Identifier",
                                    "src": "15244:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "!=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12376,
                                          "type": "uint256",
                                          "value": "_len"
                                        },
                                        "id": 12413,
                                        "name": "Identifier",
                                        "src": "15252:4:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11499,
                                          "type": "uint256",
                                          "value": "ERR_BAD_ARG"
                                        },
                                        "id": 12414,
                                        "name": "Identifier",
                                        "src": "15260:11:48"
                                      }
                                    ],
                                    "id": 12415,
                                    "name": "BinaryOperation",
                                    "src": "15252:19:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "42616420566172496e7420696e207363726970745075626b6579",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "string",
                                      "type": "literal_string \"Bad VarInt in scriptPubkey\"",
                                      "value": "Bad VarInt in scriptPubkey"
                                    },
                                    "id": 12416,
                                    "name": "Literal",
                                    "src": "15273:28:48"
                                  }
                                ],
                                "id": 12417,
                                "name": "FunctionCall",
                                "src": "15244:58:48"
                              }
                            ],
                            "id": 12418,
                            "name": "ExpressionStatement",
                            "src": "15244:58:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12380,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12419,
                                    "name": "Identifier",
                                    "src": "15316:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12376,
                                      "type": "uint256",
                                      "value": "_len"
                                    },
                                    "id": 12420,
                                    "name": "Identifier",
                                    "src": "15327:4:48"
                                  }
                                ],
                                "id": 12421,
                                "name": "Assignment",
                                "src": "15316:15:48"
                              }
                            ],
                            "id": 12422,
                            "name": "ExpressionStatement",
                            "src": "15316:15:48"
                          }
                        ],
                        "id": 12423,
                        "name": "Block",
                        "src": "15105:237:48"
                      }
                    ],
                    "id": 12424,
                    "name": "ForStatement",
                    "src": "15064:278:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12373,
                              "type": "bytes memory",
                              "value": "_remaining"
                            },
                            "id": 12425,
                            "name": "Identifier",
                            "src": "15352:10:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "slice",
                                  "referencedDeclaration": 13281,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12337,
                                      "type": "bytes memory",
                                      "value": "_vout"
                                    },
                                    "id": 12426,
                                    "name": "Identifier",
                                    "src": "15365:5:48"
                                  }
                                ],
                                "id": 12427,
                                "name": "MemberAccess",
                                "src": "15365:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12380,
                                  "type": "uint256",
                                  "value": "_offset"
                                },
                                "id": 12428,
                                "name": "Identifier",
                                "src": "15377:7:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12337,
                                          "type": "bytes memory",
                                          "value": "_vout"
                                        },
                                        "id": 12429,
                                        "name": "Identifier",
                                        "src": "15386:5:48"
                                      }
                                    ],
                                    "id": 12430,
                                    "name": "MemberAccess",
                                    "src": "15386:12:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12380,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12431,
                                    "name": "Identifier",
                                    "src": "15401:7:48"
                                  }
                                ],
                                "id": 12432,
                                "name": "BinaryOperation",
                                "src": "15386:22:48"
                              }
                            ],
                            "id": 12433,
                            "name": "FunctionCall",
                            "src": "15365:44:48"
                          }
                        ],
                        "id": 12434,
                        "name": "Assignment",
                        "src": "15352:57:48"
                      }
                    ],
                    "id": 12435,
                    "name": "ExpressionStatement",
                    "src": "15352:57:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12376,
                              "type": "uint256",
                              "value": "_len"
                            },
                            "id": 12436,
                            "name": "Identifier",
                            "src": "15419:4:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12335,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "determineOutputLength"
                                },
                                "id": 12437,
                                "name": "Identifier",
                                "src": "15426:21:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12373,
                                  "type": "bytes memory",
                                  "value": "_remaining"
                                },
                                "id": 12438,
                                "name": "Identifier",
                                "src": "15448:10:48"
                              }
                            ],
                            "id": 12439,
                            "name": "FunctionCall",
                            "src": "15426:33:48"
                          }
                        ],
                        "id": 12440,
                        "name": "Assignment",
                        "src": "15419:40:48"
                      }
                    ],
                    "id": 12441,
                    "name": "ExpressionStatement",
                    "src": "15419:40:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_48d2595e6fa64d5f857e2d78dbcd21416ced754565dce896b9a2c1152aba80ab",
                                  "typeString": "literal_string \"Bad VarInt in scriptPubkey\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 12442,
                            "name": "Identifier",
                            "src": "15469:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12376,
                                  "type": "uint256",
                                  "value": "_len"
                                },
                                "id": 12443,
                                "name": "Identifier",
                                "src": "15477:4:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12444,
                                "name": "Identifier",
                                "src": "15485:11:48"
                              }
                            ],
                            "id": 12445,
                            "name": "BinaryOperation",
                            "src": "15477:19:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "42616420566172496e7420696e207363726970745075626b6579",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Bad VarInt in scriptPubkey\"",
                              "value": "Bad VarInt in scriptPubkey"
                            },
                            "id": 12446,
                            "name": "Literal",
                            "src": "15498:28:48"
                          }
                        ],
                        "id": 12447,
                        "name": "FunctionCall",
                        "src": "15469:58:48"
                      }
                    ],
                    "id": 12448,
                    "name": "ExpressionStatement",
                    "src": "15469:58:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12343
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12337,
                                  "type": "bytes memory",
                                  "value": "_vout"
                                },
                                "id": 12449,
                                "name": "Identifier",
                                "src": "15544:5:48"
                              }
                            ],
                            "id": 12450,
                            "name": "MemberAccess",
                            "src": "15544:11:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12380,
                              "type": "uint256",
                              "value": "_offset"
                            },
                            "id": 12451,
                            "name": "Identifier",
                            "src": "15556:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12376,
                              "type": "uint256",
                              "value": "_len"
                            },
                            "id": 12452,
                            "name": "Identifier",
                            "src": "15565:4:48"
                          }
                        ],
                        "id": 12453,
                        "name": "FunctionCall",
                        "src": "15544:26:48"
                      }
                    ],
                    "id": 12454,
                    "name": "Return",
                    "src": "15537:33:48"
                  }
                ],
                "id": 12455,
                "name": "Block",
                "src": "14693:884:48"
              }
            ],
            "id": 12456,
            "name": "FunctionDefinition",
            "src": "14590:987:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the value bytes from the output in a tx\n @dev             Value is an 8-byte little-endian number\n @param _output   The output\n @return          The output value as LE bytes",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractValueLE",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_output",
                      "scope": 12470,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12457,
                        "name": "ElementaryTypeName",
                        "src": "15836:5:48"
                      }
                    ],
                    "id": 12458,
                    "name": "VariableDeclaration",
                    "src": "15836:20:48"
                  }
                ],
                "id": 12459,
                "name": "ParameterList",
                "src": "15835:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12470,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12460,
                        "name": "ElementaryTypeName",
                        "src": "15881:5:48"
                      }
                    ],
                    "id": 12461,
                    "name": "VariableDeclaration",
                    "src": "15881:12:48"
                  }
                ],
                "id": 12462,
                "name": "ParameterList",
                "src": "15880:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12462
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12458,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12463,
                                "name": "Identifier",
                                "src": "15912:7:48"
                              }
                            ],
                            "id": 12464,
                            "name": "MemberAccess",
                            "src": "15912:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 12465,
                            "name": "Literal",
                            "src": "15926:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "38",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 8",
                              "value": "8"
                            },
                            "id": 12466,
                            "name": "Literal",
                            "src": "15929:1:48"
                          }
                        ],
                        "id": 12467,
                        "name": "FunctionCall",
                        "src": "15912:19:48"
                      }
                    ],
                    "id": 12468,
                    "name": "Return",
                    "src": "15905:26:48"
                  }
                ],
                "id": 12469,
                "name": "Block",
                "src": "15895:43:48"
              }
            ],
            "id": 12470,
            "name": "FunctionDefinition",
            "src": "15812:126:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the value from the output in a tx\n @dev             Value is an 8-byte little-endian number\n @param _output   The output\n @return          The output value",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractValue",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_output",
                      "scope": 12496,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12471,
                        "name": "ElementaryTypeName",
                        "src": "16177:5:48"
                      }
                    ],
                    "id": 12472,
                    "name": "VariableDeclaration",
                    "src": "16177:20:48"
                  }
                ],
                "id": 12473,
                "name": "ParameterList",
                "src": "16176:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12496,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 12474,
                        "name": "ElementaryTypeName",
                        "src": "16222:6:48"
                      }
                    ],
                    "id": 12475,
                    "name": "VariableDeclaration",
                    "src": "16222:6:48"
                  }
                ],
                "id": 12476,
                "name": "ParameterList",
                "src": "16221:8:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12478
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_leValue",
                          "scope": 12495,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12477,
                            "name": "ElementaryTypeName",
                            "src": "16240:5:48"
                          }
                        ],
                        "id": 12478,
                        "name": "VariableDeclaration",
                        "src": "16240:21:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12470,
                              "type": "function (bytes memory) pure returns (bytes memory)",
                              "value": "extractValueLE"
                            },
                            "id": 12479,
                            "name": "Identifier",
                            "src": "16264:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12472,
                              "type": "bytes memory",
                              "value": "_output"
                            },
                            "id": 12480,
                            "name": "Identifier",
                            "src": "16279:7:48"
                          }
                        ],
                        "id": 12481,
                        "name": "FunctionCall",
                        "src": "16264:23:48"
                      }
                    ],
                    "id": 12482,
                    "name": "VariableDeclarationStatement",
                    "src": "16240:47:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12484
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_beValue",
                          "scope": 12495,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12483,
                            "name": "ElementaryTypeName",
                            "src": "16297:5:48"
                          }
                        ],
                        "id": 12484,
                        "name": "VariableDeclaration",
                        "src": "16297:21:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11643,
                              "type": "function (bytes memory) pure returns (bytes memory)",
                              "value": "reverseEndianness"
                            },
                            "id": 12485,
                            "name": "Identifier",
                            "src": "16321:17:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12478,
                              "type": "bytes memory",
                              "value": "_leValue"
                            },
                            "id": 12486,
                            "name": "Identifier",
                            "src": "16339:8:48"
                          }
                        ],
                        "id": 12487,
                        "name": "FunctionCall",
                        "src": "16321:27:48"
                      }
                    ],
                    "id": 12488,
                    "name": "VariableDeclarationStatement",
                    "src": "16297:51:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12476
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint64",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint64)",
                              "value": "uint64"
                            },
                            "id": 12489,
                            "name": "ElementaryTypeNameExpression",
                            "src": "16365:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11790,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "bytesToUint"
                                },
                                "id": 12490,
                                "name": "Identifier",
                                "src": "16372:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12484,
                                  "type": "bytes memory",
                                  "value": "_beValue"
                                },
                                "id": 12491,
                                "name": "Identifier",
                                "src": "16384:8:48"
                              }
                            ],
                            "id": 12492,
                            "name": "FunctionCall",
                            "src": "16372:21:48"
                          }
                        ],
                        "id": 12493,
                        "name": "FunctionCall",
                        "src": "16365:29:48"
                      }
                    ],
                    "id": 12494,
                    "name": "Return",
                    "src": "16358:36:48"
                  }
                ],
                "id": 12495,
                "name": "Block",
                "src": "16230:171:48"
              }
            ],
            "id": 12496,
            "name": "FunctionDefinition",
            "src": "16155:246:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the data from an op return output\n @dev             Returns hex\"\" if no data or not an op return\n @param _output   The output\n @return          Any data contained in the opreturn output, null if not an op return",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractOpReturnData",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_output",
                      "scope": 12533,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12497,
                        "name": "ElementaryTypeName",
                        "src": "16703:5:48"
                      }
                    ],
                    "id": 12498,
                    "name": "VariableDeclaration",
                    "src": "16703:20:48"
                  }
                ],
                "id": 12499,
                "name": "ParameterList",
                "src": "16702:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12533,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12500,
                        "name": "ElementaryTypeName",
                        "src": "16748:5:48"
                      }
                    ],
                    "id": 12501,
                    "name": "VariableDeclaration",
                    "src": "16748:12:48"
                  }
                ],
                "id": 12502,
                "name": "ParameterList",
                "src": "16747:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_9_by_1",
                                      "typeString": "int_const 9"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "keccak256Slice",
                                  "referencedDeclaration": 13431,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12498,
                                      "type": "bytes memory",
                                      "value": "_output"
                                    },
                                    "id": 12503,
                                    "name": "Identifier",
                                    "src": "16776:7:48"
                                  }
                                ],
                                "id": 12504,
                                "name": "MemberAccess",
                                "src": "16776:22:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "39",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 9",
                                  "value": "9"
                                },
                                "id": 12505,
                                "name": "Literal",
                                "src": "16799:1:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 12506,
                                "name": "Literal",
                                "src": "16802:1:48"
                              }
                            ],
                            "id": 12507,
                            "name": "FunctionCall",
                            "src": "16776:28:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_b31d742db54d6961c6b346af2c9c4c495eb8aff2ebf6b3699e052d1cef5cf50b",
                                      "typeString": "literal_string \"j\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18354,
                                  "type": "function (bytes memory) pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 12508,
                                "name": "Identifier",
                                "src": "16808:9:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "6a",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"j\"",
                                  "value": "j"
                                },
                                "id": 12509,
                                "name": "Literal",
                                "src": "16818:7:48"
                              }
                            ],
                            "id": 12510,
                            "name": "FunctionCall",
                            "src": "16808:18:48"
                          }
                        ],
                        "id": 12511,
                        "name": "BinaryOperation",
                        "src": "16776:50:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12502
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"\"",
                                  "value": ""
                                },
                                "id": 12512,
                                "name": "Literal",
                                "src": "16849:5:48"
                              }
                            ],
                            "id": 12513,
                            "name": "Return",
                            "src": "16842:12:48"
                          }
                        ],
                        "id": 12514,
                        "name": "Block",
                        "src": "16828:37:48"
                      }
                    ],
                    "id": 12515,
                    "name": "IfStatement",
                    "src": "16772:93:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12517
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_dataLen",
                          "scope": 12532,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12516,
                            "name": "ElementaryTypeName",
                            "src": "16874:5:48"
                          }
                        ],
                        "id": 12517,
                        "name": "VariableDeclaration",
                        "src": "16874:21:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12498,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12518,
                                "name": "Identifier",
                                "src": "16898:7:48"
                              }
                            ],
                            "id": 12519,
                            "name": "MemberAccess",
                            "src": "16898:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3130",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 10",
                              "value": "10"
                            },
                            "id": 12520,
                            "name": "Literal",
                            "src": "16912:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 12521,
                            "name": "Literal",
                            "src": "16916:1:48"
                          }
                        ],
                        "id": 12522,
                        "name": "FunctionCall",
                        "src": "16898:20:48"
                      }
                    ],
                    "id": 12523,
                    "name": "VariableDeclarationStatement",
                    "src": "16874:44:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12502
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_11_by_1",
                                  "typeString": "int_const 11"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12498,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12524,
                                "name": "Identifier",
                                "src": "16935:7:48"
                              }
                            ],
                            "id": 12525,
                            "name": "MemberAccess",
                            "src": "16935:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3131",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 11",
                              "value": "11"
                            },
                            "id": 12526,
                            "name": "Literal",
                            "src": "16949:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11790,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "bytesToUint"
                                },
                                "id": 12527,
                                "name": "Identifier",
                                "src": "16953:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12517,
                                  "type": "bytes memory",
                                  "value": "_dataLen"
                                },
                                "id": 12528,
                                "name": "Identifier",
                                "src": "16965:8:48"
                              }
                            ],
                            "id": 12529,
                            "name": "FunctionCall",
                            "src": "16953:21:48"
                          }
                        ],
                        "id": 12530,
                        "name": "FunctionCall",
                        "src": "16935:40:48"
                      }
                    ],
                    "id": 12531,
                    "name": "Return",
                    "src": "16928:47:48"
                  }
                ],
                "id": 12532,
                "name": "Block",
                "src": "16762:220:48"
              }
            ],
            "id": 12533,
            "name": "FunctionDefinition",
            "src": "16674:308:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the hash from the output script\n @dev             Determines type by the length prefix and validates format\n @param _output   The output\n @return          The hash committed to by the pk_script, or null for errors",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractHash",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_output",
                      "scope": 12682,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12534,
                        "name": "ElementaryTypeName",
                        "src": "17278:5:48"
                      }
                    ],
                    "id": 12535,
                    "name": "VariableDeclaration",
                    "src": "17278:20:48"
                  }
                ],
                "id": 12536,
                "name": "ParameterList",
                "src": "17277:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12682,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12537,
                        "name": "ElementaryTypeName",
                        "src": "17323:5:48"
                      }
                    ],
                    "id": 12538,
                    "name": "VariableDeclaration",
                    "src": "17323:12:48"
                  }
                ],
                "id": 12539,
                "name": "ParameterList",
                "src": "17322:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12541
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_scriptLen",
                          "scope": 12681,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 12540,
                            "name": "ElementaryTypeName",
                            "src": "17347:5:48"
                          }
                        ],
                        "id": 12541,
                        "name": "VariableDeclaration",
                        "src": "17347:16:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint8",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint8)",
                              "value": "uint8"
                            },
                            "id": 12542,
                            "name": "ElementaryTypeNameExpression",
                            "src": "17366:5:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bytes1"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12535,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12543,
                                "name": "Identifier",
                                "src": "17372:7:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "38",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "8"
                                },
                                "id": 12544,
                                "name": "Literal",
                                "src": "17380:1:48"
                              }
                            ],
                            "id": 12545,
                            "name": "IndexAccess",
                            "src": "17372:10:48"
                          }
                        ],
                        "id": 12546,
                        "name": "FunctionCall",
                        "src": "17366:17:48"
                      }
                    ],
                    "id": 12547,
                    "name": "VariableDeclarationStatement",
                    "src": "17347:36:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12541,
                                  "type": "uint8",
                                  "value": "_scriptLen"
                                },
                                "id": 12548,
                                "name": "Identifier",
                                "src": "17631:10:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "39",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 9",
                                  "value": "9"
                                },
                                "id": 12549,
                                "name": "Literal",
                                "src": "17644:1:48"
                              }
                            ],
                            "id": 12550,
                            "name": "BinaryOperation",
                            "src": "17631:14:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12535,
                                  "type": "bytes memory",
                                  "value": "_output"
                                },
                                "id": 12551,
                                "name": "Identifier",
                                "src": "17649:7:48"
                              }
                            ],
                            "id": 12552,
                            "name": "MemberAccess",
                            "src": "17649:14:48"
                          }
                        ],
                        "id": 12553,
                        "name": "BinaryOperation",
                        "src": "17631:32:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12539
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"\"",
                                  "value": ""
                                },
                                "id": 12554,
                                "name": "Literal",
                                "src": "17686:5:48"
                              }
                            ],
                            "id": 12555,
                            "name": "Return",
                            "src": "17679:12:48"
                          }
                        ],
                        "id": 12556,
                        "name": "Block",
                        "src": "17665:37:48"
                      }
                    ],
                    "id": 12557,
                    "name": "IfStatement",
                    "src": "17627:75:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 12558,
                                "name": "ElementaryTypeNameExpression",
                                "src": "17716:5:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12535,
                                      "type": "bytes memory",
                                      "value": "_output"
                                    },
                                    "id": 12559,
                                    "name": "Identifier",
                                    "src": "17722:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "39",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 9",
                                      "value": "9"
                                    },
                                    "id": 12560,
                                    "name": "Literal",
                                    "src": "17730:1:48"
                                  }
                                ],
                                "id": 12561,
                                "name": "IndexAccess",
                                "src": "17722:10:48"
                              }
                            ],
                            "id": 12562,
                            "name": "FunctionCall",
                            "src": "17716:17:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 12563,
                            "name": "Literal",
                            "src": "17737:1:48"
                          }
                        ],
                        "id": 12564,
                        "name": "BinaryOperation",
                        "src": "17716:22:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12541,
                                      "type": "uint8",
                                      "value": "_scriptLen"
                                    },
                                    "id": 12565,
                                    "name": "Identifier",
                                    "src": "17758:10:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 12566,
                                    "name": "Literal",
                                    "src": "17771:1:48"
                                  }
                                ],
                                "id": 12567,
                                "name": "BinaryOperation",
                                "src": "17758:14:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12539
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "string",
                                          "type": "literal_string \"\"",
                                          "value": ""
                                        },
                                        "id": 12568,
                                        "name": "Literal",
                                        "src": "17799:5:48"
                                      }
                                    ],
                                    "id": 12569,
                                    "name": "Return",
                                    "src": "17792:12:48"
                                  }
                                ],
                                "id": 12570,
                                "name": "Block",
                                "src": "17774:45:48"
                              }
                            ],
                            "id": 12571,
                            "name": "IfStatement",
                            "src": "17754:65:48"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                12573
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_payloadLen",
                                  "scope": 12604,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 12572,
                                    "name": "ElementaryTypeName",
                                    "src": "17832:7:48"
                                  }
                                ],
                                "id": 12573,
                                "name": "VariableDeclaration",
                                "src": "17832:19:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint8",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint8)",
                                      "value": "uint8"
                                    },
                                    "id": 12574,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "17854:5:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bytes1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12535,
                                          "type": "bytes memory",
                                          "value": "_output"
                                        },
                                        "id": 12575,
                                        "name": "Identifier",
                                        "src": "17860:7:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 12576,
                                        "name": "Literal",
                                        "src": "17868:2:48"
                                      }
                                    ],
                                    "id": 12577,
                                    "name": "IndexAccess",
                                    "src": "17860:11:48"
                                  }
                                ],
                                "id": 12578,
                                "name": "FunctionCall",
                                "src": "17854:18:48"
                              }
                            ],
                            "id": 12579,
                            "name": "VariableDeclarationStatement",
                            "src": "17832:40:48"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "||",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "!=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12573,
                                          "type": "uint256",
                                          "value": "_payloadLen"
                                        },
                                        "id": 12580,
                                        "name": "Identifier",
                                        "src": "18033:11:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint8"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12541,
                                              "type": "uint8",
                                              "value": "_scriptLen"
                                            },
                                            "id": 12581,
                                            "name": "Identifier",
                                            "src": "18048:10:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "32",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 2",
                                              "value": "2"
                                            },
                                            "id": 12582,
                                            "name": "Literal",
                                            "src": "18061:1:48"
                                          }
                                        ],
                                        "id": 12583,
                                        "name": "BinaryOperation",
                                        "src": "18048:14:48"
                                      }
                                    ],
                                    "id": 12584,
                                    "name": "BinaryOperation",
                                    "src": "18033:29:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "&&",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12573,
                                                  "type": "uint256",
                                                  "value": "_payloadLen"
                                                },
                                                "id": 12585,
                                                "name": "Identifier",
                                                "src": "18067:11:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30783230",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 32",
                                                  "value": "0x20"
                                                },
                                                "id": 12586,
                                                "name": "Literal",
                                                "src": "18082:4:48"
                                              }
                                            ],
                                            "id": 12587,
                                            "name": "BinaryOperation",
                                            "src": "18067:19:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12573,
                                                  "type": "uint256",
                                                  "value": "_payloadLen"
                                                },
                                                "id": 12588,
                                                "name": "Identifier",
                                                "src": "18090:11:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30783134",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 20",
                                                  "value": "0x14"
                                                },
                                                "id": 12589,
                                                "name": "Literal",
                                                "src": "18105:4:48"
                                              }
                                            ],
                                            "id": 12590,
                                            "name": "BinaryOperation",
                                            "src": "18090:19:48"
                                          }
                                        ],
                                        "id": 12591,
                                        "name": "BinaryOperation",
                                        "src": "18067:42:48"
                                      }
                                    ],
                                    "id": 12592,
                                    "name": "TupleExpression",
                                    "src": "18066:44:48"
                                  }
                                ],
                                "id": 12593,
                                "name": "BinaryOperation",
                                "src": "18033:77:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12539
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "string",
                                          "type": "literal_string \"\"",
                                          "value": ""
                                        },
                                        "id": 12594,
                                        "name": "Literal",
                                        "src": "18137:5:48"
                                      }
                                    ],
                                    "id": 12595,
                                    "name": "Return",
                                    "src": "18130:12:48"
                                  }
                                ],
                                "id": 12596,
                                "name": "Block",
                                "src": "18112:45:48"
                              }
                            ],
                            "id": 12597,
                            "name": "IfStatement",
                            "src": "18029:128:48"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 12539
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_11_by_1",
                                          "typeString": "int_const 11"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12535,
                                          "type": "bytes memory",
                                          "value": "_output"
                                        },
                                        "id": 12598,
                                        "name": "Identifier",
                                        "src": "18177:7:48"
                                      }
                                    ],
                                    "id": 12599,
                                    "name": "MemberAccess",
                                    "src": "18177:13:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3131",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 11",
                                      "value": "11"
                                    },
                                    "id": 12600,
                                    "name": "Literal",
                                    "src": "18191:2:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12573,
                                      "type": "uint256",
                                      "value": "_payloadLen"
                                    },
                                    "id": 12601,
                                    "name": "Identifier",
                                    "src": "18195:11:48"
                                  }
                                ],
                                "id": 12602,
                                "name": "FunctionCall",
                                "src": "18177:30:48"
                              }
                            ],
                            "id": 12603,
                            "name": "Return",
                            "src": "18170:37:48"
                          }
                        ],
                        "id": 12604,
                        "name": "Block",
                        "src": "17740:478:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                12606
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_tag",
                                  "scope": 12677,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "bytes32",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": "bytes32"
                                    },
                                    "id": 12605,
                                    "name": "ElementaryTypeName",
                                    "src": "18238:7:48"
                                  }
                                ],
                                "id": 12606,
                                "name": "VariableDeclaration",
                                "src": "18238:12:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "keccak256Slice",
                                      "referencedDeclaration": 13431,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12535,
                                          "type": "bytes memory",
                                          "value": "_output"
                                        },
                                        "id": 12607,
                                        "name": "Identifier",
                                        "src": "18253:7:48"
                                      }
                                    ],
                                    "id": 12608,
                                    "name": "MemberAccess",
                                    "src": "18253:22:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 12609,
                                    "name": "Literal",
                                    "src": "18276:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "33",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 3",
                                      "value": "3"
                                    },
                                    "id": 12610,
                                    "name": "Literal",
                                    "src": "18279:1:48"
                                  }
                                ],
                                "id": 12611,
                                "name": "FunctionCall",
                                "src": "18253:28:48"
                              }
                            ],
                            "id": 12612,
                            "name": "VariableDeclarationStatement",
                            "src": "18238:43:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12606,
                                      "type": "bytes32",
                                      "value": "_tag"
                                    },
                                    "id": 12613,
                                    "name": "Identifier",
                                    "src": "18320:4:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_e1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6",
                                              "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18354,
                                          "type": "function (bytes memory) pure returns (bytes32)",
                                          "value": "keccak256"
                                        },
                                        "id": 12614,
                                        "name": "Identifier",
                                        "src": "18328:9:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "1976a9",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "string",
                                          "type": "literal_string (contains invalid UTF-8 sequence at position 2)",
                                          "value": null
                                        },
                                        "id": 12615,
                                        "name": "Literal",
                                        "src": "18338:11:48"
                                      }
                                    ],
                                    "id": 12616,
                                    "name": "FunctionCall",
                                    "src": "18328:22:48"
                                  }
                                ],
                                "id": 12617,
                                "name": "BinaryOperation",
                                "src": "18320:30:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "falseBody": null
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "||",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "uint8",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_bytes1",
                                                          "typeString": "bytes1"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "type": "type(uint8)",
                                                      "value": "uint8"
                                                    },
                                                    "id": 12618,
                                                    "name": "ElementaryTypeNameExpression",
                                                    "src": "18508:5:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "bytes1"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 12535,
                                                          "type": "bytes memory",
                                                          "value": "_output"
                                                        },
                                                        "id": 12619,
                                                        "name": "Identifier",
                                                        "src": "18514:7:48"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "hexvalue": "3131",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "subdenomination": null,
                                                          "token": "number",
                                                          "type": "int_const 11",
                                                          "value": "11"
                                                        },
                                                        "id": 12620,
                                                        "name": "Literal",
                                                        "src": "18522:2:48"
                                                      }
                                                    ],
                                                    "id": 12621,
                                                    "name": "IndexAccess",
                                                    "src": "18514:11:48"
                                                  }
                                                ],
                                                "id": 12622,
                                                "name": "FunctionCall",
                                                "src": "18508:18:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30783134",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 20",
                                                  "value": "0x14"
                                                },
                                                "id": 12623,
                                                "name": "Literal",
                                                "src": "18530:4:48"
                                              }
                                            ],
                                            "id": 12624,
                                            "name": "BinaryOperation",
                                            "src": "18508:26:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "bytes32",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_rational_2_by_1",
                                                          "typeString": "int_const 2"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "keccak256Slice",
                                                      "referencedDeclaration": 13431,
                                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 12535,
                                                          "type": "bytes memory",
                                                          "value": "_output"
                                                        },
                                                        "id": 12625,
                                                        "name": "Identifier",
                                                        "src": "18558:7:48"
                                                      }
                                                    ],
                                                    "id": 12626,
                                                    "name": "MemberAccess",
                                                    "src": "18558:22:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "-",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "length",
                                                          "referencedDeclaration": null,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 12535,
                                                              "type": "bytes memory",
                                                              "value": "_output"
                                                            },
                                                            "id": 12627,
                                                            "name": "Identifier",
                                                            "src": "18581:7:48"
                                                          }
                                                        ],
                                                        "id": 12628,
                                                        "name": "MemberAccess",
                                                        "src": "18581:14:48"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "hexvalue": "32",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "subdenomination": null,
                                                          "token": "number",
                                                          "type": "int_const 2",
                                                          "value": "2"
                                                        },
                                                        "id": 12629,
                                                        "name": "Literal",
                                                        "src": "18598:1:48"
                                                      }
                                                    ],
                                                    "id": 12630,
                                                    "name": "BinaryOperation",
                                                    "src": "18581:18:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "32",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "number",
                                                      "type": "int_const 2",
                                                      "value": "2"
                                                    },
                                                    "id": 12631,
                                                    "name": "Literal",
                                                    "src": "18601:1:48"
                                                  }
                                                ],
                                                "id": 12632,
                                                "name": "FunctionCall",
                                                "src": "18558:45:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "bytes32",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_stringliteral_3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d",
                                                          "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 18354,
                                                      "type": "function (bytes memory) pure returns (bytes32)",
                                                      "value": "keccak256"
                                                    },
                                                    "id": 12633,
                                                    "name": "Identifier",
                                                    "src": "18607:9:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "88ac",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "string",
                                                      "type": "literal_string (contains invalid UTF-8 sequence at position 0)",
                                                      "value": null
                                                    },
                                                    "id": 12634,
                                                    "name": "Literal",
                                                    "src": "18617:9:48"
                                                  }
                                                ],
                                                "id": 12635,
                                                "name": "FunctionCall",
                                                "src": "18607:20:48"
                                              }
                                            ],
                                            "id": 12636,
                                            "name": "BinaryOperation",
                                            "src": "18558:69:48"
                                          }
                                        ],
                                        "id": 12637,
                                        "name": "BinaryOperation",
                                        "src": "18508:119:48"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "functionReturnParameters": 12539
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "string",
                                                  "type": "literal_string \"\"",
                                                  "value": ""
                                                },
                                                "id": 12638,
                                                "name": "Literal",
                                                "src": "18658:5:48"
                                              }
                                            ],
                                            "id": 12639,
                                            "name": "Return",
                                            "src": "18651:12:48"
                                          }
                                        ],
                                        "id": 12640,
                                        "name": "Block",
                                        "src": "18629:53:48"
                                      }
                                    ],
                                    "id": 12641,
                                    "name": "IfStatement",
                                    "src": "18504:178:48"
                                  },
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12539
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bytes memory",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_12_by_1",
                                                  "typeString": "int_const 12"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_20_by_1",
                                                  "typeString": "int_const 20"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "slice",
                                              "referencedDeclaration": 13281,
                                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12535,
                                                  "type": "bytes memory",
                                                  "value": "_output"
                                                },
                                                "id": 12642,
                                                "name": "Identifier",
                                                "src": "18706:7:48"
                                              }
                                            ],
                                            "id": 12643,
                                            "name": "MemberAccess",
                                            "src": "18706:13:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "3132",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 12",
                                              "value": "12"
                                            },
                                            "id": 12644,
                                            "name": "Literal",
                                            "src": "18720:2:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "3230",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 20",
                                              "value": "20"
                                            },
                                            "id": 12645,
                                            "name": "Literal",
                                            "src": "18724:2:48"
                                          }
                                        ],
                                        "id": 12646,
                                        "name": "FunctionCall",
                                        "src": "18706:21:48"
                                      }
                                    ],
                                    "id": 12647,
                                    "name": "Return",
                                    "src": "18699:28:48"
                                  }
                                ],
                                "id": 12648,
                                "name": "Block",
                                "src": "18352:409:48"
                              },
                              {
                                "attributes": {
                                  "falseBody": null
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12606,
                                          "type": "bytes32",
                                          "value": "_tag"
                                        },
                                        "id": 12649,
                                        "name": "Identifier",
                                        "src": "18771:4:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bytes32",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_stringliteral_a0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7",
                                                  "typeString": "literal_string (contains invalid UTF-8 sequence at position 1)"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 18354,
                                              "type": "function (bytes memory) pure returns (bytes32)",
                                              "value": "keccak256"
                                            },
                                            "id": 12650,
                                            "name": "Identifier",
                                            "src": "18779:9:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "17a914",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "string",
                                              "type": "literal_string (contains invalid UTF-8 sequence at position 1)",
                                              "value": null
                                            },
                                            "id": 12651,
                                            "name": "Literal",
                                            "src": "18789:11:48"
                                          }
                                        ],
                                        "id": 12652,
                                        "name": "FunctionCall",
                                        "src": "18779:22:48"
                                      }
                                    ],
                                    "id": 12653,
                                    "name": "BinaryOperation",
                                    "src": "18771:30:48"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "falseBody": null
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "uint8",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_bytes1",
                                                          "typeString": "bytes1"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "type": "type(uint8)",
                                                      "value": "uint8"
                                                    },
                                                    "id": 12654,
                                                    "name": "ElementaryTypeNameExpression",
                                                    "src": "18958:5:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "bytes1"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 12535,
                                                          "type": "bytes memory",
                                                          "value": "_output"
                                                        },
                                                        "id": 12655,
                                                        "name": "Identifier",
                                                        "src": "18964:7:48"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "-",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "length",
                                                              "referencedDeclaration": null,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 12535,
                                                                  "type": "bytes memory",
                                                                  "value": "_output"
                                                                },
                                                                "id": 12656,
                                                                "name": "Identifier",
                                                                "src": "18972:7:48"
                                                              }
                                                            ],
                                                            "id": 12657,
                                                            "name": "MemberAccess",
                                                            "src": "18972:14:48"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "hexvalue": "31",
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "subdenomination": null,
                                                              "token": "number",
                                                              "type": "int_const 1",
                                                              "value": "1"
                                                            },
                                                            "id": 12658,
                                                            "name": "Literal",
                                                            "src": "18989:1:48"
                                                          }
                                                        ],
                                                        "id": 12659,
                                                        "name": "BinaryOperation",
                                                        "src": "18972:18:48"
                                                      }
                                                    ],
                                                    "id": 12660,
                                                    "name": "IndexAccess",
                                                    "src": "18964:27:48"
                                                  }
                                                ],
                                                "id": 12661,
                                                "name": "FunctionCall",
                                                "src": "18958:34:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30783837",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 135",
                                                  "value": "0x87"
                                                },
                                                "id": 12662,
                                                "name": "Literal",
                                                "src": "18996:4:48"
                                              }
                                            ],
                                            "id": 12663,
                                            "name": "BinaryOperation",
                                            "src": "18958:42:48"
                                          },
                                          {
                                            "children": [
                                              {
                                                "attributes": {
                                                  "functionReturnParameters": 12539
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "string",
                                                      "type": "literal_string \"\"",
                                                      "value": ""
                                                    },
                                                    "id": 12664,
                                                    "name": "Literal",
                                                    "src": "19031:5:48"
                                                  }
                                                ],
                                                "id": 12665,
                                                "name": "Return",
                                                "src": "19024:12:48"
                                              }
                                            ],
                                            "id": 12666,
                                            "name": "Block",
                                            "src": "19002:53:48"
                                          }
                                        ],
                                        "id": 12667,
                                        "name": "IfStatement",
                                        "src": "18954:101:48"
                                      },
                                      {
                                        "attributes": {
                                          "functionReturnParameters": 12539
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "bytes memory",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_11_by_1",
                                                      "typeString": "int_const 11"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_rational_20_by_1",
                                                      "typeString": "int_const 20"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "slice",
                                                  "referencedDeclaration": 13281,
                                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 12535,
                                                      "type": "bytes memory",
                                                      "value": "_output"
                                                    },
                                                    "id": 12668,
                                                    "name": "Identifier",
                                                    "src": "19079:7:48"
                                                  }
                                                ],
                                                "id": 12669,
                                                "name": "MemberAccess",
                                                "src": "19079:13:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "3131",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 11",
                                                  "value": "11"
                                                },
                                                "id": 12670,
                                                "name": "Literal",
                                                "src": "19093:2:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "3230",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 20",
                                                  "value": "20"
                                                },
                                                "id": 12671,
                                                "name": "Literal",
                                                "src": "19097:2:48"
                                              }
                                            ],
                                            "id": 12672,
                                            "name": "FunctionCall",
                                            "src": "19079:21:48"
                                          }
                                        ],
                                        "id": 12673,
                                        "name": "Return",
                                        "src": "19072:28:48"
                                      }
                                    ],
                                    "id": 12674,
                                    "name": "Block",
                                    "src": "18803:312:48"
                                  }
                                ],
                                "id": 12675,
                                "name": "IfStatement",
                                "src": "18767:348:48"
                              }
                            ],
                            "id": 12676,
                            "name": "IfStatement",
                            "src": "18316:799:48"
                          }
                        ],
                        "id": 12677,
                        "name": "Block",
                        "src": "18224:901:48"
                      }
                    ],
                    "id": 12678,
                    "name": "IfStatement",
                    "src": "17712:1413:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12539
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "string",
                          "type": "literal_string \"\"",
                          "value": ""
                        },
                        "id": 12679,
                        "name": "Literal",
                        "src": "19141:5:48"
                      }
                    ],
                    "id": 12680,
                    "name": "Return",
                    "src": "19134:12:48"
                  }
                ],
                "id": 12681,
                "name": "Block",
                "src": "17337:1894:48"
              }
            ],
            "id": 12682,
            "name": "FunctionDefinition",
            "src": "17257:1974:48"
          },
          {
            "attributes": {
              "documentation": "@notice      Checks that the vin passed up is properly formatted\n @dev         Consider a vin with a valid vout in its scriptsig\n @param _vin  Raw bytes length-prefixed input vector\n @return      True if it represents a validly formatted vin",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "validateVin",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vin",
                      "scope": 12774,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12683,
                        "name": "ElementaryTypeName",
                        "src": "19594:5:48"
                      }
                    ],
                    "id": 12684,
                    "name": "VariableDeclaration",
                    "src": "19594:17:48"
                  }
                ],
                "id": 12685,
                "name": "ParameterList",
                "src": "19593:19:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12774,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 12686,
                        "name": "ElementaryTypeName",
                        "src": "19636:4:48"
                      }
                    ],
                    "id": 12687,
                    "name": "VariableDeclaration",
                    "src": "19636:4:48"
                  }
                ],
                "id": 12688,
                "name": "ParameterList",
                "src": "19635:6:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12690
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12773,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12689,
                            "name": "ElementaryTypeName",
                            "src": "19652:7:48"
                          }
                        ],
                        "id": 12690,
                        "name": "VariableDeclaration",
                        "src": "19652:22:48"
                      }
                    ],
                    "id": 12691,
                    "name": "VariableDeclarationStatement",
                    "src": "19652:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12693
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_nIns",
                          "scope": 12773,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12692,
                            "name": "ElementaryTypeName",
                            "src": "19684:7:48"
                          }
                        ],
                        "id": 12693,
                        "name": "VariableDeclaration",
                        "src": "19684:13:48"
                      }
                    ],
                    "id": 12694,
                    "name": "VariableDeclarationStatement",
                    "src": "19684:13:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12690,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12695,
                                "name": "Identifier",
                                "src": "19709:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12693,
                                  "type": "uint256",
                                  "value": "_nIns"
                                },
                                "id": 12696,
                                "name": "Identifier",
                                "src": "19725:5:48"
                              }
                            ],
                            "id": 12697,
                            "name": "TupleExpression",
                            "src": "19708:23:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11599,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "parseVarInt"
                                },
                                "id": 12698,
                                "name": "Identifier",
                                "src": "19734:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12684,
                                  "type": "bytes memory",
                                  "value": "_vin"
                                },
                                "id": 12699,
                                "name": "Identifier",
                                "src": "19746:4:48"
                              }
                            ],
                            "id": 12700,
                            "name": "FunctionCall",
                            "src": "19734:17:48"
                          }
                        ],
                        "id": 12701,
                        "name": "Assignment",
                        "src": "19708:43:48"
                      }
                    ],
                    "id": 12702,
                    "name": "ExpressionStatement",
                    "src": "19708:43:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "||",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12693,
                                  "type": "uint256",
                                  "value": "_nIns"
                                },
                                "id": 12703,
                                "name": "Identifier",
                                "src": "19830:5:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 12704,
                                "name": "Literal",
                                "src": "19839:1:48"
                              }
                            ],
                            "id": 12705,
                            "name": "BinaryOperation",
                            "src": "19830:10:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12690,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12706,
                                "name": "Identifier",
                                "src": "19844:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12707,
                                "name": "Identifier",
                                "src": "19862:11:48"
                              }
                            ],
                            "id": 12708,
                            "name": "BinaryOperation",
                            "src": "19844:29:48"
                          }
                        ],
                        "id": 12709,
                        "name": "BinaryOperation",
                        "src": "19830:43:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12688
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 12710,
                                "name": "Literal",
                                "src": "19896:5:48"
                              }
                            ],
                            "id": 12711,
                            "name": "Return",
                            "src": "19889:12:48"
                          }
                        ],
                        "id": 12712,
                        "name": "Block",
                        "src": "19875:37:48"
                      }
                    ],
                    "id": 12713,
                    "name": "IfStatement",
                    "src": "19826:86:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12715
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_offset",
                          "scope": 12773,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12714,
                            "name": "ElementaryTypeName",
                            "src": "19922:7:48"
                          }
                        ],
                        "id": 12715,
                        "name": "VariableDeclaration",
                        "src": "19922:15:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 12716,
                            "name": "Literal",
                            "src": "19940:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12690,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 12717,
                            "name": "Identifier",
                            "src": "19944:14:48"
                          }
                        ],
                        "id": 12718,
                        "name": "BinaryOperation",
                        "src": "19940:18:48"
                      }
                    ],
                    "id": 12719,
                    "name": "VariableDeclarationStatement",
                    "src": "19922:36:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            12721
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 12767,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 12720,
                                "name": "ElementaryTypeName",
                                "src": "19974:7:48"
                              }
                            ],
                            "id": 12721,
                            "name": "VariableDeclaration",
                            "src": "19974:9:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 12722,
                            "name": "Literal",
                            "src": "19986:1:48"
                          }
                        ],
                        "id": 12723,
                        "name": "VariableDeclarationStatement",
                        "src": "19974:13:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12721,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 12724,
                            "name": "Identifier",
                            "src": "19989:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12693,
                              "type": "uint256",
                              "value": "_nIns"
                            },
                            "id": 12725,
                            "name": "Identifier",
                            "src": "19993:5:48"
                          }
                        ],
                        "id": 12726,
                        "name": "BinaryOperation",
                        "src": "19989:9:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12721,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 12727,
                                "name": "Identifier",
                                "src": "20000:1:48"
                              }
                            ],
                            "id": 12728,
                            "name": "UnaryOperation",
                            "src": "20000:3:48"
                          }
                        ],
                        "id": 12729,
                        "name": "ExpressionStatement",
                        "src": "20000:3:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12715,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12730,
                                    "name": "Identifier",
                                    "src": "20081:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12684,
                                          "type": "bytes memory",
                                          "value": "_vin"
                                        },
                                        "id": 12731,
                                        "name": "Identifier",
                                        "src": "20092:4:48"
                                      }
                                    ],
                                    "id": 12732,
                                    "name": "MemberAccess",
                                    "src": "20092:11:48"
                                  }
                                ],
                                "id": 12733,
                                "name": "BinaryOperation",
                                "src": "20081:22:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12688
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 12734,
                                        "name": "Literal",
                                        "src": "20130:5:48"
                                      }
                                    ],
                                    "id": 12735,
                                    "name": "Return",
                                    "src": "20123:12:48"
                                  }
                                ],
                                "id": 12736,
                                "name": "Block",
                                "src": "20105:45:48"
                              }
                            ],
                            "id": 12737,
                            "name": "IfStatement",
                            "src": "20077:73:48"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                12739
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_next",
                                  "scope": 12766,
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "type": "bytes",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes",
                                      "type": "bytes"
                                    },
                                    "id": 12738,
                                    "name": "ElementaryTypeName",
                                    "src": "20225:5:48"
                                  }
                                ],
                                "id": 12739,
                                "name": "VariableDeclaration",
                                "src": "20225:18:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12684,
                                          "type": "bytes memory",
                                          "value": "_vin"
                                        },
                                        "id": 12740,
                                        "name": "Identifier",
                                        "src": "20246:4:48"
                                      }
                                    ],
                                    "id": 12741,
                                    "name": "MemberAccess",
                                    "src": "20246:10:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12715,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12742,
                                    "name": "Identifier",
                                    "src": "20257:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12684,
                                              "type": "bytes memory",
                                              "value": "_vin"
                                            },
                                            "id": 12743,
                                            "name": "Identifier",
                                            "src": "20266:4:48"
                                          }
                                        ],
                                        "id": 12744,
                                        "name": "MemberAccess",
                                        "src": "20266:11:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12715,
                                          "type": "uint256",
                                          "value": "_offset"
                                        },
                                        "id": 12745,
                                        "name": "Identifier",
                                        "src": "20280:7:48"
                                      }
                                    ],
                                    "id": 12746,
                                    "name": "BinaryOperation",
                                    "src": "20266:21:48"
                                  }
                                ],
                                "id": 12747,
                                "name": "FunctionCall",
                                "src": "20246:42:48"
                              }
                            ],
                            "id": 12748,
                            "name": "VariableDeclarationStatement",
                            "src": "20225:63:48"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                12750
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_nextLen",
                                  "scope": 12766,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 12749,
                                    "name": "ElementaryTypeName",
                                    "src": "20302:7:48"
                                  }
                                ],
                                "id": 12750,
                                "name": "VariableDeclaration",
                                "src": "20302:16:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12089,
                                      "type": "function (bytes memory) pure returns (uint256)",
                                      "value": "determineInputLength"
                                    },
                                    "id": 12751,
                                    "name": "Identifier",
                                    "src": "20321:20:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12739,
                                      "type": "bytes memory",
                                      "value": "_next"
                                    },
                                    "id": 12752,
                                    "name": "Identifier",
                                    "src": "20342:5:48"
                                  }
                                ],
                                "id": 12753,
                                "name": "FunctionCall",
                                "src": "20321:27:48"
                              }
                            ],
                            "id": 12754,
                            "name": "VariableDeclarationStatement",
                            "src": "20302:46:48"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12750,
                                      "type": "uint256",
                                      "value": "_nextLen"
                                    },
                                    "id": 12755,
                                    "name": "Identifier",
                                    "src": "20366:8:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11499,
                                      "type": "uint256",
                                      "value": "ERR_BAD_ARG"
                                    },
                                    "id": 12756,
                                    "name": "Identifier",
                                    "src": "20378:11:48"
                                  }
                                ],
                                "id": 12757,
                                "name": "BinaryOperation",
                                "src": "20366:23:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12688
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 12758,
                                        "name": "Literal",
                                        "src": "20416:5:48"
                                      }
                                    ],
                                    "id": 12759,
                                    "name": "Return",
                                    "src": "20409:12:48"
                                  }
                                ],
                                "id": 12760,
                                "name": "Block",
                                "src": "20391:45:48"
                              }
                            ],
                            "id": 12761,
                            "name": "IfStatement",
                            "src": "20362:74:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12715,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12762,
                                    "name": "Identifier",
                                    "src": "20498:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12750,
                                      "type": "uint256",
                                      "value": "_nextLen"
                                    },
                                    "id": 12763,
                                    "name": "Identifier",
                                    "src": "20509:8:48"
                                  }
                                ],
                                "id": 12764,
                                "name": "Assignment",
                                "src": "20498:19:48"
                              }
                            ],
                            "id": 12765,
                            "name": "ExpressionStatement",
                            "src": "20498:19:48"
                          }
                        ],
                        "id": 12766,
                        "name": "Block",
                        "src": "20005:523:48"
                      }
                    ],
                    "id": 12767,
                    "name": "ForStatement",
                    "src": "19969:559:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12688
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12715,
                              "type": "uint256",
                              "value": "_offset"
                            },
                            "id": 12768,
                            "name": "Identifier",
                            "src": "20602:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12684,
                                  "type": "bytes memory",
                                  "value": "_vin"
                                },
                                "id": 12769,
                                "name": "Identifier",
                                "src": "20613:4:48"
                              }
                            ],
                            "id": 12770,
                            "name": "MemberAccess",
                            "src": "20613:11:48"
                          }
                        ],
                        "id": 12771,
                        "name": "BinaryOperation",
                        "src": "20602:22:48"
                      }
                    ],
                    "id": 12772,
                    "name": "Return",
                    "src": "20595:29:48"
                  }
                ],
                "id": 12773,
                "name": "Block",
                "src": "19642:989:48"
              }
            ],
            "id": 12774,
            "name": "FunctionDefinition",
            "src": "19573:1058:48"
          },
          {
            "attributes": {
              "documentation": "@notice      Checks that the vout passed up is properly formatted\n @dev         Consider a vout with a valid scriptpubkey\n @param _vout Raw bytes length-prefixed output vector\n @return      True if it represents a validly formatted vout",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "validateVout",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vout",
                      "scope": 12866,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12775,
                        "name": "ElementaryTypeName",
                        "src": "20925:5:48"
                      }
                    ],
                    "id": 12776,
                    "name": "VariableDeclaration",
                    "src": "20925:18:48"
                  }
                ],
                "id": 12777,
                "name": "ParameterList",
                "src": "20924:20:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12866,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 12778,
                        "name": "ElementaryTypeName",
                        "src": "20968:4:48"
                      }
                    ],
                    "id": 12779,
                    "name": "VariableDeclaration",
                    "src": "20968:4:48"
                  }
                ],
                "id": 12780,
                "name": "ParameterList",
                "src": "20967:6:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12782
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_varIntDataLen",
                          "scope": 12865,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12781,
                            "name": "ElementaryTypeName",
                            "src": "20984:7:48"
                          }
                        ],
                        "id": 12782,
                        "name": "VariableDeclaration",
                        "src": "20984:22:48"
                      }
                    ],
                    "id": 12783,
                    "name": "VariableDeclarationStatement",
                    "src": "20984:22:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12785
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_nOuts",
                          "scope": 12865,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12784,
                            "name": "ElementaryTypeName",
                            "src": "21016:7:48"
                          }
                        ],
                        "id": 12785,
                        "name": "VariableDeclaration",
                        "src": "21016:14:48"
                      }
                    ],
                    "id": 12786,
                    "name": "VariableDeclarationStatement",
                    "src": "21016:14:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12782,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12787,
                                "name": "Identifier",
                                "src": "21042:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12785,
                                  "type": "uint256",
                                  "value": "_nOuts"
                                },
                                "id": 12788,
                                "name": "Identifier",
                                "src": "21058:6:48"
                              }
                            ],
                            "id": 12789,
                            "name": "TupleExpression",
                            "src": "21041:24:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(uint256,uint256)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11599,
                                  "type": "function (bytes memory) pure returns (uint256,uint256)",
                                  "value": "parseVarInt"
                                },
                                "id": 12790,
                                "name": "Identifier",
                                "src": "21068:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12776,
                                  "type": "bytes memory",
                                  "value": "_vout"
                                },
                                "id": 12791,
                                "name": "Identifier",
                                "src": "21080:5:48"
                              }
                            ],
                            "id": 12792,
                            "name": "FunctionCall",
                            "src": "21068:18:48"
                          }
                        ],
                        "id": 12793,
                        "name": "Assignment",
                        "src": "21041:45:48"
                      }
                    ],
                    "id": 12794,
                    "name": "ExpressionStatement",
                    "src": "21041:45:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "||",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12785,
                                  "type": "uint256",
                                  "value": "_nOuts"
                                },
                                "id": 12795,
                                "name": "Identifier",
                                "src": "21166:6:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 12796,
                                "name": "Literal",
                                "src": "21176:1:48"
                              }
                            ],
                            "id": 12797,
                            "name": "BinaryOperation",
                            "src": "21166:11:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12782,
                                  "type": "uint256",
                                  "value": "_varIntDataLen"
                                },
                                "id": 12798,
                                "name": "Identifier",
                                "src": "21181:14:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11499,
                                  "type": "uint256",
                                  "value": "ERR_BAD_ARG"
                                },
                                "id": 12799,
                                "name": "Identifier",
                                "src": "21199:11:48"
                              }
                            ],
                            "id": 12800,
                            "name": "BinaryOperation",
                            "src": "21181:29:48"
                          }
                        ],
                        "id": 12801,
                        "name": "BinaryOperation",
                        "src": "21166:44:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 12780
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 12802,
                                "name": "Literal",
                                "src": "21233:5:48"
                              }
                            ],
                            "id": 12803,
                            "name": "Return",
                            "src": "21226:12:48"
                          }
                        ],
                        "id": 12804,
                        "name": "Block",
                        "src": "21212:37:48"
                      }
                    ],
                    "id": 12805,
                    "name": "IfStatement",
                    "src": "21162:87:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12807
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_offset",
                          "scope": 12865,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12806,
                            "name": "ElementaryTypeName",
                            "src": "21259:7:48"
                          }
                        ],
                        "id": 12807,
                        "name": "VariableDeclaration",
                        "src": "21259:15:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 12808,
                            "name": "Literal",
                            "src": "21277:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12782,
                              "type": "uint256",
                              "value": "_varIntDataLen"
                            },
                            "id": 12809,
                            "name": "Identifier",
                            "src": "21281:14:48"
                          }
                        ],
                        "id": 12810,
                        "name": "BinaryOperation",
                        "src": "21277:18:48"
                      }
                    ],
                    "id": 12811,
                    "name": "VariableDeclarationStatement",
                    "src": "21259:36:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            12813
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 12859,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 12812,
                                "name": "ElementaryTypeName",
                                "src": "21311:7:48"
                              }
                            ],
                            "id": 12813,
                            "name": "VariableDeclaration",
                            "src": "21311:9:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 12814,
                            "name": "Literal",
                            "src": "21323:1:48"
                          }
                        ],
                        "id": 12815,
                        "name": "VariableDeclarationStatement",
                        "src": "21311:13:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12813,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 12816,
                            "name": "Identifier",
                            "src": "21326:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12785,
                              "type": "uint256",
                              "value": "_nOuts"
                            },
                            "id": 12817,
                            "name": "Identifier",
                            "src": "21330:6:48"
                          }
                        ],
                        "id": 12818,
                        "name": "BinaryOperation",
                        "src": "21326:10:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12813,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 12819,
                                "name": "Identifier",
                                "src": "21338:1:48"
                              }
                            ],
                            "id": 12820,
                            "name": "UnaryOperation",
                            "src": "21338:3:48"
                          }
                        ],
                        "id": 12821,
                        "name": "ExpressionStatement",
                        "src": "21338:3:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12807,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12822,
                                    "name": "Identifier",
                                    "src": "21419:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12776,
                                          "type": "bytes memory",
                                          "value": "_vout"
                                        },
                                        "id": 12823,
                                        "name": "Identifier",
                                        "src": "21430:5:48"
                                      }
                                    ],
                                    "id": 12824,
                                    "name": "MemberAccess",
                                    "src": "21430:12:48"
                                  }
                                ],
                                "id": 12825,
                                "name": "BinaryOperation",
                                "src": "21419:23:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12780
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 12826,
                                        "name": "Literal",
                                        "src": "21469:5:48"
                                      }
                                    ],
                                    "id": 12827,
                                    "name": "Return",
                                    "src": "21462:12:48"
                                  }
                                ],
                                "id": 12828,
                                "name": "Block",
                                "src": "21444:45:48"
                              }
                            ],
                            "id": 12829,
                            "name": "IfStatement",
                            "src": "21415:74:48"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                12831
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_next",
                                  "scope": 12858,
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "type": "bytes",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes",
                                      "type": "bytes"
                                    },
                                    "id": 12830,
                                    "name": "ElementaryTypeName",
                                    "src": "21613:5:48"
                                  }
                                ],
                                "id": 12831,
                                "name": "VariableDeclaration",
                                "src": "21613:18:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12776,
                                          "type": "bytes memory",
                                          "value": "_vout"
                                        },
                                        "id": 12832,
                                        "name": "Identifier",
                                        "src": "21634:5:48"
                                      }
                                    ],
                                    "id": 12833,
                                    "name": "MemberAccess",
                                    "src": "21634:11:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12807,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12834,
                                    "name": "Identifier",
                                    "src": "21646:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12776,
                                              "type": "bytes memory",
                                              "value": "_vout"
                                            },
                                            "id": 12835,
                                            "name": "Identifier",
                                            "src": "21655:5:48"
                                          }
                                        ],
                                        "id": 12836,
                                        "name": "MemberAccess",
                                        "src": "21655:12:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12807,
                                          "type": "uint256",
                                          "value": "_offset"
                                        },
                                        "id": 12837,
                                        "name": "Identifier",
                                        "src": "21670:7:48"
                                      }
                                    ],
                                    "id": 12838,
                                    "name": "BinaryOperation",
                                    "src": "21655:22:48"
                                  }
                                ],
                                "id": 12839,
                                "name": "FunctionCall",
                                "src": "21634:44:48"
                              }
                            ],
                            "id": 12840,
                            "name": "VariableDeclarationStatement",
                            "src": "21613:65:48"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                12842
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_nextLen",
                                  "scope": 12858,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 12841,
                                    "name": "ElementaryTypeName",
                                    "src": "21692:7:48"
                                  }
                                ],
                                "id": 12842,
                                "name": "VariableDeclaration",
                                "src": "21692:16:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12335,
                                      "type": "function (bytes memory) pure returns (uint256)",
                                      "value": "determineOutputLength"
                                    },
                                    "id": 12843,
                                    "name": "Identifier",
                                    "src": "21711:21:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12831,
                                      "type": "bytes memory",
                                      "value": "_next"
                                    },
                                    "id": 12844,
                                    "name": "Identifier",
                                    "src": "21733:5:48"
                                  }
                                ],
                                "id": 12845,
                                "name": "FunctionCall",
                                "src": "21711:28:48"
                              }
                            ],
                            "id": 12846,
                            "name": "VariableDeclarationStatement",
                            "src": "21692:47:48"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12842,
                                      "type": "uint256",
                                      "value": "_nextLen"
                                    },
                                    "id": 12847,
                                    "name": "Identifier",
                                    "src": "21757:8:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11499,
                                      "type": "uint256",
                                      "value": "ERR_BAD_ARG"
                                    },
                                    "id": 12848,
                                    "name": "Identifier",
                                    "src": "21769:11:48"
                                  }
                                ],
                                "id": 12849,
                                "name": "BinaryOperation",
                                "src": "21757:23:48"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 12780
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 12850,
                                        "name": "Literal",
                                        "src": "21807:5:48"
                                      }
                                    ],
                                    "id": 12851,
                                    "name": "Return",
                                    "src": "21800:12:48"
                                  }
                                ],
                                "id": 12852,
                                "name": "Block",
                                "src": "21782:45:48"
                              }
                            ],
                            "id": 12853,
                            "name": "IfStatement",
                            "src": "21753:74:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12807,
                                      "type": "uint256",
                                      "value": "_offset"
                                    },
                                    "id": 12854,
                                    "name": "Identifier",
                                    "src": "21841:7:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12842,
                                      "type": "uint256",
                                      "value": "_nextLen"
                                    },
                                    "id": 12855,
                                    "name": "Identifier",
                                    "src": "21852:8:48"
                                  }
                                ],
                                "id": 12856,
                                "name": "Assignment",
                                "src": "21841:19:48"
                              }
                            ],
                            "id": 12857,
                            "name": "ExpressionStatement",
                            "src": "21841:19:48"
                          }
                        ],
                        "id": 12858,
                        "name": "Block",
                        "src": "21343:528:48"
                      }
                    ],
                    "id": 12859,
                    "name": "ForStatement",
                    "src": "21306:565:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12780
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12807,
                              "type": "uint256",
                              "value": "_offset"
                            },
                            "id": 12860,
                            "name": "Identifier",
                            "src": "21945:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12776,
                                  "type": "bytes memory",
                                  "value": "_vout"
                                },
                                "id": 12861,
                                "name": "Identifier",
                                "src": "21956:5:48"
                              }
                            ],
                            "id": 12862,
                            "name": "MemberAccess",
                            "src": "21956:12:48"
                          }
                        ],
                        "id": 12863,
                        "name": "BinaryOperation",
                        "src": "21945:23:48"
                      }
                    ],
                    "id": 12864,
                    "name": "Return",
                    "src": "21938:30:48"
                  }
                ],
                "id": 12865,
                "name": "Block",
                "src": "20974:1001:48"
              }
            ],
            "id": 12866,
            "name": "FunctionDefinition",
            "src": "20903:1072:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the transaction merkle root from a block header\n @dev             Use verifyHash256Merkle to verify proofs with this root\n @param _header   The header\n @return          The merkle root (little-endian)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractMerkleRootLE",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_header",
                      "scope": 12880,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12867,
                        "name": "ElementaryTypeName",
                        "src": "22338:5:48"
                      }
                    ],
                    "id": 12868,
                    "name": "VariableDeclaration",
                    "src": "22338:20:48"
                  }
                ],
                "id": 12869,
                "name": "ParameterList",
                "src": "22337:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12880,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12870,
                        "name": "ElementaryTypeName",
                        "src": "22383:5:48"
                      }
                    ],
                    "id": 12871,
                    "name": "VariableDeclaration",
                    "src": "22383:12:48"
                  }
                ],
                "id": 12872,
                "name": "ParameterList",
                "src": "22382:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12872
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_36_by_1",
                                  "typeString": "int_const 36"
                                },
                                {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12868,
                                  "type": "bytes memory",
                                  "value": "_header"
                                },
                                "id": 12873,
                                "name": "Identifier",
                                "src": "22414:7:48"
                              }
                            ],
                            "id": 12874,
                            "name": "MemberAccess",
                            "src": "22414:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3336",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 36",
                              "value": "36"
                            },
                            "id": 12875,
                            "name": "Literal",
                            "src": "22428:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 12876,
                            "name": "Literal",
                            "src": "22432:2:48"
                          }
                        ],
                        "id": 12877,
                        "name": "FunctionCall",
                        "src": "22414:21:48"
                      }
                    ],
                    "id": 12878,
                    "name": "Return",
                    "src": "22407:28:48"
                  }
                ],
                "id": 12879,
                "name": "Block",
                "src": "22397:45:48"
              }
            ],
            "id": 12880,
            "name": "FunctionDefinition",
            "src": "22309:133:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the target from a block header\n @dev             Target is a 256-bit number encoded as a 3-byte mantissa and 1-byte exponent\n @param _header   The header\n @return          The target threshold",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractTarget",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_header",
                      "scope": 12925,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12881,
                        "name": "ElementaryTypeName",
                        "src": "22719:5:48"
                      }
                    ],
                    "id": 12882,
                    "name": "VariableDeclaration",
                    "src": "22719:20:48"
                  }
                ],
                "id": 12883,
                "name": "ParameterList",
                "src": "22718:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12925,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12884,
                        "name": "ElementaryTypeName",
                        "src": "22764:7:48"
                      }
                    ],
                    "id": 12885,
                    "name": "VariableDeclaration",
                    "src": "22764:7:48"
                  }
                ],
                "id": 12886,
                "name": "ParameterList",
                "src": "22763:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        12888
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_m",
                          "scope": 12924,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 12887,
                            "name": "ElementaryTypeName",
                            "src": "22783:5:48"
                          }
                        ],
                        "id": 12888,
                        "name": "VariableDeclaration",
                        "src": "22783:15:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_72_by_1",
                                  "typeString": "int_const 72"
                                },
                                {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12882,
                                  "type": "bytes memory",
                                  "value": "_header"
                                },
                                "id": 12889,
                                "name": "Identifier",
                                "src": "22801:7:48"
                              }
                            ],
                            "id": 12890,
                            "name": "MemberAccess",
                            "src": "22801:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3732",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 72",
                              "value": "72"
                            },
                            "id": 12891,
                            "name": "Literal",
                            "src": "22815:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 12892,
                            "name": "Literal",
                            "src": "22819:1:48"
                          }
                        ],
                        "id": 12893,
                        "name": "FunctionCall",
                        "src": "22801:20:48"
                      }
                    ],
                    "id": 12894,
                    "name": "VariableDeclarationStatement",
                    "src": "22783:38:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12896
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_e",
                          "scope": 12924,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 12895,
                            "name": "ElementaryTypeName",
                            "src": "22831:5:48"
                          }
                        ],
                        "id": 12896,
                        "name": "VariableDeclaration",
                        "src": "22831:8:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint8",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint8)",
                              "value": "uint8"
                            },
                            "id": 12897,
                            "name": "ElementaryTypeNameExpression",
                            "src": "22842:5:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bytes1"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12882,
                                  "type": "bytes memory",
                                  "value": "_header"
                                },
                                "id": 12898,
                                "name": "Identifier",
                                "src": "22848:7:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3735",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 75",
                                  "value": "75"
                                },
                                "id": 12899,
                                "name": "Literal",
                                "src": "22856:2:48"
                              }
                            ],
                            "id": 12900,
                            "name": "IndexAccess",
                            "src": "22848:11:48"
                          }
                        ],
                        "id": 12901,
                        "name": "FunctionCall",
                        "src": "22842:18:48"
                      }
                    ],
                    "id": 12902,
                    "name": "VariableDeclarationStatement",
                    "src": "22831:29:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12904
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_mantissa",
                          "scope": 12924,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 12903,
                            "name": "ElementaryTypeName",
                            "src": "22870:7:48"
                          }
                        ],
                        "id": 12904,
                        "name": "VariableDeclaration",
                        "src": "22870:17:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11790,
                              "type": "function (bytes memory) pure returns (uint256)",
                              "value": "bytesToUint"
                            },
                            "id": 12905,
                            "name": "Identifier",
                            "src": "22890:11:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11643,
                                  "type": "function (bytes memory) pure returns (bytes memory)",
                                  "value": "reverseEndianness"
                                },
                                "id": 12906,
                                "name": "Identifier",
                                "src": "22902:17:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12888,
                                  "type": "bytes memory",
                                  "value": "_m"
                                },
                                "id": 12907,
                                "name": "Identifier",
                                "src": "22920:2:48"
                              }
                            ],
                            "id": 12908,
                            "name": "FunctionCall",
                            "src": "22902:21:48"
                          }
                        ],
                        "id": 12909,
                        "name": "FunctionCall",
                        "src": "22890:34:48"
                      }
                    ],
                    "id": 12910,
                    "name": "VariableDeclarationStatement",
                    "src": "22870:54:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        12912
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_exponent",
                          "scope": 12924,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 12911,
                            "name": "ElementaryTypeName",
                            "src": "22934:4:48"
                          }
                        ],
                        "id": 12912,
                        "name": "VariableDeclaration",
                        "src": "22934:14:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12896,
                              "type": "uint8",
                              "value": "_e"
                            },
                            "id": 12913,
                            "name": "Identifier",
                            "src": "22951:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 12914,
                            "name": "Literal",
                            "src": "22956:1:48"
                          }
                        ],
                        "id": 12915,
                        "name": "BinaryOperation",
                        "src": "22951:6:48"
                      }
                    ],
                    "id": 12916,
                    "name": "VariableDeclarationStatement",
                    "src": "22934:23:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 12886
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12904,
                              "type": "uint256",
                              "value": "_mantissa"
                            },
                            "id": 12917,
                            "name": "Identifier",
                            "src": "22975:9:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "323536",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 256",
                                      "value": "256"
                                    },
                                    "id": 12918,
                                    "name": "Literal",
                                    "src": "22988:3:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12912,
                                      "type": "uint256",
                                      "value": "_exponent"
                                    },
                                    "id": 12919,
                                    "name": "Identifier",
                                    "src": "22995:9:48"
                                  }
                                ],
                                "id": 12920,
                                "name": "BinaryOperation",
                                "src": "22988:16:48"
                              }
                            ],
                            "id": 12921,
                            "name": "TupleExpression",
                            "src": "22987:18:48"
                          }
                        ],
                        "id": 12922,
                        "name": "BinaryOperation",
                        "src": "22975:30:48"
                      }
                    ],
                    "id": 12923,
                    "name": "Return",
                    "src": "22968:37:48"
                  }
                ],
                "id": 12924,
                "name": "Block",
                "src": "22773:239:48"
              }
            ],
            "id": 12925,
            "name": "FunctionDefinition",
            "src": "22696:316:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Calculate difficulty from the difficulty 1 target and current target\n @dev             Difficulty 1 is 0x1d00ffff on mainnet and testnet\n @dev             Difficulty 1 is a 256-bit number encoded as a 3-byte mantissa and 1-byte exponent\n @param _target   The current target\n @return          The block difficulty (bdiff)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "calculateDifficulty",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_target",
                      "scope": 12938,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12926,
                        "name": "ElementaryTypeName",
                        "src": "23421:7:48"
                      }
                    ],
                    "id": 12927,
                    "name": "VariableDeclaration",
                    "src": "23421:15:48"
                  }
                ],
                "id": 12928,
                "name": "ParameterList",
                "src": "23420:17:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12938,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12929,
                        "name": "ElementaryTypeName",
                        "src": "23461:7:48"
                      }
                    ],
                    "id": 12930,
                    "name": "VariableDeclaration",
                    "src": "23461:7:48"
                  }
                ],
                "id": 12931,
                "name": "ParameterList",
                "src": "23460:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12931
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "div",
                              "referencedDeclaration": 13874,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11482,
                                  "type": "uint256",
                                  "value": "DIFF1_TARGET"
                                },
                                "id": 12932,
                                "name": "Identifier",
                                "src": "23538:12:48"
                              }
                            ],
                            "id": 12933,
                            "name": "MemberAccess",
                            "src": "23538:16:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12927,
                              "type": "uint256",
                              "value": "_target"
                            },
                            "id": 12934,
                            "name": "Identifier",
                            "src": "23555:7:48"
                          }
                        ],
                        "id": 12935,
                        "name": "FunctionCall",
                        "src": "23538:25:48"
                      }
                    ],
                    "id": 12936,
                    "name": "Return",
                    "src": "23531:32:48"
                  }
                ],
                "id": 12937,
                "name": "Block",
                "src": "23470:100:48"
              }
            ],
            "id": 12938,
            "name": "FunctionDefinition",
            "src": "23392:178:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the previous block's hash from a block header\n @dev             Block headers do NOT include block number :(\n @param _header   The header\n @return          The previous block's hash (little-endian)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractPrevBlockLE",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_header",
                      "scope": 12952,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12939,
                        "name": "ElementaryTypeName",
                        "src": "23857:5:48"
                      }
                    ],
                    "id": 12940,
                    "name": "VariableDeclaration",
                    "src": "23857:20:48"
                  }
                ],
                "id": 12941,
                "name": "ParameterList",
                "src": "23856:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12952,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12942,
                        "name": "ElementaryTypeName",
                        "src": "23902:5:48"
                      }
                    ],
                    "id": 12943,
                    "name": "VariableDeclaration",
                    "src": "23902:12:48"
                  }
                ],
                "id": 12944,
                "name": "ParameterList",
                "src": "23901:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12944
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12940,
                                  "type": "bytes memory",
                                  "value": "_header"
                                },
                                "id": 12945,
                                "name": "Identifier",
                                "src": "23933:7:48"
                              }
                            ],
                            "id": 12946,
                            "name": "MemberAccess",
                            "src": "23933:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 12947,
                            "name": "Literal",
                            "src": "23947:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 12948,
                            "name": "Literal",
                            "src": "23950:2:48"
                          }
                        ],
                        "id": 12949,
                        "name": "FunctionCall",
                        "src": "23933:20:48"
                      }
                    ],
                    "id": 12950,
                    "name": "Return",
                    "src": "23926:27:48"
                  }
                ],
                "id": 12951,
                "name": "Block",
                "src": "23916:44:48"
              }
            ],
            "id": 12952,
            "name": "FunctionDefinition",
            "src": "23829:131:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the timestamp from a block header\n @dev             Time is not 100% reliable\n @param _header   The header\n @return          The timestamp (little-endian bytes)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractTimestampLE",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_header",
                      "scope": 12966,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12953,
                        "name": "ElementaryTypeName",
                        "src": "24210:5:48"
                      }
                    ],
                    "id": 12954,
                    "name": "VariableDeclaration",
                    "src": "24210:20:48"
                  }
                ],
                "id": 12955,
                "name": "ParameterList",
                "src": "24209:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12966,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12956,
                        "name": "ElementaryTypeName",
                        "src": "24255:5:48"
                      }
                    ],
                    "id": 12957,
                    "name": "VariableDeclaration",
                    "src": "24255:12:48"
                  }
                ],
                "id": 12958,
                "name": "ParameterList",
                "src": "24254:14:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12958
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_68_by_1",
                                  "typeString": "int_const 68"
                                },
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "slice",
                              "referencedDeclaration": 13281,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12954,
                                  "type": "bytes memory",
                                  "value": "_header"
                                },
                                "id": 12959,
                                "name": "Identifier",
                                "src": "24286:7:48"
                              }
                            ],
                            "id": 12960,
                            "name": "MemberAccess",
                            "src": "24286:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3638",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 68",
                              "value": "68"
                            },
                            "id": 12961,
                            "name": "Literal",
                            "src": "24300:2:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 12962,
                            "name": "Literal",
                            "src": "24304:1:48"
                          }
                        ],
                        "id": 12963,
                        "name": "FunctionCall",
                        "src": "24286:20:48"
                      }
                    ],
                    "id": 12964,
                    "name": "Return",
                    "src": "24279:27:48"
                  }
                ],
                "id": 12965,
                "name": "Block",
                "src": "24269:44:48"
              }
            ],
            "id": 12966,
            "name": "FunctionDefinition",
            "src": "24182:131:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the timestamp from a block header\n @dev             Time is not 100% reliable\n @param _header   The header\n @return          The timestamp (uint)",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractTimestamp",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_header",
                      "scope": 12984,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12967,
                        "name": "ElementaryTypeName",
                        "src": "24546:5:48"
                      }
                    ],
                    "id": 12968,
                    "name": "VariableDeclaration",
                    "src": "24546:20:48"
                  }
                ],
                "id": 12969,
                "name": "ParameterList",
                "src": "24545:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12984,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 12970,
                        "name": "ElementaryTypeName",
                        "src": "24591:6:48"
                      }
                    ],
                    "id": 12971,
                    "name": "VariableDeclaration",
                    "src": "24591:6:48"
                  }
                ],
                "id": 12972,
                "name": "ParameterList",
                "src": "24590:8:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12972
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint32",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint32)",
                              "value": "uint32"
                            },
                            "id": 12973,
                            "name": "ElementaryTypeNameExpression",
                            "src": "24616:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11790,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "bytesToUint"
                                },
                                "id": 12974,
                                "name": "Identifier",
                                "src": "24623:11:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11643,
                                      "type": "function (bytes memory) pure returns (bytes memory)",
                                      "value": "reverseEndianness"
                                    },
                                    "id": 12975,
                                    "name": "Identifier",
                                    "src": "24635:17:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12966,
                                          "type": "function (bytes memory) pure returns (bytes memory)",
                                          "value": "extractTimestampLE"
                                        },
                                        "id": 12976,
                                        "name": "Identifier",
                                        "src": "24653:18:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12968,
                                          "type": "bytes memory",
                                          "value": "_header"
                                        },
                                        "id": 12977,
                                        "name": "Identifier",
                                        "src": "24672:7:48"
                                      }
                                    ],
                                    "id": 12978,
                                    "name": "FunctionCall",
                                    "src": "24653:27:48"
                                  }
                                ],
                                "id": 12979,
                                "name": "FunctionCall",
                                "src": "24635:46:48"
                              }
                            ],
                            "id": 12980,
                            "name": "FunctionCall",
                            "src": "24623:59:48"
                          }
                        ],
                        "id": 12981,
                        "name": "FunctionCall",
                        "src": "24616:67:48"
                      }
                    ],
                    "id": 12982,
                    "name": "Return",
                    "src": "24609:74:48"
                  }
                ],
                "id": 12983,
                "name": "Block",
                "src": "24599:91:48"
              }
            ],
            "id": 12984,
            "name": "FunctionDefinition",
            "src": "24520:170:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Extracts the expected difficulty from a block header\n @dev             Does NOT verify the work\n @param _header   The header\n @return          The difficulty as an integer",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "extractDifficulty",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_header",
                      "scope": 12998,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12985,
                        "name": "ElementaryTypeName",
                        "src": "24941:5:48"
                      }
                    ],
                    "id": 12986,
                    "name": "VariableDeclaration",
                    "src": "24941:20:48"
                  }
                ],
                "id": 12987,
                "name": "ParameterList",
                "src": "24940:22:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 12998,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 12988,
                        "name": "ElementaryTypeName",
                        "src": "24986:7:48"
                      }
                    ],
                    "id": 12989,
                    "name": "VariableDeclaration",
                    "src": "24986:7:48"
                  }
                ],
                "id": 12990,
                "name": "ParameterList",
                "src": "24985:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 12990
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12938,
                              "type": "function (uint256) pure returns (uint256)",
                              "value": "calculateDifficulty"
                            },
                            "id": 12991,
                            "name": "Identifier",
                            "src": "25012:19:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12925,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "extractTarget"
                                },
                                "id": 12992,
                                "name": "Identifier",
                                "src": "25032:13:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12986,
                                  "type": "bytes memory",
                                  "value": "_header"
                                },
                                "id": 12993,
                                "name": "Identifier",
                                "src": "25046:7:48"
                              }
                            ],
                            "id": 12994,
                            "name": "FunctionCall",
                            "src": "25032:22:48"
                          }
                        ],
                        "id": 12995,
                        "name": "FunctionCall",
                        "src": "25012:43:48"
                      }
                    ],
                    "id": 12996,
                    "name": "Return",
                    "src": "25005:50:48"
                  }
                ],
                "id": 12997,
                "name": "Block",
                "src": "24995:67:48"
              }
            ],
            "id": 12998,
            "name": "FunctionDefinition",
            "src": "24914:148:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Concatenates and hashes two inputs for merkle proving\n @param _a        The first hash\n @param _b        The second hash\n @return          The double-sha256 of the concatenated hashes",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_hash256MerkleStep",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_a",
                      "scope": 13016,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 12999,
                        "name": "ElementaryTypeName",
                        "src": "25326:5:48"
                      }
                    ],
                    "id": 13000,
                    "name": "VariableDeclaration",
                    "src": "25326:15:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 13016,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 13001,
                        "name": "ElementaryTypeName",
                        "src": "25343:5:48"
                      }
                    ],
                    "id": 13002,
                    "name": "VariableDeclaration",
                    "src": "25343:15:48"
                  }
                ],
                "id": 13003,
                "name": "ParameterList",
                "src": "25325:34:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 13016,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 13004,
                        "name": "ElementaryTypeName",
                        "src": "25383:7:48"
                      }
                    ],
                    "id": 13005,
                    "name": "VariableDeclaration",
                    "src": "25383:7:48"
                  }
                ],
                "id": 13006,
                "name": "ParameterList",
                "src": "25382:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 13006
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11851,
                              "type": "function (bytes memory) pure returns (bytes32)",
                              "value": "hash256"
                            },
                            "id": 13007,
                            "name": "Identifier",
                            "src": "25409:7:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodePacked",
                                  "referencedDeclaration": null,
                                  "type": "function () pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18347,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 13008,
                                    "name": "Identifier",
                                    "src": "25417:3:48"
                                  }
                                ],
                                "id": 13009,
                                "name": "MemberAccess",
                                "src": "25417:16:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13000,
                                  "type": "bytes memory",
                                  "value": "_a"
                                },
                                "id": 13010,
                                "name": "Identifier",
                                "src": "25434:2:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13002,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 13011,
                                "name": "Identifier",
                                "src": "25438:2:48"
                              }
                            ],
                            "id": 13012,
                            "name": "FunctionCall",
                            "src": "25417:24:48"
                          }
                        ],
                        "id": 13013,
                        "name": "FunctionCall",
                        "src": "25409:33:48"
                      }
                    ],
                    "id": 13014,
                    "name": "Return",
                    "src": "25402:40:48"
                  }
                ],
                "id": 13015,
                "name": "Block",
                "src": "25392:57:48"
              }
            ],
            "id": 13016,
            "name": "FunctionDefinition",
            "src": "25298:151:48"
          },
          {
            "attributes": {
              "documentation": "@notice          Verifies a Bitcoin-style merkle tree\n @dev             Leaves are 0-indexed.\n @param _proof    The proof. Tightly packed LE sha256 hashes. The last hash is the root\n @param _index    The index of the leaf\n @return          true if the proof is valid, else false",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "verifyHash256Merkle",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proof",
                      "scope": 13148,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 13017,
                        "name": "ElementaryTypeName",
                        "src": "25799:5:48"
                      }
                    ],
                    "id": 13018,
                    "name": "VariableDeclaration",
                    "src": "25799:19:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_index",
                      "scope": 13148,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 13019,
                        "name": "ElementaryTypeName",
                        "src": "25820:4:48"
                      }
                    ],
                    "id": 13020,
                    "name": "VariableDeclaration",
                    "src": "25820:11:48"
                  }
                ],
                "id": 13021,
                "name": "ParameterList",
                "src": "25798:34:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 13148,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 13022,
                        "name": "ElementaryTypeName",
                        "src": "25856:4:48"
                      }
                    ],
                    "id": 13023,
                    "name": "VariableDeclaration",
                    "src": "25856:4:48"
                  }
                ],
                "id": 13024,
                "name": "ParameterList",
                "src": "25855:6:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "%",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 13018,
                                      "type": "bytes memory",
                                      "value": "_proof"
                                    },
                                    "id": 13025,
                                    "name": "Identifier",
                                    "src": "25916:6:48"
                                  }
                                ],
                                "id": 13026,
                                "name": "MemberAccess",
                                "src": "25916:13:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 13027,
                                "name": "Literal",
                                "src": "25932:2:48"
                              }
                            ],
                            "id": 13028,
                            "name": "BinaryOperation",
                            "src": "25916:18:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 13029,
                            "name": "Literal",
                            "src": "25938:1:48"
                          }
                        ],
                        "id": 13030,
                        "name": "BinaryOperation",
                        "src": "25916:23:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 13024
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 13031,
                                "name": "Literal",
                                "src": "25962:5:48"
                              }
                            ],
                            "id": 13032,
                            "name": "Return",
                            "src": "25955:12:48"
                          }
                        ],
                        "id": 13033,
                        "name": "Block",
                        "src": "25941:37:48"
                      }
                    ],
                    "id": 13034,
                    "name": "IfStatement",
                    "src": "25912:66:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13018,
                                  "type": "bytes memory",
                                  "value": "_proof"
                                },
                                "id": 13035,
                                "name": "Identifier",
                                "src": "26041:6:48"
                              }
                            ],
                            "id": 13036,
                            "name": "MemberAccess",
                            "src": "26041:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 13037,
                            "name": "Literal",
                            "src": "26058:2:48"
                          }
                        ],
                        "id": 13038,
                        "name": "BinaryOperation",
                        "src": "26041:19:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 13024
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 13039,
                                "name": "Literal",
                                "src": "26083:4:48"
                              }
                            ],
                            "id": 13040,
                            "name": "Return",
                            "src": "26076:11:48"
                          }
                        ],
                        "id": 13041,
                        "name": "Block",
                        "src": "26062:36:48"
                      }
                    ],
                    "id": 13042,
                    "name": "IfStatement",
                    "src": "26037:61:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13018,
                                  "type": "bytes memory",
                                  "value": "_proof"
                                },
                                "id": 13043,
                                "name": "Identifier",
                                "src": "26142:6:48"
                              }
                            ],
                            "id": 13044,
                            "name": "MemberAccess",
                            "src": "26142:13:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3634",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 64",
                              "value": "64"
                            },
                            "id": 13045,
                            "name": "Literal",
                            "src": "26159:2:48"
                          }
                        ],
                        "id": 13046,
                        "name": "BinaryOperation",
                        "src": "26142:19:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 13024
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 13047,
                                "name": "Literal",
                                "src": "26184:5:48"
                              }
                            ],
                            "id": 13048,
                            "name": "Return",
                            "src": "26177:12:48"
                          }
                        ],
                        "id": 13049,
                        "name": "Block",
                        "src": "26163:37:48"
                      }
                    ],
                    "id": 13050,
                    "name": "IfStatement",
                    "src": "26138:62:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        13052
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_idx",
                          "scope": 13147,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 13051,
                            "name": "ElementaryTypeName",
                            "src": "26210:4:48"
                          }
                        ],
                        "id": 13052,
                        "name": "VariableDeclaration",
                        "src": "26210:9:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 13020,
                          "type": "uint256",
                          "value": "_index"
                        },
                        "id": 13053,
                        "name": "Identifier",
                        "src": "26222:6:48"
                      }
                    ],
                    "id": 13054,
                    "name": "VariableDeclarationStatement",
                    "src": "26210:18:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        13056
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_root",
                          "scope": 13147,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 13055,
                            "name": "ElementaryTypeName",
                            "src": "26238:7:48"
                          }
                        ],
                        "id": 13056,
                        "name": "VariableDeclaration",
                        "src": "26238:13:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "toBytes32",
                              "referencedDeclaration": 13400,
                              "type": "function (bytes memory) pure returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13018,
                                          "type": "bytes memory",
                                          "value": "_proof"
                                        },
                                        "id": 13057,
                                        "name": "Identifier",
                                        "src": "26254:6:48"
                                      }
                                    ],
                                    "id": 13058,
                                    "name": "MemberAccess",
                                    "src": "26254:12:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 13018,
                                              "type": "bytes memory",
                                              "value": "_proof"
                                            },
                                            "id": 13059,
                                            "name": "Identifier",
                                            "src": "26267:6:48"
                                          }
                                        ],
                                        "id": 13060,
                                        "name": "MemberAccess",
                                        "src": "26267:13:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 13061,
                                        "name": "Literal",
                                        "src": "26283:2:48"
                                      }
                                    ],
                                    "id": 13062,
                                    "name": "BinaryOperation",
                                    "src": "26267:18:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 13063,
                                    "name": "Literal",
                                    "src": "26287:2:48"
                                  }
                                ],
                                "id": 13064,
                                "name": "FunctionCall",
                                "src": "26254:36:48"
                              }
                            ],
                            "id": 13065,
                            "name": "MemberAccess",
                            "src": "26254:46:48"
                          }
                        ],
                        "id": 13066,
                        "name": "FunctionCall",
                        "src": "26254:48:48"
                      }
                    ],
                    "id": 13067,
                    "name": "VariableDeclarationStatement",
                    "src": "26238:64:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        13069
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_current",
                          "scope": 13147,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 13068,
                            "name": "ElementaryTypeName",
                            "src": "26312:7:48"
                          }
                        ],
                        "id": 13069,
                        "name": "VariableDeclaration",
                        "src": "26312:16:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "toBytes32",
                              "referencedDeclaration": 13400,
                              "type": "function (bytes memory) pure returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "slice",
                                      "referencedDeclaration": 13281,
                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13018,
                                          "type": "bytes memory",
                                          "value": "_proof"
                                        },
                                        "id": 13070,
                                        "name": "Identifier",
                                        "src": "26331:6:48"
                                      }
                                    ],
                                    "id": 13071,
                                    "name": "MemberAccess",
                                    "src": "26331:12:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 13072,
                                    "name": "Literal",
                                    "src": "26344:1:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 13073,
                                    "name": "Literal",
                                    "src": "26347:2:48"
                                  }
                                ],
                                "id": 13074,
                                "name": "FunctionCall",
                                "src": "26331:19:48"
                              }
                            ],
                            "id": 13075,
                            "name": "MemberAccess",
                            "src": "26331:29:48"
                          }
                        ],
                        "id": 13076,
                        "name": "FunctionCall",
                        "src": "26331:31:48"
                      }
                    ],
                    "id": 13077,
                    "name": "VariableDeclarationStatement",
                    "src": "26312:50:48"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            13079
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 13142,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 13078,
                                "name": "ElementaryTypeName",
                                "src": "26378:4:48"
                              }
                            ],
                            "id": 13079,
                            "name": "VariableDeclaration",
                            "src": "26378:6:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 13080,
                            "name": "Literal",
                            "src": "26387:1:48"
                          }
                        ],
                        "id": 13081,
                        "name": "VariableDeclarationStatement",
                        "src": "26378:10:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13079,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 13082,
                            "name": "Identifier",
                            "src": "26390:1:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "div",
                                          "referencedDeclaration": 13874,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "length",
                                              "referencedDeclaration": null,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 13018,
                                                  "type": "bytes memory",
                                                  "value": "_proof"
                                                },
                                                "id": 13083,
                                                "name": "Identifier",
                                                "src": "26395:6:48"
                                              }
                                            ],
                                            "id": 13084,
                                            "name": "MemberAccess",
                                            "src": "26395:13:48"
                                          }
                                        ],
                                        "id": 13085,
                                        "name": "MemberAccess",
                                        "src": "26395:17:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 13086,
                                        "name": "Literal",
                                        "src": "26413:2:48"
                                      }
                                    ],
                                    "id": 13087,
                                    "name": "FunctionCall",
                                    "src": "26395:21:48"
                                  }
                                ],
                                "id": 13088,
                                "name": "TupleExpression",
                                "src": "26394:23:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 13089,
                                "name": "Literal",
                                "src": "26420:1:48"
                              }
                            ],
                            "id": 13090,
                            "name": "BinaryOperation",
                            "src": "26394:27:48"
                          }
                        ],
                        "id": 13091,
                        "name": "BinaryOperation",
                        "src": "26390:31:48"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13079,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 13092,
                                "name": "Identifier",
                                "src": "26423:1:48"
                              }
                            ],
                            "id": 13093,
                            "name": "UnaryOperation",
                            "src": "26423:3:48"
                          }
                        ],
                        "id": 13094,
                        "name": "ExpressionStatement",
                        "src": "26423:3:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "%",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13052,
                                          "type": "uint256",
                                          "value": "_idx"
                                        },
                                        "id": 13095,
                                        "name": "Identifier",
                                        "src": "26446:4:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "32",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 2",
                                          "value": "2"
                                        },
                                        "id": 13096,
                                        "name": "Literal",
                                        "src": "26453:1:48"
                                      }
                                    ],
                                    "id": 13097,
                                    "name": "BinaryOperation",
                                    "src": "26446:8:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 13098,
                                    "name": "Literal",
                                    "src": "26458:1:48"
                                  }
                                ],
                                "id": 13099,
                                "name": "BinaryOperation",
                                "src": "26446:13:48"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "bytes32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 13069,
                                              "type": "bytes32",
                                              "value": "_current"
                                            },
                                            "id": 13100,
                                            "name": "Identifier",
                                            "src": "26479:8:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "bytes32",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 13016,
                                                  "type": "function (bytes memory,bytes memory) pure returns (bytes32)",
                                                  "value": "_hash256MerkleStep"
                                                },
                                                "id": 13101,
                                                "name": "Identifier",
                                                "src": "26490:18:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "bytes memory",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_rational_32_by_1",
                                                          "typeString": "int_const 32"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "slice",
                                                      "referencedDeclaration": 13281,
                                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 13018,
                                                          "type": "bytes memory",
                                                          "value": "_proof"
                                                        },
                                                        "id": 13102,
                                                        "name": "Identifier",
                                                        "src": "26509:6:48"
                                                      }
                                                    ],
                                                    "id": 13103,
                                                    "name": "MemberAccess",
                                                    "src": "26509:12:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "*",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 13079,
                                                          "type": "uint256",
                                                          "value": "i"
                                                        },
                                                        "id": 13104,
                                                        "name": "Identifier",
                                                        "src": "26522:1:48"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "hexvalue": "3332",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "subdenomination": null,
                                                          "token": "number",
                                                          "type": "int_const 32",
                                                          "value": "32"
                                                        },
                                                        "id": 13105,
                                                        "name": "Literal",
                                                        "src": "26526:2:48"
                                                      }
                                                    ],
                                                    "id": 13106,
                                                    "name": "BinaryOperation",
                                                    "src": "26522:6:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "3332",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "number",
                                                      "type": "int_const 32",
                                                      "value": "32"
                                                    },
                                                    "id": 13107,
                                                    "name": "Literal",
                                                    "src": "26530:2:48"
                                                  }
                                                ],
                                                "id": 13108,
                                                "name": "FunctionCall",
                                                "src": "26509:24:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "bytes memory",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_bytes32",
                                                          "typeString": "bytes32"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "member_name": "encodePacked",
                                                      "referencedDeclaration": null,
                                                      "type": "function () pure returns (bytes memory)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 18347,
                                                          "type": "abi",
                                                          "value": "abi"
                                                        },
                                                        "id": 13109,
                                                        "name": "Identifier",
                                                        "src": "26535:3:48"
                                                      }
                                                    ],
                                                    "id": 13110,
                                                    "name": "MemberAccess",
                                                    "src": "26535:16:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 13069,
                                                      "type": "bytes32",
                                                      "value": "_current"
                                                    },
                                                    "id": 13111,
                                                    "name": "Identifier",
                                                    "src": "26552:8:48"
                                                  }
                                                ],
                                                "id": 13112,
                                                "name": "FunctionCall",
                                                "src": "26535:26:48"
                                              }
                                            ],
                                            "id": 13113,
                                            "name": "FunctionCall",
                                            "src": "26490:72:48"
                                          }
                                        ],
                                        "id": 13114,
                                        "name": "Assignment",
                                        "src": "26479:83:48"
                                      }
                                    ],
                                    "id": 13115,
                                    "name": "ExpressionStatement",
                                    "src": "26479:83:48"
                                  }
                                ],
                                "id": 13116,
                                "name": "Block",
                                "src": "26461:116:48"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "bytes32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 13069,
                                              "type": "bytes32",
                                              "value": "_current"
                                            },
                                            "id": 13117,
                                            "name": "Identifier",
                                            "src": "26601:8:48"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "bytes32",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 13016,
                                                  "type": "function (bytes memory,bytes memory) pure returns (bytes32)",
                                                  "value": "_hash256MerkleStep"
                                                },
                                                "id": 13118,
                                                "name": "Identifier",
                                                "src": "26612:18:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "bytes memory",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_bytes32",
                                                          "typeString": "bytes32"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "member_name": "encodePacked",
                                                      "referencedDeclaration": null,
                                                      "type": "function () pure returns (bytes memory)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 18347,
                                                          "type": "abi",
                                                          "value": "abi"
                                                        },
                                                        "id": 13119,
                                                        "name": "Identifier",
                                                        "src": "26631:3:48"
                                                      }
                                                    ],
                                                    "id": 13120,
                                                    "name": "MemberAccess",
                                                    "src": "26631:16:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 13069,
                                                      "type": "bytes32",
                                                      "value": "_current"
                                                    },
                                                    "id": 13121,
                                                    "name": "Identifier",
                                                    "src": "26648:8:48"
                                                  }
                                                ],
                                                "id": 13122,
                                                "name": "FunctionCall",
                                                "src": "26631:26:48"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "bytes memory",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_rational_32_by_1",
                                                          "typeString": "int_const 32"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "slice",
                                                      "referencedDeclaration": 13281,
                                                      "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 13018,
                                                          "type": "bytes memory",
                                                          "value": "_proof"
                                                        },
                                                        "id": 13123,
                                                        "name": "Identifier",
                                                        "src": "26659:6:48"
                                                      }
                                                    ],
                                                    "id": 13124,
                                                    "name": "MemberAccess",
                                                    "src": "26659:12:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "*",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 13079,
                                                          "type": "uint256",
                                                          "value": "i"
                                                        },
                                                        "id": 13125,
                                                        "name": "Identifier",
                                                        "src": "26672:1:48"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "hexvalue": "3332",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "subdenomination": null,
                                                          "token": "number",
                                                          "type": "int_const 32",
                                                          "value": "32"
                                                        },
                                                        "id": 13126,
                                                        "name": "Literal",
                                                        "src": "26676:2:48"
                                                      }
                                                    ],
                                                    "id": 13127,
                                                    "name": "BinaryOperation",
                                                    "src": "26672:6:48"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "3332",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "number",
                                                      "type": "int_const 32",
                                                      "value": "32"
                                                    },
                                                    "id": 13128,
                                                    "name": "Literal",
                                                    "src": "26680:2:48"
                                                  }
                                                ],
                                                "id": 13129,
                                                "name": "FunctionCall",
                                                "src": "26659:24:48"
                                              }
                                            ],
                                            "id": 13130,
                                            "name": "FunctionCall",
                                            "src": "26612:72:48"
                                          }
                                        ],
                                        "id": 13131,
                                        "name": "Assignment",
                                        "src": "26601:83:48"
                                      }
                                    ],
                                    "id": 13132,
                                    "name": "ExpressionStatement",
                                    "src": "26601:83:48"
                                  }
                                ],
                                "id": 13133,
                                "name": "Block",
                                "src": "26583:116:48"
                              }
                            ],
                            "id": 13134,
                            "name": "IfStatement",
                            "src": "26442:257:48"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 13052,
                                      "type": "uint256",
                                      "value": "_idx"
                                    },
                                    "id": 13135,
                                    "name": "Identifier",
                                    "src": "26712:4:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">>",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13052,
                                          "type": "uint256",
                                          "value": "_idx"
                                        },
                                        "id": 13136,
                                        "name": "Identifier",
                                        "src": "26719:4:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 13137,
                                        "name": "Literal",
                                        "src": "26727:1:48"
                                      }
                                    ],
                                    "id": 13138,
                                    "name": "BinaryOperation",
                                    "src": "26719:9:48"
                                  }
                                ],
                                "id": 13139,
                                "name": "Assignment",
                                "src": "26712:16:48"
                              }
                            ],
                            "id": 13140,
                            "name": "ExpressionStatement",
                            "src": "26712:16:48"
                          }
                        ],
                        "id": 13141,
                        "name": "Block",
                        "src": "26428:311:48"
                      }
                    ],
                    "id": 13142,
                    "name": "ForStatement",
                    "src": "26373:366:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 13024
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13069,
                              "type": "bytes32",
                              "value": "_current"
                            },
                            "id": 13143,
                            "name": "Identifier",
                            "src": "26755:8:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13056,
                              "type": "bytes32",
                              "value": "_root"
                            },
                            "id": 13144,
                            "name": "Identifier",
                            "src": "26767:5:48"
                          }
                        ],
                        "id": 13145,
                        "name": "BinaryOperation",
                        "src": "26755:17:48"
                      }
                    ],
                    "id": 13146,
                    "name": "Return",
                    "src": "26748:24:48"
                  }
                ],
                "id": 13147,
                "name": "Block",
                "src": "25862:917:48"
              }
            ],
            "id": 13148,
            "name": "FunctionDefinition",
            "src": "25770:1009:48"
          },
          {
            "attributes": {
              "documentation": "@notice                 performs the bitcoin difficulty retarget\n @dev                    implements the Bitcoin algorithm precisely\n @param _previousTarget  the target of the previous period\n @param _firstTimestamp  the timestamp of the first block in the difficulty period\n @param _secondTimestamp the timestamp of the last block in the difficulty period\n @return                 the new period's target threshold",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "retargetAlgorithm",
              "scope": 13216,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_previousTarget",
                      "scope": 13215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 13149,
                        "name": "ElementaryTypeName",
                        "src": "27591:7:48"
                      }
                    ],
                    "id": 13150,
                    "name": "VariableDeclaration",
                    "src": "27591:23:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_firstTimestamp",
                      "scope": 13215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 13151,
                        "name": "ElementaryTypeName",
                        "src": "27624:7:48"
                      }
                    ],
                    "id": 13152,
                    "name": "VariableDeclaration",
                    "src": "27624:23:48"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_secondTimestamp",
                      "scope": 13215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 13153,
                        "name": "ElementaryTypeName",
                        "src": "27657:7:48"
                      }
                    ],
                    "id": 13154,
                    "name": "VariableDeclaration",
                    "src": "27657:24:48"
                  }
                ],
                "id": 13155,
                "name": "ParameterList",
                "src": "27581:106:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 13215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 13156,
                        "name": "ElementaryTypeName",
                        "src": "27711:7:48"
                      }
                    ],
                    "id": 13157,
                    "name": "VariableDeclaration",
                    "src": "27711:7:48"
                  }
                ],
                "id": 13158,
                "name": "ParameterList",
                "src": "27710:9:48"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        13160
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_elapsedTime",
                          "scope": 13214,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 13159,
                            "name": "ElementaryTypeName",
                            "src": "27730:7:48"
                          }
                        ],
                        "id": 13160,
                        "name": "VariableDeclaration",
                        "src": "27730:20:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sub",
                              "referencedDeclaration": 13895,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13154,
                                  "type": "uint256",
                                  "value": "_secondTimestamp"
                                },
                                "id": 13161,
                                "name": "Identifier",
                                "src": "27753:16:48"
                              }
                            ],
                            "id": 13162,
                            "name": "MemberAccess",
                            "src": "27753:20:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13152,
                              "type": "uint256",
                              "value": "_firstTimestamp"
                            },
                            "id": 13163,
                            "name": "Identifier",
                            "src": "27774:15:48"
                          }
                        ],
                        "id": 13164,
                        "name": "FunctionCall",
                        "src": "27753:37:48"
                      }
                    ],
                    "id": 13165,
                    "name": "VariableDeclarationStatement",
                    "src": "27730:60:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13160,
                              "type": "uint256",
                              "value": "_elapsedTime"
                            },
                            "id": 13166,
                            "name": "Identifier",
                            "src": "27874:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "div",
                                  "referencedDeclaration": 13874,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11493,
                                      "type": "uint256",
                                      "value": "RETARGET_PERIOD"
                                    },
                                    "id": 13167,
                                    "name": "Identifier",
                                    "src": "27889:15:48"
                                  }
                                ],
                                "id": 13168,
                                "name": "MemberAccess",
                                "src": "27889:19:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "34",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 4",
                                  "value": "4"
                                },
                                "id": 13169,
                                "name": "Literal",
                                "src": "27909:1:48"
                              }
                            ],
                            "id": 13170,
                            "name": "FunctionCall",
                            "src": "27889:22:48"
                          }
                        ],
                        "id": 13171,
                        "name": "BinaryOperation",
                        "src": "27874:37:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 13160,
                                      "type": "uint256",
                                      "value": "_elapsedTime"
                                    },
                                    "id": 13172,
                                    "name": "Identifier",
                                    "src": "27927:12:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "div",
                                          "referencedDeclaration": 13874,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11493,
                                              "type": "uint256",
                                              "value": "RETARGET_PERIOD"
                                            },
                                            "id": 13173,
                                            "name": "Identifier",
                                            "src": "27942:15:48"
                                          }
                                        ],
                                        "id": 13174,
                                        "name": "MemberAccess",
                                        "src": "27942:19:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "34",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 4",
                                          "value": "4"
                                        },
                                        "id": 13175,
                                        "name": "Literal",
                                        "src": "27962:1:48"
                                      }
                                    ],
                                    "id": 13176,
                                    "name": "FunctionCall",
                                    "src": "27942:22:48"
                                  }
                                ],
                                "id": 13177,
                                "name": "Assignment",
                                "src": "27927:37:48"
                              }
                            ],
                            "id": 13178,
                            "name": "ExpressionStatement",
                            "src": "27927:37:48"
                          }
                        ],
                        "id": 13179,
                        "name": "Block",
                        "src": "27913:62:48"
                      }
                    ],
                    "id": 13180,
                    "name": "IfStatement",
                    "src": "27870:105:48"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13160,
                              "type": "uint256",
                              "value": "_elapsedTime"
                            },
                            "id": 13181,
                            "name": "Identifier",
                            "src": "27988:12:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "mul",
                                  "referencedDeclaration": 13860,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11493,
                                      "type": "uint256",
                                      "value": "RETARGET_PERIOD"
                                    },
                                    "id": 13182,
                                    "name": "Identifier",
                                    "src": "28003:15:48"
                                  }
                                ],
                                "id": 13183,
                                "name": "MemberAccess",
                                "src": "28003:19:48"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "34",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 4",
                                  "value": "4"
                                },
                                "id": 13184,
                                "name": "Literal",
                                "src": "28023:1:48"
                              }
                            ],
                            "id": 13185,
                            "name": "FunctionCall",
                            "src": "28003:22:48"
                          }
                        ],
                        "id": 13186,
                        "name": "BinaryOperation",
                        "src": "27988:37:48"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 13160,
                                      "type": "uint256",
                                      "value": "_elapsedTime"
                                    },
                                    "id": 13187,
                                    "name": "Identifier",
                                    "src": "28041:12:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "mul",
                                          "referencedDeclaration": 13860,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11493,
                                              "type": "uint256",
                                              "value": "RETARGET_PERIOD"
                                            },
                                            "id": 13188,
                                            "name": "Identifier",
                                            "src": "28056:15:48"
                                          }
                                        ],
                                        "id": 13189,
                                        "name": "MemberAccess",
                                        "src": "28056:19:48"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "34",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 4",
                                          "value": "4"
                                        },
                                        "id": 13190,
                                        "name": "Literal",
                                        "src": "28076:1:48"
                                      }
                                    ],
                                    "id": 13191,
                                    "name": "FunctionCall",
                                    "src": "28056:22:48"
                                  }
                                ],
                                "id": 13192,
                                "name": "Assignment",
                                "src": "28041:37:48"
                              }
                            ],
                            "id": 13193,
                            "name": "ExpressionStatement",
                            "src": "28041:37:48"
                          }
                        ],
                        "id": 13194,
                        "name": "Block",
                        "src": "28027:62:48"
                      }
                    ],
                    "id": 13195,
                    "name": "IfStatement",
                    "src": "27984:105:48"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        13197
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_adjusted",
                          "scope": 13214,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 13196,
                            "name": "ElementaryTypeName",
                            "src": "28346:7:48"
                          }
                        ],
                        "id": 13197,
                        "name": "VariableDeclaration",
                        "src": "28346:17:48"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mul",
                              "referencedDeclaration": 13860,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_65536_by_1",
                                          "typeString": "int_const 65536"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "div",
                                      "referencedDeclaration": 13874,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13150,
                                          "type": "uint256",
                                          "value": "_previousTarget"
                                        },
                                        "id": 13198,
                                        "name": "Identifier",
                                        "src": "28366:15:48"
                                      }
                                    ],
                                    "id": 13199,
                                    "name": "MemberAccess",
                                    "src": "28366:19:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3635353336",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 65536",
                                      "value": "65536"
                                    },
                                    "id": 13200,
                                    "name": "Literal",
                                    "src": "28386:5:48"
                                  }
                                ],
                                "id": 13201,
                                "name": "FunctionCall",
                                "src": "28366:26:48"
                              }
                            ],
                            "id": 13202,
                            "name": "MemberAccess",
                            "src": "28366:30:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13160,
                              "type": "uint256",
                              "value": "_elapsedTime"
                            },
                            "id": 13203,
                            "name": "Identifier",
                            "src": "28397:12:48"
                          }
                        ],
                        "id": 13204,
                        "name": "FunctionCall",
                        "src": "28366:44:48"
                      }
                    ],
                    "id": 13205,
                    "name": "VariableDeclarationStatement",
                    "src": "28346:64:48"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 13158
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_65536_by_1",
                                  "typeString": "int_const 65536"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mul",
                              "referencedDeclaration": 13860,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "div",
                                      "referencedDeclaration": 13874,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13197,
                                          "type": "uint256",
                                          "value": "_adjusted"
                                        },
                                        "id": 13206,
                                        "name": "Identifier",
                                        "src": "28427:9:48"
                                      }
                                    ],
                                    "id": 13207,
                                    "name": "MemberAccess",
                                    "src": "28427:13:48"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11493,
                                      "type": "uint256",
                                      "value": "RETARGET_PERIOD"
                                    },
                                    "id": 13208,
                                    "name": "Identifier",
                                    "src": "28441:15:48"
                                  }
                                ],
                                "id": 13209,
                                "name": "FunctionCall",
                                "src": "28427:30:48"
                              }
                            ],
                            "id": 13210,
                            "name": "MemberAccess",
                            "src": "28427:34:48"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3635353336",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 65536",
                              "value": "65536"
                            },
                            "id": 13211,
                            "name": "Literal",
                            "src": "28462:5:48"
                          }
                        ],
                        "id": 13212,
                        "name": "FunctionCall",
                        "src": "28427:41:48"
                      }
                    ],
                    "id": 13213,
                    "name": "Return",
                    "src": "28420:48:48"
                  }
                ],
                "id": 13214,
                "name": "Block",
                "src": "27720:755:48"
              }
            ],
            "id": 13215,
            "name": "FunctionDefinition",
            "src": "27555:920:48"
          }
        ],
        "id": 13216,
        "name": "ContractDefinition",
        "src": "176:28301:48"
      }
    ],
    "id": 13217,
    "name": "SourceUnit",
    "src": "0:28478:48"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xA44255d39bd0320732bB550d9CD85ba7b8c154d6",
      "transactionHash": "0xcb1a25ab1d68b1d0600ec170f4da3bb2fb68a815de29ab68cbd19a62ab2aa518"
    }
  },
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:01:17.093Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}