{
  "contractName": "Bech32",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the Bech32 address generation\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/Bech32.sol\":\"Bech32\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]}},\"version\":1}",
  "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201c2b58c277b06128a10efc19ef226cfe7c83a376981c7b84802e13cdd622881864736f6c634300081e0033",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201c2b58c277b06128a10efc19ef226cfe7c83a376981c7b84802e13cdd622881864736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "211:13199:110:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;211:13199:110;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "211:13199:110:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: MIT\r\n// Stratonet Contracts (last updated v1.0.0) (utils/Bech32.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Collection of functions related to the Bech32 address generation\r\n */\r\nlibrary Bech32 {\r\n    bytes constant ALPHABET = \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\";\r\n    bytes constant ALPHABET_REV = hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\";\r\n    bytes constant ALPHABET_REV_LOWER_ONLY = hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\";\r\n\r\n    // 0f <= 0: 48      | 30\r\n    // 0a <= 2: 50      | 32\r\n    // 11 <= 3: 51      | 33\r\n    // 15 <= 4: 52      | 34\r\n    // 14 <= 5: 53      | 35\r\n    // 1a <= 6: 54      | 36\r\n    // 1e <= 7: 55      | 37\r\n    // 07 <= 8: 56      | 38\r\n    // 05 <= 9: 57      | 39\r\n    \r\n    // 1d <= a: 97, 65  | 61, 41\r\n    // 18 <= c: 99, 67  | 63, 43\r\n    // 0d <= d: 100, 68 | 64, 44\r\n    // 19 <= e: 101, 69 | 65, 45\r\n    // 09 <= f: 102, 70 | 66, 46\r\n    // 08 <= g: 103, 71 | 67, 47\r\n    // 17 <= h: 104, 72 | 68, 48\r\n    // 12 <= j: 106, 74 | 6A, 4A\r\n    // 16 <= k: 107, 75 | 6B, 4B\r\n    // 1f <= l: 108, 76 | 6C, 4C\r\n    // 1b <= m: 109, 77 | 6D, 4D\r\n    // 13 <= n: 110, 78 | 6E, 4E\r\n    \r\n    // 01 <= p: 112, 80 | 70, 50\r\n    // 00 <= q: 113, 81 | 71, 51\r\n    // 03 <= r: 114, 82 | 72, 52\r\n    // 10 <= s: 115, 83 | 73, 53\r\n    // 0b <= t: 116, 84 | 74, 54\r\n    // 1c <= u: 117, 85 | 75, 55\r\n    // 0c <= v: 118, 86 | 76, 56\r\n    // 0e <= w: 119, 87 | 77, 57\r\n    // 06 <= x: 120, 88 | 78, 58\r\n    // 04 <= y: 121, 89 | 79, 59\r\n    // 02 <= z: 122, 90 | 7A, 5A\r\n    \r\n    uint32 constant ENC_BECH32 = 1;\r\n    uint32 constant ENC_BECH32M = 0x2bc830a3;\r\n\r\n\r\n    function toBech32(\r\n        address addr,\r\n        string memory prefix\r\n    ) internal pure returns (string memory) {\r\n        return toBech32(abi.encodePacked(addr), prefix);\r\n    }\r\n\r\n    function toBech32(\r\n        bytes memory data,\r\n        string memory prefix\r\n    ) internal pure returns (string memory) {\r\n        bytes memory hrp = abi.encodePacked(prefix);\r\n        bytes memory input = convertBits(data, 8, 5, true);\r\n        return encode(hrp, input, ENC_BECH32);\r\n    }\r\n\r\n    function toBech32(\r\n        address addr,\r\n        string memory prefix,\r\n        uint8 version\r\n    ) internal pure returns (string memory) {\r\n        return toBech32(abi.encodePacked(addr), prefix, version);\r\n    }\r\n\r\n    function toBech32(\r\n        bytes memory data,\r\n        string memory prefix,\r\n        uint8 version\r\n    ) internal pure returns (string memory) {\r\n        bytes memory hrp = abi.encodePacked(prefix);\r\n        bytes memory input = convertBits(data, 8, 5, true);\r\n        uint32 enc = ENC_BECH32;\r\n        if (version > 0) {\r\n            enc = ENC_BECH32M;\r\n        }\r\n        bytes memory inputWithV = abi.encodePacked(bytes1(version), input);\r\n        return encode(hrp, inputWithV, enc);\r\n    }\r\n\r\n    function fromBech32(\r\n        string memory bechAddr\r\n    ) internal pure returns (address) {\r\n        (, uint8[] memory data) = decode(\r\n            abi.encodePacked(bechAddr),\r\n            ENC_BECH32\r\n        );\r\n        bytes memory input = convertBits(data, 5, 8, false);\r\n        return getAddressFromBytes(input);\r\n    }\r\n\r\n    function fromBech32(\r\n        string memory bechAddr,\r\n        string memory prefix\r\n    ) internal pure returns (address) {\r\n        (bytes memory dHrp, uint8[] memory data) = decode(\r\n            abi.encodePacked(bechAddr),\r\n            ENC_BECH32\r\n        );\r\n        _requireHrpMatch(abi.encodePacked(prefix), dHrp);\r\n        bytes memory input = convertBits(data, 5, 8, false);\r\n        return getAddressFromBytes(input);\r\n    }\r\n\r\n    function fromBech32WithVersion(\r\n        string memory bechAddr,\r\n        string memory prefix,\r\n        uint32 enc\r\n    ) internal pure returns (uint8, bytes memory) {\r\n        (bytes memory dHrp, uint8[] memory data) = decode(\r\n            abi.encodePacked(bechAddr),\r\n            enc\r\n        );\r\n        _requireHrpMatch(abi.encodePacked(prefix), dHrp);\r\n        require(!(data.length < 1 || data[0] > 16), \"Bech32: wrong version\");\r\n        uint8[] memory dataNoV = new uint8[](data.length - 1);\r\n        for (uint8 i = 1; i < data.length; ++i) {\r\n            dataNoV[i - 1] = data[i];\r\n        }\r\n        bytes memory input = convertBits(dataNoV, 5, 8, false);\r\n        require(\r\n            input.length >= 2 && input.length <= 40,\r\n            \"Bech32: wrong bits length\"\r\n        );\r\n        require(\r\n            !(data[0] == 0 && input.length != 20 && input.length != 32),\r\n            \"Bech32: wrong bits length for version\"\r\n        );\r\n        return (uint8(data[0]), input);\r\n    }\r\n\r\n    function _requireHrpMatch(\r\n        bytes memory hrp1,\r\n        bytes memory hrp2\r\n    ) internal pure {\r\n        require(keccak256(hrp1) == keccak256(hrp2), \"Bech32: hrp mismatch\");\r\n    }\r\n\r\n    function getAddressFromBytes(\r\n        bytes memory data\r\n    ) internal pure returns (address) {\r\n        require(data.length == 20, \"Bech32: invalid data length\");\r\n\r\n        address addr;\r\n        assembly {\r\n            addr := mload(add(data, 20))\r\n        }\r\n        return addr;\r\n    }\r\n\r\n    function encode(\r\n        bytes memory hrp,\r\n        bytes memory input,\r\n        uint32 enc\r\n    ) internal pure returns (string memory) {\r\n        unchecked {\r\n            uint8[] memory checksum = createChecksum(hrp, input, enc);\r\n            bytes memory result = new bytes(hrp.length + input.length + checksum.length + 1);\r\n            for (uint i; i < hrp.length; ++ i) {\r\n                result[i] = hrp[i];\r\n            }\r\n            result[hrp.length] = bytes1(\"1\");\r\n            uint offset = hrp.length + 1;\r\n            for (uint i; i < input.length; ++ i) {\r\n                uint8 _data = uint8(input[i]);\r\n                if (_data < ALPHABET.length) {\r\n                    result[i + offset] = ALPHABET[_data];\r\n                }\r\n            }\r\n            offset += input.length;\r\n            for (uint i; i < checksum.length; ++ i) {\r\n                uint8 _data = uint8(checksum[i]);\r\n                if (_data < ALPHABET.length) {\r\n                    result[i + offset] = ALPHABET[_data];\r\n                }\r\n            }\r\n            return string(result);\r\n        }\r\n    }\r\n\r\n    function decode(bytes memory bechStr, uint32 enc) \r\n        internal pure \r\n        returns (bytes memory hrp, uint8[] memory data)\r\n    {\r\n        unchecked {\r\n            uint pos;\r\n            require(\r\n                bechStr.length <= 90, \r\n                \"Bech32: invalid string length\"\r\n            );\r\n            for (uint p = 0; p < bechStr.length; ++ p) {\r\n                uint8 charAt = uint8(bechStr[p]);\r\n                require(\r\n                    charAt >= 33 \r\n                        && charAt <= 126, \r\n                    \"Bech32: wrong char\"\r\n                );\r\n                if (charAt == uint8(bytes1(\"1\"))) {\r\n                    require(\r\n                        pos == 0 \r\n                            && p >= 1 \r\n                            && p + 7 <= bechStr.length, \r\n                        \"Bech32: wrong pos of 1\"\r\n                    );\r\n                    pos = p;\r\n                }\r\n            }\r\n            hrp = new bytes(pos);\r\n            for (uint i; i < pos; ++ i) {\r\n                hrp[i] = bechStr[i]; \r\n            }\r\n            data = new uint8[](bechStr.length - pos - 1);\r\n            for (uint i; i < data.length; ++ i) {\r\n                bytes1 charAt = ALPHABET_REV_LOWER_ONLY[uint8(bechStr[i + pos + 1])];\r\n                require(charAt != 0xff, \"Bech32: byte not in alphabet\");\r\n                data[i] = uint8(charAt);\r\n            }\r\n            require(\r\n                verifyChecksum(hrp, data, enc), \r\n                \"Bech32: wrong checksum\"\r\n            );\r\n            uint dataLength = data.length - 6;\r\n            assembly {\r\n                mstore(data, dataLength)\r\n            }\r\n        }\r\n    }\r\n\r\n    function hrpExpand(\r\n        bytes memory hrp\r\n    ) internal pure returns (uint8[] memory ret) {\r\n        unchecked {\r\n            ret = new uint8[](hrp.length + hrp.length + 1);\r\n            for (uint p; p < hrp.length; ++ p) {\r\n                ret[p] = uint8(hrp[p]) >> 5;\r\n                ret[p + hrp.length + 1] = uint8(hrp[p]) & 31;\r\n            }\r\n        }\r\n    }\r\n\r\n    function polymod(uint32[] memory values) internal pure returns (uint32) {\r\n        uint32 chk = 1;\r\n        uint32[5] memory GEN = [\r\n            0x3b6a57b2,\r\n            0x26508e6d,\r\n            0x1ea119fa,\r\n            0x3d4233dd,\r\n            0x2a1462b3\r\n        ];\r\n\r\n        unchecked {\r\n            for (uint32 i = 0; i < values.length; ++i) {\r\n                uint32 top = chk >> 25;\r\n                chk = (uint32(chk & 0x1ffffff) << 5) ^ uint32(values[i]);\r\n                for (uint32 j = 0; j < 5; ++j) {\r\n                    if (((top >> j) & 1) == 1) {\r\n                        chk ^= GEN[j];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return chk;\r\n    }\r\n\r\n    function createChecksum(\r\n        bytes memory hrp,\r\n        bytes memory data,\r\n        uint32 enc\r\n    ) internal pure returns (uint8[] memory res) {\r\n        unchecked {\r\n            uint8[] memory values = hrpExpand(hrp);\r\n            uint32[] memory comb = new uint32[](values.length + data.length + 6);\r\n\r\n            for (uint i; i < values.length + data.length; ++ i) {\r\n                if (i < values.length) {\r\n                    comb[i] = uint32(values[i]);\r\n                } else {\r\n                    comb[i] = uint32(uint8(data[i - values.length]));\r\n                }\r\n            }\r\n            \r\n            res = new uint8[](6);\r\n            uint32 mod = polymod(comb) ^ enc;\r\n            for (uint p = 0; p < 6; ++ p) {\r\n                res[p] = uint8((mod >> (5 * (5 - p))) & 31);\r\n            }\r\n        }\r\n    }\r\n\r\n    function verifyChecksum(\r\n        bytes memory hrp,\r\n        uint8[] memory data,\r\n        uint32 enc\r\n    ) internal pure returns (bool) {\r\n        unchecked {\r\n            uint8[] memory ehrp = hrpExpand(hrp);\r\n            uint32[] memory cData = new uint32[](ehrp.length + data.length);\r\n            for (uint i; i < ehrp.length; ++ i) {\r\n                cData[i] = uint32(ehrp[i]);\r\n            }\r\n            for (uint i; i < data.length; ++ i) {\r\n                cData[i + ehrp.length] = uint32(data[i]);\r\n            }\r\n            return polymod(cData) == enc;\r\n        }\r\n    }\r\n\r\n    function convertBits(\r\n        bytes memory data,\r\n        uint frombits,\r\n        uint tobits,\r\n        bool pad\r\n    ) internal pure returns (bytes memory) {\r\n        uint8[] memory dataBits = new uint8[](data.length);\r\n\r\n        for (uint32 p = 0; p < dataBits.length; ++p) {\r\n            dataBits[p] = uint8(data[p]);\r\n        }\r\n\r\n        return _convertBits(dataBits, frombits, tobits, pad);\r\n    }\r\n\r\n    function convertBits(\r\n        uint8[] memory data,\r\n        uint frombits,\r\n        uint tobits,\r\n        bool pad\r\n    ) internal pure returns (bytes memory) {\r\n        return _convertBits(data, frombits, tobits, pad);\r\n    }\r\n\r\n    function _convertBits(\r\n        uint8[] memory dataBits,\r\n        uint frombits,\r\n        uint tobits,\r\n        bool pad\r\n    ) internal pure returns (bytes memory ret) {\r\n        uint acc = 0;\r\n        uint bits = 0;\r\n\r\n        uint maxv = (1 << tobits) - 1;\r\n\r\n        unchecked {\r\n            for (uint p; p < dataBits.length; ++p) {\r\n                uint8 value = dataBits[p];\r\n                require(\r\n                    value >= 0 && (value >> frombits) == 0,\r\n                    \"Bech32: value must be non-negative and fit in frombits\"\r\n                );\r\n\r\n                acc = (acc << frombits) | value;\r\n                bits += frombits;\r\n\r\n                while (bits >= tobits) {\r\n                    bits -= tobits;\r\n                    ret = abi.encodePacked(\r\n                        ret,\r\n                        bytes1(uint8((acc >> bits) & maxv))\r\n                    );\r\n                }\r\n            }\r\n        }\r\n\r\n        if (pad) {\r\n            if (bits > 0) {\r\n                ret = abi.encodePacked(\r\n                    ret,\r\n                    bytes1(uint8((acc << (tobits - bits)) & maxv))\r\n                );\r\n            }\r\n        } else {\r\n            require(\r\n                bits < frombits || ((acc << (tobits - bits)) & maxv) == 0,\r\n                \"Bech32: invalid padding or value size\"\r\n            );\r\n        }\r\n    }\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\libs\\Bech32.sol",
  "ast": {
    "absolutePath": "project:/contracts/libs/Bech32.sol",
    "exportedSymbols": {
      "Bech32": [
        31372
      ]
    },
    "id": 31373,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 29986,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "100:23:110"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Bech32",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 29987,
          "nodeType": "StructuredDocumentation",
          "src": "127:82:110",
          "text": " @dev Collection of functions related to the Bech32 address generation"
        },
        "fullyImplemented": true,
        "id": 31372,
        "linearizedBaseContracts": [
          31372
        ],
        "name": "Bech32",
        "nameLocation": "219:6:110",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 29990,
            "mutability": "constant",
            "name": "ALPHABET",
            "nameLocation": "248:8:110",
            "nodeType": "VariableDeclaration",
            "scope": 31372,
            "src": "233:60:110",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory_ptr",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 29988,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "233:5:110",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "hexValue": "71707a7279397838676632747664773073336a6e35346b686365366d7561376c",
              "id": 29989,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "259:34:110",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_fe46e7811aa772220414abf676d1f699331bebeac02e9f688b4e6a861070d4df",
                "typeString": "literal_string \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\""
              },
              "value": "qpzry9x8gf2tvdw0s3jn54khce6mua7l"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 29993,
            "mutability": "constant",
            "name": "ALPHABET_REV",
            "nameLocation": "315:12:110",
            "nodeType": "VariableDeclaration",
            "scope": 31372,
            "src": "300:547:110",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory_ptr",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 29991,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "300:5:110",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "hexValue": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
              "id": 29992,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "hexString",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "330:517:110",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0cc2f264e88daa0a2d7055222781b00a2c15c4cc02e5bac4341846379adfb56d",
                "typeString": "literal_string hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\""
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 29996,
            "mutability": "constant",
            "name": "ALPHABET_REV_LOWER_ONLY",
            "nameLocation": "869:23:110",
            "nodeType": "VariableDeclaration",
            "scope": 31372,
            "src": "854:558:110",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory_ptr",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 29994,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "854:5:110",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "hexValue": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
              "id": 29995,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "hexString",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "895:517:110",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c8d3b1ac944044017f62cd6afb4942669ca30804db13dd8406bdeaca3edf27e1",
                "typeString": "literal_string hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\""
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 29999,
            "mutability": "constant",
            "name": "ENC_BECH32",
            "nameLocation": "2507:10:110",
            "nodeType": "VariableDeclaration",
            "scope": 31372,
            "src": "2491:30:110",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint32",
              "typeString": "uint32"
            },
            "typeName": {
              "id": 29997,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "2491:6:110",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            },
            "value": {
              "hexValue": "31",
              "id": 29998,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2520:1:110",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 30002,
            "mutability": "constant",
            "name": "ENC_BECH32M",
            "nameLocation": "2544:11:110",
            "nodeType": "VariableDeclaration",
            "scope": 31372,
            "src": "2528:40:110",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint32",
              "typeString": "uint32"
            },
            "typeName": {
              "id": 30000,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "2528:6:110",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            },
            "value": {
              "hexValue": "30783262633833306133",
              "id": 30001,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2558:10:110",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_734539939_by_1",
                "typeString": "int_const 734539939"
              },
              "value": "0x2bc830a3"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30019,
              "nodeType": "Block",
              "src": "2696:66:110",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30014,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30004,
                            "src": "2740:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 30012,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2723:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2727:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "2723:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2723:22:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30016,
                        "name": "prefix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30006,
                        "src": "2747:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 30011,
                      "name": "toBech32",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        30020,
                        30052,
                        30073,
                        30131
                      ],
                      "referencedDeclaration": 30052,
                      "src": "2714:8:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (bytes memory,string memory) pure returns (string memory)"
                      }
                    },
                    "id": 30017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2714:40:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 30010,
                  "id": 30018,
                  "nodeType": "Return",
                  "src": "2707:47:110"
                }
              ]
            },
            "id": 30020,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toBech32",
            "nameLocation": "2588:8:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30007,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30004,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "2615:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30020,
                  "src": "2607:12:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30003,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2607:7:110",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30006,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "2644:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30020,
                  "src": "2630:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30005,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2630:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2596:61:110"
            },
            "returnParameters": {
              "id": 30010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30009,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30020,
                  "src": "2681:13:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30008,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2681:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2680:15:110"
            },
            "scope": 31372,
            "src": "2579:183:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30051,
              "nodeType": "Block",
              "src": "2892:171:110",
              "statements": [
                {
                  "assignments": [
                    30030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30030,
                      "mutability": "mutable",
                      "name": "hrp",
                      "nameLocation": "2916:3:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30051,
                      "src": "2903:16:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30029,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2903:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30035,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30033,
                        "name": "prefix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30024,
                        "src": "2939:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 30031,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2922:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 30032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2926:12:110",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "2922:16:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 30034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2922:24:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2903:43:110"
                },
                {
                  "assignments": [
                    30037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30037,
                      "mutability": "mutable",
                      "name": "input",
                      "nameLocation": "2970:5:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30051,
                      "src": "2957:18:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30036,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2957:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30044,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30039,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30022,
                        "src": "2990:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "38",
                        "id": 30040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2996:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      },
                      {
                        "hexValue": "35",
                        "id": 30041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2999:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      {
                        "hexValue": "74727565",
                        "id": 30042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3002:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 30038,
                      "name": "convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        31192,
                        31214
                      ],
                      "referencedDeclaration": 31192,
                      "src": "2978:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 30043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2978:29:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2957:50:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 30046,
                        "name": "hrp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30030,
                        "src": "3032:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30047,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30037,
                        "src": "3037:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30048,
                        "name": "ENC_BECH32",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29999,
                        "src": "3044:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 30045,
                      "name": "encode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30551,
                      "src": "3025:6:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,uint32) pure returns (string memory)"
                      }
                    },
                    "id": 30049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3025:30:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 30028,
                  "id": 30050,
                  "nodeType": "Return",
                  "src": "3018:37:110"
                }
              ]
            },
            "id": 30052,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toBech32",
            "nameLocation": "2779:8:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30022,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "2811:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30052,
                  "src": "2798:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30021,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2798:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30024,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "2840:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30052,
                  "src": "2826:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30023,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2826:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2787:66:110"
            },
            "returnParameters": {
              "id": 30028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30027,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30052,
                  "src": "2877:13:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30026,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2877:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2876:15:110"
            },
            "scope": 31372,
            "src": "2770:293:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30072,
              "nodeType": "Block",
              "src": "3212:75:110",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30066,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30054,
                            "src": "3256:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 30064,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3239:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3243:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3239:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3239:22:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30068,
                        "name": "prefix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30056,
                        "src": "3263:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 30069,
                        "name": "version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30058,
                        "src": "3271:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 30063,
                      "name": "toBech32",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        30020,
                        30052,
                        30073,
                        30131
                      ],
                      "referencedDeclaration": 30131,
                      "src": "3230:8:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (bytes memory,string memory,uint8) pure returns (string memory)"
                      }
                    },
                    "id": 30070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3230:49:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 30062,
                  "id": 30071,
                  "nodeType": "Return",
                  "src": "3223:56:110"
                }
              ]
            },
            "id": 30073,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toBech32",
            "nameLocation": "3080:8:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30054,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "3107:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30073,
                  "src": "3099:12:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30053,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3099:7:110",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30056,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "3136:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30073,
                  "src": "3122:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30055,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3122:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30058,
                  "mutability": "mutable",
                  "name": "version",
                  "nameLocation": "3159:7:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30073,
                  "src": "3153:13:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 30057,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3153:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3088:85:110"
            },
            "returnParameters": {
              "id": 30062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30061,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30073,
                  "src": "3197:13:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30060,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3197:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3196:15:110"
            },
            "scope": 31372,
            "src": "3071:216:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30130,
              "nodeType": "Block",
              "src": "3441:351:110",
              "statements": [
                {
                  "assignments": [
                    30085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30085,
                      "mutability": "mutable",
                      "name": "hrp",
                      "nameLocation": "3465:3:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30130,
                      "src": "3452:16:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30084,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3452:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30090,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30088,
                        "name": "prefix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30077,
                        "src": "3488:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 30086,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "3471:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 30087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "3475:12:110",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "3471:16:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 30089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3471:24:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3452:43:110"
                },
                {
                  "assignments": [
                    30092
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30092,
                      "mutability": "mutable",
                      "name": "input",
                      "nameLocation": "3519:5:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30130,
                      "src": "3506:18:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30091,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3506:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30099,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30094,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30075,
                        "src": "3539:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "38",
                        "id": 30095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3545:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      },
                      {
                        "hexValue": "35",
                        "id": 30096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3548:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      {
                        "hexValue": "74727565",
                        "id": 30097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3551:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 30093,
                      "name": "convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        31192,
                        31214
                      ],
                      "referencedDeclaration": 31192,
                      "src": "3527:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 30098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3527:29:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3506:50:110"
                },
                {
                  "assignments": [
                    30101
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30101,
                      "mutability": "mutable",
                      "name": "enc",
                      "nameLocation": "3574:3:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30130,
                      "src": "3567:10:110",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 30100,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3567:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30103,
                  "initialValue": {
                    "id": 30102,
                    "name": "ENC_BECH32",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 29999,
                    "src": "3580:10:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3567:23:110"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 30106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 30104,
                      "name": "version",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30079,
                      "src": "3605:7:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 30105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3615:1:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3605:11:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 30112,
                  "nodeType": "IfStatement",
                  "src": "3601:61:110",
                  "trueBody": {
                    "id": 30111,
                    "nodeType": "Block",
                    "src": "3618:44:110",
                    "statements": [
                      {
                        "expression": {
                          "id": 30109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 30107,
                            "name": "enc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30101,
                            "src": "3633:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 30108,
                            "name": "ENC_BECH32M",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30002,
                            "src": "3639:11:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3633:17:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 30110,
                        "nodeType": "ExpressionStatement",
                        "src": "3633:17:110"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    30114
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30114,
                      "mutability": "mutable",
                      "name": "inputWithV",
                      "nameLocation": "3685:10:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30130,
                      "src": "3672:23:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30113,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3672:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30123,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30119,
                            "name": "version",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30079,
                            "src": "3722:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 30118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3715:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes1_$",
                            "typeString": "type(bytes1)"
                          },
                          "typeName": {
                            "id": 30117,
                            "name": "bytes1",
                            "nodeType": "ElementaryTypeName",
                            "src": "3715:6:110",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 30120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3715:15:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      },
                      {
                        "id": 30121,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30092,
                        "src": "3732:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 30115,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "3698:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 30116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "3702:12:110",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "3698:16:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 30122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3698:40:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3672:66:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 30125,
                        "name": "hrp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30085,
                        "src": "3763:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30126,
                        "name": "inputWithV",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30114,
                        "src": "3768:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30127,
                        "name": "enc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30101,
                        "src": "3780:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 30124,
                      "name": "encode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30551,
                      "src": "3756:6:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,uint32) pure returns (string memory)"
                      }
                    },
                    "id": 30128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3756:28:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 30083,
                  "id": 30129,
                  "nodeType": "Return",
                  "src": "3749:35:110"
                }
              ]
            },
            "id": 30131,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toBech32",
            "nameLocation": "3304:8:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30075,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "3336:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30131,
                  "src": "3323:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30074,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3323:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30077,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "3365:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30131,
                  "src": "3351:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30076,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3351:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30079,
                  "mutability": "mutable",
                  "name": "version",
                  "nameLocation": "3388:7:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30131,
                  "src": "3382:13:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 30078,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3382:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3312:90:110"
            },
            "returnParameters": {
              "id": 30083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30082,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30131,
                  "src": "3426:13:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30081,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3426:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3425:15:110"
            },
            "scope": 31372,
            "src": "3295:497:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30164,
              "nodeType": "Block",
              "src": "3892:234:110",
              "statements": [
                {
                  "assignments": [
                    null,
                    30142
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 30142,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "3921:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30164,
                      "src": "3906:19:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30140,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3906:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30141,
                        "nodeType": "ArrayTypeName",
                        "src": "3906:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30150,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30146,
                            "name": "bechAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30133,
                            "src": "3967:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 30144,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3950:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3954:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3950:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3950:26:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30148,
                        "name": "ENC_BECH32",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29999,
                        "src": "3991:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 30143,
                      "name": "decode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30741,
                      "src": "3929:6:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (bytes memory,uint32) pure returns (bytes memory,uint8[] memory)"
                      }
                    },
                    "id": 30149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3929:83:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes memory,uint8[] memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3903:109:110"
                },
                {
                  "assignments": [
                    30152
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30152,
                      "mutability": "mutable",
                      "name": "input",
                      "nameLocation": "4036:5:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30164,
                      "src": "4023:18:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30151,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4023:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30159,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30154,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30142,
                        "src": "4056:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      {
                        "hexValue": "35",
                        "id": 30155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4062:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      {
                        "hexValue": "38",
                        "id": 30156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4065:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 30157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4068:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        },
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 30153,
                      "name": "convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        31192,
                        31214
                      ],
                      "referencedDeclaration": 31214,
                      "src": "4044:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint8_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint8[] memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 30158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4044:30:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4023:51:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 30161,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30152,
                        "src": "4112:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 30160,
                      "name": "getAddressFromBytes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30390,
                      "src": "4092:19:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 30162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4092:26:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 30137,
                  "id": 30163,
                  "nodeType": "Return",
                  "src": "4085:33:110"
                }
              ]
            },
            "id": 30165,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fromBech32",
            "nameLocation": "3809:10:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30133,
                  "mutability": "mutable",
                  "name": "bechAddr",
                  "nameLocation": "3844:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30165,
                  "src": "3830:22:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3830:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3819:40:110"
            },
            "returnParameters": {
              "id": 30137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30136,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30165,
                  "src": "3883:7:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30135,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3883:7:110",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3882:9:110"
            },
            "scope": 31372,
            "src": "3800:326:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30208,
              "nodeType": "Block",
              "src": "4257:310:110",
              "statements": [
                {
                  "assignments": [
                    30175,
                    30178
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30175,
                      "mutability": "mutable",
                      "name": "dHrp",
                      "nameLocation": "4282:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30208,
                      "src": "4269:17:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30174,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4269:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 30178,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "4303:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30208,
                      "src": "4288:19:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30176,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4288:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30177,
                        "nodeType": "ArrayTypeName",
                        "src": "4288:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30186,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30182,
                            "name": "bechAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30167,
                            "src": "4349:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 30180,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "4332:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4336:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "4332:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4332:26:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30184,
                        "name": "ENC_BECH32",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29999,
                        "src": "4373:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 30179,
                      "name": "decode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30741,
                      "src": "4311:6:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (bytes memory,uint32) pure returns (bytes memory,uint8[] memory)"
                      }
                    },
                    "id": 30185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4311:83:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes memory,uint8[] memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4268:126:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30190,
                            "name": "prefix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30169,
                            "src": "4439:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 30188,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "4422:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4426:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "4422:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4422:24:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30192,
                        "name": "dHrp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30175,
                        "src": "4448:4:110",
                        "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": 30187,
                      "name": "_requireHrpMatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30368,
                      "src": "4405:16:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory,bytes memory) pure"
                      }
                    },
                    "id": 30193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4405:48:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30194,
                  "nodeType": "ExpressionStatement",
                  "src": "4405:48:110"
                },
                {
                  "assignments": [
                    30196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30196,
                      "mutability": "mutable",
                      "name": "input",
                      "nameLocation": "4477:5:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30208,
                      "src": "4464:18:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30195,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4464:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30203,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30198,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30178,
                        "src": "4497:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      {
                        "hexValue": "35",
                        "id": 30199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4503:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      {
                        "hexValue": "38",
                        "id": 30200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4506:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 30201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4509:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        },
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 30197,
                      "name": "convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        31192,
                        31214
                      ],
                      "referencedDeclaration": 31214,
                      "src": "4485:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint8_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint8[] memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 30202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4485:30:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4464:51:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 30205,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30196,
                        "src": "4553:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 30204,
                      "name": "getAddressFromBytes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30390,
                      "src": "4533:19:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 30206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:26:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 30173,
                  "id": 30207,
                  "nodeType": "Return",
                  "src": "4526:33:110"
                }
              ]
            },
            "id": 30209,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fromBech32",
            "nameLocation": "4143:10:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30167,
                  "mutability": "mutable",
                  "name": "bechAddr",
                  "nameLocation": "4178:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30209,
                  "src": "4164:22:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30166,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4164:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30169,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "4211:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30209,
                  "src": "4197:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30168,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4197:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4153:71:110"
            },
            "returnParameters": {
              "id": 30173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30172,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30209,
                  "src": "4248:7:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30171,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4248:7:110",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4247:9:110"
            },
            "scope": 31372,
            "src": "4134:433:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30348,
              "nodeType": "Block",
              "src": "4742:829:110",
              "statements": [
                {
                  "assignments": [
                    30223,
                    30226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30223,
                      "mutability": "mutable",
                      "name": "dHrp",
                      "nameLocation": "4767:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30348,
                      "src": "4754:17:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30222,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4754:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 30226,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "4788:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30348,
                      "src": "4773:19:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30224,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4773:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30225,
                        "nodeType": "ArrayTypeName",
                        "src": "4773:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30234,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30230,
                            "name": "bechAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30211,
                            "src": "4834:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 30228,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "4817:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4821:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "4817:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4817:26:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30232,
                        "name": "enc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30215,
                        "src": "4858:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 30227,
                      "name": "decode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30741,
                      "src": "4796:6:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (bytes memory,uint32) pure returns (bytes memory,uint8[] memory)"
                      }
                    },
                    "id": 30233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4796:76:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes memory,uint8[] memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4753:119:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 30238,
                            "name": "prefix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30213,
                            "src": "4917:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 30236,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "4900:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 30237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4904:12:110",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "4900:16:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 30239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4900:24:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 30240,
                        "name": "dHrp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30223,
                        "src": "4926:4:110",
                        "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": 30235,
                      "name": "_requireHrpMatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30368,
                      "src": "4883:16:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory,bytes memory) pure"
                      }
                    },
                    "id": 30241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4883:48:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30242,
                  "nodeType": "ExpressionStatement",
                  "src": "4883:48:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 30255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4950:34:110",
                        "subExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 30253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 30244,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30226,
                                    "src": "4952:4:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                      "typeString": "uint8[] memory"
                                    }
                                  },
                                  "id": 30245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4957:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "4952:11:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 30246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4966:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4952:15:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 30252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 30248,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30226,
                                    "src": "4971:4:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                      "typeString": "uint8[] memory"
                                    }
                                  },
                                  "id": 30250,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 30249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4976:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4971:7:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "3136",
                                  "id": 30251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4981:2:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "value": "16"
                                },
                                "src": "4971:12:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4952:31:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 30254,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4951:33:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4265636833323a2077726f6e672076657273696f6e",
                        "id": 30256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4986:23:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_602bb3c97ae7aaccff2a6891d18861840048f4873b23ebc8386404253dc75bf2",
                          "typeString": "literal_string \"Bech32: wrong version\""
                        },
                        "value": "Bech32: wrong version"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_602bb3c97ae7aaccff2a6891d18861840048f4873b23ebc8386404253dc75bf2",
                          "typeString": "literal_string \"Bech32: wrong version\""
                        }
                      ],
                      "id": 30243,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4942:7:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 30257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4942:68:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30258,
                  "nodeType": "ExpressionStatement",
                  "src": "4942:68:110"
                },
                {
                  "assignments": [
                    30263
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30263,
                      "mutability": "mutable",
                      "name": "dataNoV",
                      "nameLocation": "5036:7:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30348,
                      "src": "5021:22:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30261,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5021:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30262,
                        "nodeType": "ArrayTypeName",
                        "src": "5021:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30272,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 30267,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30226,
                            "src": "5058:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 30268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5063:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5058:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 30269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5072:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "5058:15:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 30266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5046:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint8[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30264,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5050:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30265,
                        "nodeType": "ArrayTypeName",
                        "src": "5050:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      }
                    },
                    "id": 30271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5046:28:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                      "typeString": "uint8[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5021:53:110"
                },
                {
                  "body": {
                    "id": 30294,
                    "nodeType": "Block",
                    "src": "5125:51:110",
                    "statements": [
                      {
                        "expression": {
                          "id": 30292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 30284,
                              "name": "dataNoV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30263,
                              "src": "5140:7:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 30288,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 30287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30285,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30274,
                                "src": "5148:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 30286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5152:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5148:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5140:14:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 30289,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30226,
                              "src": "5157:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 30291,
                            "indexExpression": {
                              "id": 30290,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30274,
                              "src": "5162:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5157:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "5140:24:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30293,
                        "nodeType": "ExpressionStatement",
                        "src": "5140:24:110"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 30277,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30274,
                      "src": "5103:1:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 30278,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30226,
                        "src": "5107:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "id": 30279,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5112:6:110",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "5107:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5103:15:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 30295,
                  "initializationExpression": {
                    "assignments": [
                      30274
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 30274,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "5096:1:110",
                        "nodeType": "VariableDeclaration",
                        "scope": 30295,
                        "src": "5090:7:110",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 30273,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5090:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 30276,
                    "initialValue": {
                      "hexValue": "31",
                      "id": 30275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5100:1:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5090:11:110"
                  },
                  "isSimpleCounterLoop": false,
                  "loopExpression": {
                    "expression": {
                      "id": 30282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "5120:3:110",
                      "subExpression": {
                        "id": 30281,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30274,
                        "src": "5122:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 30283,
                    "nodeType": "ExpressionStatement",
                    "src": "5120:3:110"
                  },
                  "nodeType": "ForStatement",
                  "src": "5085:91:110"
                },
                {
                  "assignments": [
                    30297
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30297,
                      "mutability": "mutable",
                      "name": "input",
                      "nameLocation": "5199:5:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30348,
                      "src": "5186:18:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 30296,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5186:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30304,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 30299,
                        "name": "dataNoV",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30263,
                        "src": "5219:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      {
                        "hexValue": "35",
                        "id": 30300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5228:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      {
                        "hexValue": "38",
                        "id": 30301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5231:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "8"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 30302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5234:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        },
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 30298,
                      "name": "convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        31192,
                        31214
                      ],
                      "referencedDeclaration": 31214,
                      "src": "5207:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint8_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint8[] memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 30303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5207:33:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5186:54:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 30314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 30306,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30297,
                              "src": "5273:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 30307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5279:6:110",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5273:12:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 30308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5289:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "5273:17:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 30310,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30297,
                              "src": "5294:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 30311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5300:6:110",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5294:12:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "hexValue": "3430",
                            "id": 30312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5310:2:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_40_by_1",
                              "typeString": "int_const 40"
                            },
                            "value": "40"
                          },
                          "src": "5294:18:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5273:39:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4265636833323a2077726f6e672062697473206c656e677468",
                        "id": 30315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5327:27:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_20fe1266642829f48fe72b9ee536a7d97d7e427b9e7d52cb187386ffd1ddc8e0",
                          "typeString": "literal_string \"Bech32: wrong bits length\""
                        },
                        "value": "Bech32: wrong bits length"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_20fe1266642829f48fe72b9ee536a7d97d7e427b9e7d52cb187386ffd1ddc8e0",
                          "typeString": "literal_string \"Bech32: wrong bits length\""
                        }
                      ],
                      "id": 30305,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5251:7:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 30316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5251:114:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30317,
                  "nodeType": "ExpressionStatement",
                  "src": "5251:114:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 30335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "5398:59:110",
                        "subExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 30333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 30328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 30323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 30319,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30226,
                                      "src": "5400:4:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                        "typeString": "uint8[] memory"
                                      }
                                    },
                                    "id": 30321,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 30320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5405:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5400:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 30322,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5411:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5400:12:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 30327,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 30324,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30297,
                                      "src": "5416:5:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 30325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5422:6:110",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "5416:12:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "3230",
                                    "id": 30326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5432:2:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  },
                                  "src": "5416:18:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5400:34:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 30329,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30297,
                                    "src": "5438:5:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5444:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "5438:12:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 30331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5454:2:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "5438:18:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5400:56:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 30334,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5399:58:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4265636833323a2077726f6e672062697473206c656e67746820666f722076657273696f6e",
                        "id": 30336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5472:39:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_58f06f3048eb462af5439e481640081f91d0c87f9be5ed2740317c6f399558c9",
                          "typeString": "literal_string \"Bech32: wrong bits length for version\""
                        },
                        "value": "Bech32: wrong bits length for version"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_58f06f3048eb462af5439e481640081f91d0c87f9be5ed2740317c6f399558c9",
                          "typeString": "literal_string \"Bech32: wrong bits length for version\""
                        }
                      ],
                      "id": 30318,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5376:7:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 30337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5376:146:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30338,
                  "nodeType": "ExpressionStatement",
                  "src": "5376:146:110"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 30341,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30226,
                              "src": "5547:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 30343,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 30342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5552:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5547:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 30340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5541:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint8_$",
                            "typeString": "type(uint8)"
                          },
                          "typeName": {
                            "id": 30339,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "5541:5:110",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 30344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5541:14:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 30345,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30297,
                        "src": "5557:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 30346,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5540:23:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint8,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 30221,
                  "id": 30347,
                  "nodeType": "Return",
                  "src": "5533:30:110"
                }
              ]
            },
            "id": 30349,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fromBech32WithVersion",
            "nameLocation": "4584:21:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30211,
                  "mutability": "mutable",
                  "name": "bechAddr",
                  "nameLocation": "4630:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30349,
                  "src": "4616:22:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30210,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4616:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30213,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "4663:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30349,
                  "src": "4649:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30212,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4649:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30215,
                  "mutability": "mutable",
                  "name": "enc",
                  "nameLocation": "4687:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30349,
                  "src": "4680:10:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 30214,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4680:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4605:92:110"
            },
            "returnParameters": {
              "id": 30221,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30218,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30349,
                  "src": "4721:5:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 30217,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4721:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30220,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30349,
                  "src": "4728:12:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30219,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4728:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4720:21:110"
            },
            "scope": 31372,
            "src": "4575:996:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30367,
              "nodeType": "Block",
              "src": "5682:86:110",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 30363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 30358,
                              "name": "hrp1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30351,
                              "src": "5711:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30357,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967288,
                            "src": "5701:9:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 30359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5701:15:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 30361,
                              "name": "hrp2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30353,
                              "src": "5730:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30360,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967288,
                            "src": "5720:9:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 30362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5720:15:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "5701:34:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4265636833323a20687270206d69736d61746368",
                        "id": 30364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5737:22:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cc3b15adba6692e0236e3ef91314dd5f2f6b9fc7d497a8d9fca03d4d32ef0086",
                          "typeString": "literal_string \"Bech32: hrp mismatch\""
                        },
                        "value": "Bech32: hrp mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cc3b15adba6692e0236e3ef91314dd5f2f6b9fc7d497a8d9fca03d4d32ef0086",
                          "typeString": "literal_string \"Bech32: hrp mismatch\""
                        }
                      ],
                      "id": 30356,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5693:7:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 30365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5693:67:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30366,
                  "nodeType": "ExpressionStatement",
                  "src": "5693:67:110"
                }
              ]
            },
            "id": 30368,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_requireHrpMatch",
            "nameLocation": "5588:16:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30354,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30351,
                  "mutability": "mutable",
                  "name": "hrp1",
                  "nameLocation": "5628:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30368,
                  "src": "5615:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30350,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5615:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30353,
                  "mutability": "mutable",
                  "name": "hrp2",
                  "nameLocation": "5656:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30368,
                  "src": "5643:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30352,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5643:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5604:63:110"
            },
            "returnParameters": {
              "id": 30355,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5682:0:110"
            },
            "scope": 31372,
            "src": "5579:189:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30389,
              "nodeType": "Block",
              "src": "5872:196:110",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 30376,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30370,
                            "src": "5891:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5896:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5891:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "3230",
                          "id": 30378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5906:2:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_20_by_1",
                            "typeString": "int_const 20"
                          },
                          "value": "20"
                        },
                        "src": "5891:17:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4265636833323a20696e76616c69642064617461206c656e677468",
                        "id": 30380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5910:29:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e61d0d29c666259da088b9a4a3c73f42db070a7c6e4ed8d249944652ec7c2cf8",
                          "typeString": "literal_string \"Bech32: invalid data length\""
                        },
                        "value": "Bech32: invalid data length"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e61d0d29c666259da088b9a4a3c73f42db070a7c6e4ed8d249944652ec7c2cf8",
                          "typeString": "literal_string \"Bech32: invalid data length\""
                        }
                      ],
                      "id": 30375,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5883:7:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 30381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5883:57:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 30382,
                  "nodeType": "ExpressionStatement",
                  "src": "5883:57:110"
                },
                {
                  "assignments": [
                    30384
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30384,
                      "mutability": "mutable",
                      "name": "addr",
                      "nameLocation": "5961:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30389,
                      "src": "5953:12:110",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 30383,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5953:7:110",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30385,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5953:12:110"
                },
                {
                  "AST": {
                    "nativeSrc": "5985:54:110",
                    "nodeType": "YulBlock",
                    "src": "5985:54:110",
                    "statements": [
                      {
                        "nativeSrc": "6000:28:110",
                        "nodeType": "YulAssignment",
                        "src": "6000:28:110",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nativeSrc": "6018:4:110",
                                  "nodeType": "YulIdentifier",
                                  "src": "6018:4:110"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "6024:2:110",
                                  "nodeType": "YulLiteral",
                                  "src": "6024:2:110",
                                  "type": "",
                                  "value": "20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "6014:3:110",
                                "nodeType": "YulIdentifier",
                                "src": "6014:3:110"
                              },
                              "nativeSrc": "6014:13:110",
                              "nodeType": "YulFunctionCall",
                              "src": "6014:13:110"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "6008:5:110",
                            "nodeType": "YulIdentifier",
                            "src": "6008:5:110"
                          },
                          "nativeSrc": "6008:20:110",
                          "nodeType": "YulFunctionCall",
                          "src": "6008:20:110"
                        },
                        "variableNames": [
                          {
                            "name": "addr",
                            "nativeSrc": "6000:4:110",
                            "nodeType": "YulIdentifier",
                            "src": "6000:4:110"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 30384,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6000:4:110",
                      "valueSize": 1
                    },
                    {
                      "declaration": 30370,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6018:4:110",
                      "valueSize": 1
                    }
                  ],
                  "id": 30386,
                  "nodeType": "InlineAssembly",
                  "src": "5976:63:110"
                },
                {
                  "expression": {
                    "id": 30387,
                    "name": "addr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 30384,
                    "src": "6056:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 30374,
                  "id": 30388,
                  "nodeType": "Return",
                  "src": "6049:11:110"
                }
              ]
            },
            "id": 30390,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressFromBytes",
            "nameLocation": "5785:19:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30370,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "5828:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30390,
                  "src": "5815:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30369,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5815:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5804:35:110"
            },
            "returnParameters": {
              "id": 30374,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30373,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30390,
                  "src": "5863:7:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30372,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5863:7:110",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5862:9:110"
            },
            "scope": 31372,
            "src": "5776:292:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30550,
              "nodeType": "Block",
              "src": "6214:960:110",
              "statements": [
                {
                  "id": 30549,
                  "nodeType": "UncheckedBlock",
                  "src": "6225:942:110",
                  "statements": [
                    {
                      "assignments": [
                        30405
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30405,
                          "mutability": "mutable",
                          "name": "checksum",
                          "nameLocation": "6265:8:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 30549,
                          "src": "6250:23:110",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 30403,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "6250:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 30404,
                            "nodeType": "ArrayTypeName",
                            "src": "6250:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                              "typeString": "uint8[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30411,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 30407,
                            "name": "hrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30392,
                            "src": "6291:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "id": 30408,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30394,
                            "src": "6296:5:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "id": 30409,
                            "name": "enc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30396,
                            "src": "6303:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "id": 30406,
                          "name": "createChecksum",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31042,
                          "src": "6276:14:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                            "typeString": "function (bytes memory,bytes memory,uint32) pure returns (uint8[] memory)"
                          }
                        },
                        "id": 30410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6276:31:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6250:57:110"
                    },
                    {
                      "assignments": [
                        30413
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30413,
                          "mutability": "mutable",
                          "name": "result",
                          "nameLocation": "6335:6:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 30549,
                          "src": "6322:19:110",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 30412,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "6322:5:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30427,
                      "initialValue": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 30425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 30416,
                                    "name": "hrp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30392,
                                    "src": "6354:3:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6358:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6354:10:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "expression": {
                                    "id": 30418,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30394,
                                    "src": "6367:5:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6373:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6367:12:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6354:25:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "expression": {
                                  "id": 30421,
                                  "name": "checksum",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30405,
                                  "src": "6382:8:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 30422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6391:6:110",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6382:15:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6354:43:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 30424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6400:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "6354:47:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 30415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "6344:9:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 30414,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "6348:5:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 30426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6344:58:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6322:80:110"
                    },
                    {
                      "body": {
                        "id": 30446,
                        "nodeType": "Block",
                        "src": "6452:53:110",
                        "statements": [
                          {
                            "expression": {
                              "id": 30444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 30438,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30413,
                                  "src": "6471:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30440,
                                "indexExpression": {
                                  "id": 30439,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30429,
                                  "src": "6478:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6471:9:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 30441,
                                  "name": "hrp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30392,
                                  "src": "6483:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30443,
                                "indexExpression": {
                                  "id": 30442,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30429,
                                  "src": "6487:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6483:6:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "6471:18:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 30445,
                            "nodeType": "ExpressionStatement",
                            "src": "6471:18:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30431,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30429,
                          "src": "6430:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30432,
                            "name": "hrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30392,
                            "src": "6434:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6438:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6434:10:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6430:14:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30447,
                      "initializationExpression": {
                        "assignments": [
                          30429
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30429,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "6427:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30447,
                            "src": "6422:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30428,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6422:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30430,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6422:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6446:4:110",
                          "subExpression": {
                            "id": 30435,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30429,
                            "src": "6449:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30437,
                        "nodeType": "ExpressionStatement",
                        "src": "6446:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "6417:88:110"
                    },
                    {
                      "expression": {
                        "id": 30456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 30448,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30413,
                            "src": "6519:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30451,
                          "indexExpression": {
                            "expression": {
                              "id": 30449,
                              "name": "hrp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30392,
                              "src": "6526:3:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 30450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6530:6:110",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6526:10:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6519:18:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 30454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6547:3:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                "typeString": "literal_string \"1\""
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                "typeString": "literal_string \"1\""
                              }
                            ],
                            "id": 30453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6540:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 30452,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "6540:6:110",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 30455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6540:11:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "src": "6519:32:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      },
                      "id": 30457,
                      "nodeType": "ExpressionStatement",
                      "src": "6519:32:110"
                    },
                    {
                      "assignments": [
                        30459
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30459,
                          "mutability": "mutable",
                          "name": "offset",
                          "nameLocation": "6571:6:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 30549,
                          "src": "6566:11:110",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 30458,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6566:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30464,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 30460,
                            "name": "hrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30392,
                            "src": "6580:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6584:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6580:10:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 30462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6593:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "6580:14:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6566:28:110"
                    },
                    {
                      "body": {
                        "id": 30500,
                        "nodeType": "Block",
                        "src": "6646:190:110",
                        "statements": [
                          {
                            "assignments": [
                              30476
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 30476,
                                "mutability": "mutable",
                                "name": "_data",
                                "nameLocation": "6671:5:110",
                                "nodeType": "VariableDeclaration",
                                "scope": 30500,
                                "src": "6665:11:110",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 30475,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6665:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 30483,
                            "initialValue": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 30479,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30394,
                                    "src": "6685:5:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30481,
                                  "indexExpression": {
                                    "id": 30480,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30466,
                                    "src": "6691:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6685:8:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 30478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6679:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 30477,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6679:5:110",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 30482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6679:15:110",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6665:29:110"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30484,
                                "name": "_data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30476,
                                "src": "6717:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 30485,
                                  "name": "ALPHABET",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29990,
                                  "src": "6725:8:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6734:6:110",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6725:15:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6717:23:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 30499,
                            "nodeType": "IfStatement",
                            "src": "6713:108:110",
                            "trueBody": {
                              "id": 30498,
                              "nodeType": "Block",
                              "src": "6742:79:110",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 30496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 30488,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30413,
                                        "src": "6765:6:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30492,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 30491,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 30489,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30466,
                                          "src": "6772:1:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 30490,
                                          "name": "offset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30459,
                                          "src": "6776:6:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "6772:10:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "6765:18:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "baseExpression": {
                                        "id": 30493,
                                        "name": "ALPHABET",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 29990,
                                        "src": "6786:8:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30495,
                                      "indexExpression": {
                                        "id": 30494,
                                        "name": "_data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30476,
                                        "src": "6795:5:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6786:15:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "6765:36:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "id": 30497,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6765:36:110"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30468,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30466,
                          "src": "6622:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30469,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30394,
                            "src": "6626:5:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6632:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6626:12:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6622:16:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30501,
                      "initializationExpression": {
                        "assignments": [
                          30466
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30466,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "6619:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30501,
                            "src": "6614:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30465,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6614:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30467,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6614:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6640:4:110",
                          "subExpression": {
                            "id": 30472,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30466,
                            "src": "6643:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30474,
                        "nodeType": "ExpressionStatement",
                        "src": "6640:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "6609:227:110"
                    },
                    {
                      "expression": {
                        "id": 30505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 30502,
                          "name": "offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30459,
                          "src": "6850:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "expression": {
                            "id": 30503,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30394,
                            "src": "6860:5:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6866:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6860:12:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6850:22:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 30506,
                      "nodeType": "ExpressionStatement",
                      "src": "6850:22:110"
                    },
                    {
                      "body": {
                        "id": 30542,
                        "nodeType": "Block",
                        "src": "6927:193:110",
                        "statements": [
                          {
                            "assignments": [
                              30518
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 30518,
                                "mutability": "mutable",
                                "name": "_data",
                                "nameLocation": "6952:5:110",
                                "nodeType": "VariableDeclaration",
                                "scope": 30542,
                                "src": "6946:11:110",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 30517,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6946:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 30525,
                            "initialValue": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 30521,
                                    "name": "checksum",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30405,
                                    "src": "6966:8:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                      "typeString": "uint8[] memory"
                                    }
                                  },
                                  "id": 30523,
                                  "indexExpression": {
                                    "id": 30522,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30508,
                                    "src": "6975:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6966:11:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 30520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6960:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 30519,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6960:5:110",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 30524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6960:18:110",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6946:32:110"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30526,
                                "name": "_data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30518,
                                "src": "7001:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 30527,
                                  "name": "ALPHABET",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29990,
                                  "src": "7009:8:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7018:6:110",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7009:15:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7001:23:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 30541,
                            "nodeType": "IfStatement",
                            "src": "6997:108:110",
                            "trueBody": {
                              "id": 30540,
                              "nodeType": "Block",
                              "src": "7026:79:110",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 30538,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 30530,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30413,
                                        "src": "7049:6:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30534,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 30533,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 30531,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30508,
                                          "src": "7056:1:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 30532,
                                          "name": "offset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30459,
                                          "src": "7060:6:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7056:10:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "7049:18:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "baseExpression": {
                                        "id": 30535,
                                        "name": "ALPHABET",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 29990,
                                        "src": "7070:8:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30537,
                                      "indexExpression": {
                                        "id": 30536,
                                        "name": "_data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30518,
                                        "src": "7079:5:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7070:15:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "7049:36:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "id": 30539,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7049:36:110"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30510,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30508,
                          "src": "6900:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30511,
                            "name": "checksum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30405,
                            "src": "6904:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 30512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6913:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6904:15:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6900:19:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30543,
                      "initializationExpression": {
                        "assignments": [
                          30508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30508,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "6897:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30543,
                            "src": "6892:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30507,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6892:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30509,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6892:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6921:4:110",
                          "subExpression": {
                            "id": 30514,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30508,
                            "src": "6924:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30516,
                        "nodeType": "ExpressionStatement",
                        "src": "6921:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "6887:233:110"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 30546,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30413,
                            "src": "7148:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 30545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7141:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 30544,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "7141:6:110",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 30547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7141:14:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 30400,
                      "id": 30548,
                      "nodeType": "Return",
                      "src": "7134:21:110"
                    }
                  ]
                }
              ]
            },
            "id": 30551,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encode",
            "nameLocation": "6085:6:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30392,
                  "mutability": "mutable",
                  "name": "hrp",
                  "nameLocation": "6115:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30551,
                  "src": "6102:16:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30391,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6102:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30394,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "6142:5:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30551,
                  "src": "6129:18:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30393,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6129:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30396,
                  "mutability": "mutable",
                  "name": "enc",
                  "nameLocation": "6165:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30551,
                  "src": "6158:10:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 30395,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6158:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6091:84:110"
            },
            "returnParameters": {
              "id": 30400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30399,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30551,
                  "src": "6199:13:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 30398,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6199:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6198:15:110"
            },
            "scope": 31372,
            "src": "6076:1098:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30740,
              "nodeType": "Block",
              "src": "7319:1539:110",
              "statements": [
                {
                  "id": 30739,
                  "nodeType": "UncheckedBlock",
                  "src": "7330:1521:110",
                  "statements": [
                    {
                      "assignments": [
                        30564
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30564,
                          "mutability": "mutable",
                          "name": "pos",
                          "nameLocation": "7360:3:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 30739,
                          "src": "7355:8:110",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 30563,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "7355:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30565,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7355:8:110"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 30570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 30567,
                                "name": "bechStr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30553,
                                "src": "7404:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 30568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7412:6:110",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "7404:14:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "hexValue": "3930",
                              "id": 30569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7422:2:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_90_by_1",
                                "typeString": "int_const 90"
                              },
                              "value": "90"
                            },
                            "src": "7404:20:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4265636833323a20696e76616c696420737472696e67206c656e677468",
                            "id": 30571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7444:31:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fbafcdcf532b64f842ae9e16c3ebe22680908b0bd1d2499a181aa780163d1903",
                              "typeString": "literal_string \"Bech32: invalid string length\""
                            },
                            "value": "Bech32: invalid string length"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fbafcdcf532b64f842ae9e16c3ebe22680908b0bd1d2499a181aa780163d1903",
                              "typeString": "literal_string \"Bech32: invalid string length\""
                            }
                          ],
                          "id": 30566,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "7378:7:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 30572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7378:112:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 30573,
                      "nodeType": "ExpressionStatement",
                      "src": "7378:112:110"
                    },
                    {
                      "body": {
                        "id": 30638,
                        "nodeType": "Block",
                        "src": "7548:573:110",
                        "statements": [
                          {
                            "assignments": [
                              30586
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 30586,
                                "mutability": "mutable",
                                "name": "charAt",
                                "nameLocation": "7573:6:110",
                                "nodeType": "VariableDeclaration",
                                "scope": 30638,
                                "src": "7567:12:110",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 30585,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7567:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 30593,
                            "initialValue": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 30589,
                                    "name": "bechStr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30553,
                                    "src": "7588:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30591,
                                  "indexExpression": {
                                    "id": 30590,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30575,
                                    "src": "7596:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7588:10:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 30588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7582:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 30587,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7582:5:110",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 30592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7582:17:110",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7567:32:110"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 30601,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 30597,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 30595,
                                      "name": "charAt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30586,
                                      "src": "7648:6:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "3333",
                                      "id": 30596,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7658:2:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_33_by_1",
                                        "typeString": "int_const 33"
                                      },
                                      "value": "33"
                                    },
                                    "src": "7648:12:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 30600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 30598,
                                      "name": "charAt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30586,
                                      "src": "7690:6:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "hexValue": "313236",
                                      "id": 30599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7700:3:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_126_by_1",
                                        "typeString": "int_const 126"
                                      },
                                      "value": "126"
                                    },
                                    "src": "7690:13:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "7648:55:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4265636833323a2077726f6e672063686172",
                                  "id": 30602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7727:20:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_53dc06d622ffc4876df233985214fd280a387287ffe9d0e519654cae6b62b983",
                                    "typeString": "literal_string \"Bech32: wrong char\""
                                  },
                                  "value": "Bech32: wrong char"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_53dc06d622ffc4876df233985214fd280a387287ffe9d0e519654cae6b62b983",
                                    "typeString": "literal_string \"Bech32: wrong char\""
                                  }
                                ],
                                "id": 30594,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4294967278,
                                  4294967278,
                                  4294967278
                                ],
                                "referencedDeclaration": 4294967278,
                                "src": "7618:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 30603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7618:148:110",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 30604,
                            "nodeType": "ExpressionStatement",
                            "src": "7618:148:110"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 30613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30605,
                                "name": "charAt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30586,
                                "src": "7789:6:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 30610,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7812:3:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                          "typeString": "literal_string \"1\""
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                          "typeString": "literal_string \"1\""
                                        }
                                      ],
                                      "id": 30609,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7805:6:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 30608,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7805:6:110",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 30611,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7805:11:110",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 30607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7799:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 30606,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7799:5:110",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 30612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7799:18:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "7789:28:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 30637,
                            "nodeType": "IfStatement",
                            "src": "7785:321:110",
                            "trueBody": {
                              "id": 30636,
                              "nodeType": "Block",
                              "src": "7819:287:110",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 30628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 30621,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 30617,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 30615,
                                              "name": "pos",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30564,
                                              "src": "7876:3:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 30616,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7883:1:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "7876:8:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 30620,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 30618,
                                              "name": "p",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30575,
                                              "src": "7918:1:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 30619,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7923:1:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "7918:6:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "7876:48:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30627,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 30624,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 30622,
                                              "name": "p",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30575,
                                              "src": "7958:1:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "hexValue": "37",
                                              "id": 30623,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7962:1:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_7_by_1",
                                                "typeString": "int_const 7"
                                              },
                                              "value": "7"
                                            },
                                            "src": "7958:5:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<=",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 30625,
                                              "name": "bechStr",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30553,
                                              "src": "7967:7:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 30626,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7975:6:110",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "7967:14:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7958:23:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "7876:105:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "4265636833323a2077726f6e6720706f73206f662031",
                                        "id": 30629,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8009:24:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_0d3bbdc5952ddfc25bafa340466db68d17d1faf42dd154469a20b429a3742415",
                                          "typeString": "literal_string \"Bech32: wrong pos of 1\""
                                        },
                                        "value": "Bech32: wrong pos of 1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_0d3bbdc5952ddfc25bafa340466db68d17d1faf42dd154469a20b429a3742415",
                                          "typeString": "literal_string \"Bech32: wrong pos of 1\""
                                        }
                                      ],
                                      "id": 30614,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967278,
                                        4294967278,
                                        4294967278
                                      ],
                                      "referencedDeclaration": 4294967278,
                                      "src": "7842:7:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 30630,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7842:214:110",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 30631,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7842:214:110"
                                },
                                {
                                  "expression": {
                                    "id": 30634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 30632,
                                      "name": "pos",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30564,
                                      "src": "8079:3:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 30633,
                                      "name": "p",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30575,
                                      "src": "8085:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8079:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 30635,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8079:7:110"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30578,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30575,
                          "src": "7522:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30579,
                            "name": "bechStr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30553,
                            "src": "7526:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7534:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "7526:14:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7522:18:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30639,
                      "initializationExpression": {
                        "assignments": [
                          30575
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30575,
                            "mutability": "mutable",
                            "name": "p",
                            "nameLocation": "7515:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30639,
                            "src": "7510:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30574,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7510:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30577,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 30576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7519:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7510:10:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "7542:4:110",
                          "subExpression": {
                            "id": 30582,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30575,
                            "src": "7545:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30584,
                        "nodeType": "ExpressionStatement",
                        "src": "7542:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "7505:616:110"
                    },
                    {
                      "expression": {
                        "id": 30645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 30640,
                          "name": "hrp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30558,
                          "src": "8135:3:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 30643,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30564,
                              "src": "8151:3:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "8141:9:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 30641,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "8145:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 30644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8141:14:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "src": "8135:20:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 30646,
                      "nodeType": "ExpressionStatement",
                      "src": "8135:20:110"
                    },
                    {
                      "body": {
                        "id": 30664,
                        "nodeType": "Block",
                        "src": "8198:55:110",
                        "statements": [
                          {
                            "expression": {
                              "id": 30662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 30656,
                                  "name": "hrp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30558,
                                  "src": "8217:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30658,
                                "indexExpression": {
                                  "id": 30657,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30648,
                                  "src": "8221:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8217:6:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 30659,
                                  "name": "bechStr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30553,
                                  "src": "8226:7:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30661,
                                "indexExpression": {
                                  "id": 30660,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30648,
                                  "src": "8234:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8226:10:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "8217:19:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 30663,
                            "nodeType": "ExpressionStatement",
                            "src": "8217:19:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30650,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30648,
                          "src": "8183:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 30651,
                          "name": "pos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30564,
                          "src": "8187:3:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8183:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30665,
                      "initializationExpression": {
                        "assignments": [
                          30648
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30648,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "8180:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30665,
                            "src": "8175:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30647,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8175:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30649,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8175:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "8192:4:110",
                          "subExpression": {
                            "id": 30653,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30648,
                            "src": "8195:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30655,
                        "nodeType": "ExpressionStatement",
                        "src": "8192:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "8170:83:110"
                    },
                    {
                      "expression": {
                        "id": 30677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 30666,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30561,
                          "src": "8267:4:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 30670,
                                    "name": "bechStr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30553,
                                    "src": "8286:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8294:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "8286:14:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 30672,
                                  "name": "pos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30564,
                                  "src": "8303:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8286:20:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 30674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8309:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "8286:24:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "8274:11:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint8[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 30667,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "8278:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 30668,
                              "nodeType": "ArrayTypeName",
                              "src": "8278:7:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                                "typeString": "uint8[]"
                              }
                            }
                          },
                          "id": 30676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8274:37:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "src": "8267:44:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "id": 30678,
                      "nodeType": "ExpressionStatement",
                      "src": "8267:44:110"
                    },
                    {
                      "body": {
                        "id": 30720,
                        "nodeType": "Block",
                        "src": "8362:219:110",
                        "statements": [
                          {
                            "assignments": [
                              30690
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 30690,
                                "mutability": "mutable",
                                "name": "charAt",
                                "nameLocation": "8388:6:110",
                                "nodeType": "VariableDeclaration",
                                "scope": 30720,
                                "src": "8381:13:110",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "typeName": {
                                  "id": 30689,
                                  "name": "bytes1",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8381:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 30703,
                            "initialValue": {
                              "baseExpression": {
                                "id": 30691,
                                "name": "ALPHABET_REV_LOWER_ONLY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29996,
                                "src": "8397:23:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 30702,
                              "indexExpression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 30694,
                                      "name": "bechStr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30553,
                                      "src": "8427:7:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 30700,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30699,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 30697,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 30695,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30680,
                                          "src": "8435:1:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 30696,
                                          "name": "pos",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30564,
                                          "src": "8439:3:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8435:7:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 30698,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8445:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "8435:11:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8427:20:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 30693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8421:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 30692,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8421:5:110",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 30701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8421:27:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8397:52:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8381:68:110"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 30707,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 30705,
                                    "name": "charAt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30690,
                                    "src": "8476:6:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30786666",
                                    "id": 30706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8486:4:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xff"
                                  },
                                  "src": "8476:14:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4265636833323a2062797465206e6f7420696e20616c706861626574",
                                  "id": 30708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8492:30:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6a2cf2966ea32b348a1a2f630ac8faca290d4a2ab07de89caf8dae5717c1d46d",
                                    "typeString": "literal_string \"Bech32: byte not in alphabet\""
                                  },
                                  "value": "Bech32: byte not in alphabet"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6a2cf2966ea32b348a1a2f630ac8faca290d4a2ab07de89caf8dae5717c1d46d",
                                    "typeString": "literal_string \"Bech32: byte not in alphabet\""
                                  }
                                ],
                                "id": 30704,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4294967278,
                                  4294967278,
                                  4294967278
                                ],
                                "referencedDeclaration": 4294967278,
                                "src": "8468:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 30709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8468:55:110",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 30710,
                            "nodeType": "ExpressionStatement",
                            "src": "8468:55:110"
                          },
                          {
                            "expression": {
                              "id": 30718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 30711,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30561,
                                  "src": "8542:4:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 30713,
                                "indexExpression": {
                                  "id": 30712,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30680,
                                  "src": "8547:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8542:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 30716,
                                    "name": "charAt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30690,
                                    "src": "8558:6:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 30715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8552:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 30714,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8552:5:110",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 30717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8552:13:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "8542:23:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 30719,
                            "nodeType": "ExpressionStatement",
                            "src": "8542:23:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30682,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30680,
                          "src": "8339:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30683,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30561,
                            "src": "8343:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 30684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8348:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8343:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8339:15:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30721,
                      "initializationExpression": {
                        "assignments": [
                          30680
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30680,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "8336:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30721,
                            "src": "8331:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30679,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8331:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30681,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8331:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "8356:4:110",
                          "subExpression": {
                            "id": 30686,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30680,
                            "src": "8359:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30688,
                        "nodeType": "ExpressionStatement",
                        "src": "8356:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "8326:255:110"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 30724,
                                "name": "hrp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30558,
                                "src": "8636:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 30725,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30561,
                                "src": "8641:4:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                  "typeString": "uint8[] memory"
                                }
                              },
                              {
                                "id": 30726,
                                "name": "enc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30555,
                                "src": "8647:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                  "typeString": "uint8[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "id": 30723,
                              "name": "verifyChecksum",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31135,
                              "src": "8621:14:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_uint32_$returns$_t_bool_$",
                                "typeString": "function (bytes memory,uint8[] memory,uint32) pure returns (bool)"
                              }
                            },
                            "id": 30727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8621:30:110",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4265636833323a2077726f6e6720636865636b73756d",
                            "id": 30728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8671:24:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8925955b412698449f23fd1db0ca5278ae982350c0d6a43502b6059204e31edc",
                              "typeString": "literal_string \"Bech32: wrong checksum\""
                            },
                            "value": "Bech32: wrong checksum"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8925955b412698449f23fd1db0ca5278ae982350c0d6a43502b6059204e31edc",
                              "typeString": "literal_string \"Bech32: wrong checksum\""
                            }
                          ],
                          "id": 30722,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "8595:7:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 30729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8595:115:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 30730,
                      "nodeType": "ExpressionStatement",
                      "src": "8595:115:110"
                    },
                    {
                      "assignments": [
                        30732
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30732,
                          "mutability": "mutable",
                          "name": "dataLength",
                          "nameLocation": "8730:10:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 30739,
                          "src": "8725:15:110",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 30731,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8725:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30737,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 30733,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30561,
                            "src": "8743:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 30734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8748:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8743:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "36",
                          "id": 30735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8757:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_6_by_1",
                            "typeString": "int_const 6"
                          },
                          "value": "6"
                        },
                        "src": "8743:15:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8725:33:110"
                    },
                    {
                      "AST": {
                        "nativeSrc": "8782:58:110",
                        "nodeType": "YulBlock",
                        "src": "8782:58:110",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nativeSrc": "8808:4:110",
                                  "nodeType": "YulIdentifier",
                                  "src": "8808:4:110"
                                },
                                {
                                  "name": "dataLength",
                                  "nativeSrc": "8814:10:110",
                                  "nodeType": "YulIdentifier",
                                  "src": "8814:10:110"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "8801:6:110",
                                "nodeType": "YulIdentifier",
                                "src": "8801:6:110"
                              },
                              "nativeSrc": "8801:24:110",
                              "nodeType": "YulFunctionCall",
                              "src": "8801:24:110"
                            },
                            "nativeSrc": "8801:24:110",
                            "nodeType": "YulExpressionStatement",
                            "src": "8801:24:110"
                          }
                        ]
                      },
                      "evmVersion": "prague",
                      "externalReferences": [
                        {
                          "declaration": 30561,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8808:4:110",
                          "valueSize": 1
                        },
                        {
                          "declaration": 30732,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8814:10:110",
                          "valueSize": 1
                        }
                      ],
                      "id": 30738,
                      "nodeType": "InlineAssembly",
                      "src": "8773:67:110"
                    }
                  ]
                }
              ]
            },
            "id": 30741,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decode",
            "nameLocation": "7191:6:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30553,
                  "mutability": "mutable",
                  "name": "bechStr",
                  "nameLocation": "7211:7:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30741,
                  "src": "7198:20:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30552,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7198:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30555,
                  "mutability": "mutable",
                  "name": "enc",
                  "nameLocation": "7227:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30741,
                  "src": "7220:10:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 30554,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7220:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7197:34:110"
            },
            "returnParameters": {
              "id": 30562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30558,
                  "mutability": "mutable",
                  "name": "hrp",
                  "nameLocation": "7288:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30741,
                  "src": "7275:16:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30557,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7275:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30561,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "7308:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30741,
                  "src": "7293:19:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30559,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "7293:5:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 30560,
                    "nodeType": "ArrayTypeName",
                    "src": "7293:7:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7274:39:110"
            },
            "scope": 31372,
            "src": "7182:1676:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30807,
              "nodeType": "Block",
              "src": "8962:275:110",
              "statements": [
                {
                  "id": 30806,
                  "nodeType": "UncheckedBlock",
                  "src": "8973:257:110",
                  "statements": [
                    {
                      "expression": {
                        "id": 30761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 30749,
                          "name": "ret",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30747,
                          "src": "8998:3:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 30753,
                                    "name": "hrp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30743,
                                    "src": "9016:3:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9020:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "9016:10:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "expression": {
                                    "id": 30755,
                                    "name": "hrp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30743,
                                    "src": "9029:3:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 30756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9033:6:110",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "9029:10:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9016:23:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 30758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9042:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "9016:27:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "9004:11:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint8[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 30750,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "9008:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 30751,
                              "nodeType": "ArrayTypeName",
                              "src": "9008:7:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                                "typeString": "uint8[]"
                              }
                            }
                          },
                          "id": 30760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9004:40:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "src": "8998:46:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "id": 30762,
                      "nodeType": "ExpressionStatement",
                      "src": "8998:46:110"
                    },
                    {
                      "body": {
                        "id": 30804,
                        "nodeType": "Block",
                        "src": "9094:125:110",
                        "statements": [
                          {
                            "expression": {
                              "id": 30784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 30773,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30747,
                                  "src": "9113:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 30775,
                                "indexExpression": {
                                  "id": 30774,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30764,
                                  "src": "9117:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9113:6:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 30783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 30778,
                                        "name": "hrp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30743,
                                        "src": "9128:3:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30780,
                                      "indexExpression": {
                                        "id": 30779,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30764,
                                        "src": "9132:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9128:6:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    ],
                                    "id": 30777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9122:5:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 30776,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9122:5:110",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 30781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9122:13:110",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "35",
                                  "id": 30782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9139:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_5_by_1",
                                    "typeString": "int_const 5"
                                  },
                                  "value": "5"
                                },
                                "src": "9122:18:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "9113:27:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 30785,
                            "nodeType": "ExpressionStatement",
                            "src": "9113:27:110"
                          },
                          {
                            "expression": {
                              "id": 30802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 30786,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30747,
                                  "src": "9159:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 30793,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 30792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 30790,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 30787,
                                      "name": "p",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30764,
                                      "src": "9163:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 30788,
                                        "name": "hrp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30743,
                                        "src": "9167:3:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30789,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "9171:6:110",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "9167:10:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9163:14:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 30791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9180:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "9163:18:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9159:23:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 30801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 30796,
                                        "name": "hrp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30743,
                                        "src": "9191:3:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 30798,
                                      "indexExpression": {
                                        "id": 30797,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30764,
                                        "src": "9195:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9191:6:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    ],
                                    "id": 30795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9185:5:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 30794,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9185:5:110",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 30799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9185:13:110",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "3331",
                                  "id": 30800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9201:2:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_31_by_1",
                                    "typeString": "int_const 31"
                                  },
                                  "value": "31"
                                },
                                "src": "9185:18:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "9159:44:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 30803,
                            "nodeType": "ExpressionStatement",
                            "src": "9159:44:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30766,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30764,
                          "src": "9072:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30767,
                            "name": "hrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30743,
                            "src": "9076:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 30768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9080:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "9076:10:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9072:14:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30805,
                      "initializationExpression": {
                        "assignments": [
                          30764
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30764,
                            "mutability": "mutable",
                            "name": "p",
                            "nameLocation": "9069:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30805,
                            "src": "9064:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30763,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9064:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30765,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9064:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "9088:4:110",
                          "subExpression": {
                            "id": 30770,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30764,
                            "src": "9091:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30772,
                        "nodeType": "ExpressionStatement",
                        "src": "9088:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "9059:160:110"
                    }
                  ]
                }
              ]
            },
            "id": 30808,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hrpExpand",
            "nameLocation": "8875:9:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30744,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30743,
                  "mutability": "mutable",
                  "name": "hrp",
                  "nameLocation": "8908:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30808,
                  "src": "8895:16:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30742,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8895:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8884:34:110"
            },
            "returnParameters": {
              "id": 30748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30747,
                  "mutability": "mutable",
                  "name": "ret",
                  "nameLocation": "8957:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30808,
                  "src": "8942:18:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30745,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "8942:5:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 30746,
                    "nodeType": "ArrayTypeName",
                    "src": "8942:7:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8941:20:110"
            },
            "scope": 31372,
            "src": "8866:371:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 30903,
              "nodeType": "Block",
              "src": "9317:631:110",
              "statements": [
                {
                  "assignments": [
                    30817
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30817,
                      "mutability": "mutable",
                      "name": "chk",
                      "nameLocation": "9335:3:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30903,
                      "src": "9328:10:110",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 30816,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9328:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30819,
                  "initialValue": {
                    "hexValue": "31",
                    "id": 30818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9341:1:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9328:14:110"
                },
                {
                  "assignments": [
                    30825
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30825,
                      "mutability": "mutable",
                      "name": "GEN",
                      "nameLocation": "9370:3:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 30903,
                      "src": "9353:20:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint32_$5_memory_ptr",
                        "typeString": "uint32[5]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30823,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9353:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 30824,
                        "length": {
                          "hexValue": "35",
                          "id": 30822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9360:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "9353:9:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$5_storage_ptr",
                          "typeString": "uint32[5]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 30832,
                  "initialValue": {
                    "components": [
                      {
                        "hexValue": "30783362366135376232",
                        "id": 30826,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9391:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_996825010_by_1",
                          "typeString": "int_const 996825010"
                        },
                        "value": "0x3b6a57b2"
                      },
                      {
                        "hexValue": "30783236353038653664",
                        "id": 30827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9416:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_642813549_by_1",
                          "typeString": "int_const 642813549"
                        },
                        "value": "0x26508e6d"
                      },
                      {
                        "hexValue": "30783165613131396661",
                        "id": 30828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9441:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_513874426_by_1",
                          "typeString": "int_const 513874426"
                        },
                        "value": "0x1ea119fa"
                      },
                      {
                        "hexValue": "30783364343233336464",
                        "id": 30829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9466:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1027748829_by_1",
                          "typeString": "int_const 1027748829"
                        },
                        "value": "0x3d4233dd"
                      },
                      {
                        "hexValue": "30783261313436326233",
                        "id": 30830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9491:10:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_705979059_by_1",
                          "typeString": "int_const 705979059"
                        },
                        "value": "0x2a1462b3"
                      }
                    ],
                    "id": 30831,
                    "isConstant": false,
                    "isInlineArray": true,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9376:136:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$5_memory_ptr",
                      "typeString": "uint32[5] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9353:159:110"
                },
                {
                  "id": 30900,
                  "nodeType": "UncheckedBlock",
                  "src": "9525:393:110",
                  "statements": [
                    {
                      "body": {
                        "id": 30898,
                        "nodeType": "Block",
                        "src": "9593:314:110",
                        "statements": [
                          {
                            "assignments": [
                              30845
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 30845,
                                "mutability": "mutable",
                                "name": "top",
                                "nameLocation": "9619:3:110",
                                "nodeType": "VariableDeclaration",
                                "scope": 30898,
                                "src": "9612:10:110",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "typeName": {
                                  "id": 30844,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9612:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 30849,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 30848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30846,
                                "name": "chk",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30817,
                                "src": "9625:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "hexValue": "3235",
                                "id": 30847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9632:2:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_25_by_1",
                                  "typeString": "int_const 25"
                                },
                                "value": "25"
                              },
                              "src": "9625:9:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9612:22:110"
                          },
                          {
                            "expression": {
                              "id": 30867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 30850,
                                "name": "chk",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30817,
                                "src": "9653:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 30866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 30858,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            "id": 30855,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 30853,
                                              "name": "chk",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30817,
                                              "src": "9667:3:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "307831666666666666",
                                              "id": 30854,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "9673:9:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_33554431_by_1",
                                                "typeString": "int_const 33554431"
                                              },
                                              "value": "0x1ffffff"
                                            },
                                            "src": "9667:15:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          ],
                                          "id": 30852,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9660:6:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint32_$",
                                            "typeString": "type(uint32)"
                                          },
                                          "typeName": {
                                            "id": 30851,
                                            "name": "uint32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9660:6:110",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 30856,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9660:23:110",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "35",
                                        "id": 30857,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9687:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_5_by_1",
                                          "typeString": "int_const 5"
                                        },
                                        "value": "5"
                                      },
                                      "src": "9660:28:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "id": 30859,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9659:30:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "^",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 30862,
                                        "name": "values",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30811,
                                        "src": "9699:6:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                          "typeString": "uint32[] memory"
                                        }
                                      },
                                      "id": 30864,
                                      "indexExpression": {
                                        "id": 30863,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30834,
                                        "src": "9706:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9699:9:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    ],
                                    "id": 30861,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9692:6:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint32_$",
                                      "typeString": "type(uint32)"
                                    },
                                    "typeName": {
                                      "id": 30860,
                                      "name": "uint32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9692:6:110",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 30865,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9692:17:110",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "9659:50:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "9653:56:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 30868,
                            "nodeType": "ExpressionStatement",
                            "src": "9653:56:110"
                          },
                          {
                            "body": {
                              "id": 30896,
                              "nodeType": "Block",
                              "src": "9759:133:110",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 30887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 30884,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint32",
                                                  "typeString": "uint32"
                                                },
                                                "id": 30881,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 30879,
                                                  "name": "top",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 30845,
                                                  "src": "9788:3:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">>",
                                                "rightExpression": {
                                                  "id": 30880,
                                                  "name": "j",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 30870,
                                                  "src": "9795:1:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                  }
                                                },
                                                "src": "9788:8:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint32",
                                                  "typeString": "uint32"
                                                }
                                              }
                                            ],
                                            "id": 30882,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "9787:10:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&",
                                          "rightExpression": {
                                            "hexValue": "31",
                                            "id": 30883,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9800:1:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "9787:14:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "id": 30885,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9786:16:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 30886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9806:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "9786:21:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 30895,
                                  "nodeType": "IfStatement",
                                  "src": "9782:91:110",
                                  "trueBody": {
                                    "id": 30894,
                                    "nodeType": "Block",
                                    "src": "9809:64:110",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 30892,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 30888,
                                            "name": "chk",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30817,
                                            "src": "9836:3:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "^=",
                                          "rightHandSide": {
                                            "baseExpression": {
                                              "id": 30889,
                                              "name": "GEN",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30825,
                                              "src": "9843:3:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint32_$5_memory_ptr",
                                                "typeString": "uint32[5] memory"
                                              }
                                            },
                                            "id": 30891,
                                            "indexExpression": {
                                              "id": 30890,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30870,
                                              "src": "9847:1:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9843:6:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "src": "9836:13:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "id": 30893,
                                        "nodeType": "ExpressionStatement",
                                        "src": "9836:13:110"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 30875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30873,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30870,
                                "src": "9747:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "35",
                                "id": 30874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9751:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "src": "9747:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 30897,
                            "initializationExpression": {
                              "assignments": [
                                30870
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30870,
                                  "mutability": "mutable",
                                  "name": "j",
                                  "nameLocation": "9740:1:110",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 30897,
                                  "src": "9733:8:110",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 30869,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9733:6:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30872,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 30871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9744:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9733:12:110"
                            },
                            "isSimpleCounterLoop": true,
                            "loopExpression": {
                              "expression": {
                                "id": 30877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "9754:3:110",
                                "subExpression": {
                                  "id": 30876,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30870,
                                  "src": "9756:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 30878,
                              "nodeType": "ExpressionStatement",
                              "src": "9754:3:110"
                            },
                            "nodeType": "ForStatement",
                            "src": "9728:164:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30837,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30834,
                          "src": "9569:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 30838,
                            "name": "values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30811,
                            "src": "9573:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                              "typeString": "uint32[] memory"
                            }
                          },
                          "id": 30839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9580:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "9573:13:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9569:17:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30899,
                      "initializationExpression": {
                        "assignments": [
                          30834
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30834,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "9562:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30899,
                            "src": "9555:8:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 30833,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9555:6:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30836,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 30835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9566:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9555:12:110"
                      },
                      "isSimpleCounterLoop": false,
                      "loopExpression": {
                        "expression": {
                          "id": 30842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "9588:3:110",
                          "subExpression": {
                            "id": 30841,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30834,
                            "src": "9590:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 30843,
                        "nodeType": "ExpressionStatement",
                        "src": "9588:3:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "9550:357:110"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 30901,
                    "name": "chk",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 30817,
                    "src": "9937:3:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 30815,
                  "id": 30902,
                  "nodeType": "Return",
                  "src": "9930:10:110"
                }
              ]
            },
            "id": 30904,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "polymod",
            "nameLocation": "9254:7:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30811,
                  "mutability": "mutable",
                  "name": "values",
                  "nameLocation": "9278:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 30904,
                  "src": "9262:22:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30809,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "9262:6:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 30810,
                    "nodeType": "ArrayTypeName",
                    "src": "9262:8:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9261:24:110"
            },
            "returnParameters": {
              "id": 30815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30814,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 30904,
                  "src": "9309:6:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 30813,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9309:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9308:8:110"
            },
            "scope": 31372,
            "src": "9245:703:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31041,
              "nodeType": "Block",
              "src": "10106:686:110",
              "statements": [
                {
                  "id": 31040,
                  "nodeType": "UncheckedBlock",
                  "src": "10117:668:110",
                  "statements": [
                    {
                      "assignments": [
                        30920
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30920,
                          "mutability": "mutable",
                          "name": "values",
                          "nameLocation": "10157:6:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 31040,
                          "src": "10142:21:110",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 30918,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "10142:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 30919,
                            "nodeType": "ArrayTypeName",
                            "src": "10142:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                              "typeString": "uint8[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30924,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 30922,
                            "name": "hrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30906,
                            "src": "10176:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 30921,
                          "name": "hrpExpand",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30808,
                          "src": "10166:9:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                            "typeString": "function (bytes memory) pure returns (uint8[] memory)"
                          }
                        },
                        "id": 30923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10166:14:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10142:38:110"
                    },
                    {
                      "assignments": [
                        30929
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 30929,
                          "mutability": "mutable",
                          "name": "comb",
                          "nameLocation": "10211:4:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 31040,
                          "src": "10195:20:110",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 30927,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10195:6:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 30928,
                            "nodeType": "ArrayTypeName",
                            "src": "10195:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                              "typeString": "uint32[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 30941,
                      "initialValue": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 30939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 30933,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30920,
                                  "src": "10231:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 30934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "10238:6:110",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "10231:13:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "expression": {
                                  "id": 30935,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30908,
                                  "src": "10247:4:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 30936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "10252:6:110",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "10247:11:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10231:27:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "36",
                              "id": 30938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10261:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "src": "10231:31:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 30932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "10218:12:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint32[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 30930,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10222:6:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 30931,
                            "nodeType": "ArrayTypeName",
                            "src": "10222:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                              "typeString": "uint32[]"
                            }
                          }
                        },
                        "id": 30940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10218:45:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                          "typeString": "uint32[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10195:68:110"
                    },
                    {
                      "body": {
                        "id": 30990,
                        "nodeType": "Block",
                        "src": "10332:224:110",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 30955,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30943,
                                "src": "10355:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 30956,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30920,
                                  "src": "10359:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 30957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "10366:6:110",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "10359:13:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10355:17:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 30988,
                              "nodeType": "Block",
                              "src": "10450:91:110",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 30986,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 30971,
                                        "name": "comb",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30929,
                                        "src": "10473:4:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                          "typeString": "uint32[] memory"
                                        }
                                      },
                                      "id": 30973,
                                      "indexExpression": {
                                        "id": 30972,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30943,
                                        "src": "10478:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "10473:7:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "baseExpression": {
                                                "id": 30978,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 30908,
                                                "src": "10496:4:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 30983,
                                              "indexExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 30982,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 30979,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 30943,
                                                  "src": "10501:1:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "expression": {
                                                    "id": 30980,
                                                    "name": "values",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 30920,
                                                    "src": "10505:6:110",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                                      "typeString": "uint8[] memory"
                                                    }
                                                  },
                                                  "id": 30981,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "10512:6:110",
                                                  "memberName": "length",
                                                  "nodeType": "MemberAccess",
                                                  "src": "10505:13:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "10501:17:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "10496:23:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            ],
                                            "id": 30977,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "10490:5:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 30976,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "10490:5:110",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 30984,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10490:30:110",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        ],
                                        "id": 30975,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10483:6:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint32_$",
                                          "typeString": "type(uint32)"
                                        },
                                        "typeName": {
                                          "id": 30974,
                                          "name": "uint32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10483:6:110",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 30985,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10483:38:110",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10473:48:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "id": 30987,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10473:48:110"
                                }
                              ]
                            },
                            "id": 30989,
                            "nodeType": "IfStatement",
                            "src": "10351:190:110",
                            "trueBody": {
                              "id": 30970,
                              "nodeType": "Block",
                              "src": "10374:70:110",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 30968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 30959,
                                        "name": "comb",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30929,
                                        "src": "10397:4:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                          "typeString": "uint32[] memory"
                                        }
                                      },
                                      "id": 30961,
                                      "indexExpression": {
                                        "id": 30960,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30943,
                                        "src": "10402:1:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "10397:7:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "id": 30964,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30920,
                                            "src": "10414:6:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                              "typeString": "uint8[] memory"
                                            }
                                          },
                                          "id": 30966,
                                          "indexExpression": {
                                            "id": 30965,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30943,
                                            "src": "10421:1:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "10414:9:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        ],
                                        "id": 30963,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10407:6:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint32_$",
                                          "typeString": "type(uint32)"
                                        },
                                        "typeName": {
                                          "id": 30962,
                                          "name": "uint32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10407:6:110",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 30967,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10407:17:110",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10397:27:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "id": 30969,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10397:27:110"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 30951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 30945,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30943,
                          "src": "10293:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 30946,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30920,
                              "src": "10297:6:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 30947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10304:6:110",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "10297:13:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "expression": {
                              "id": 30948,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30908,
                              "src": "10313:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 30949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10318:6:110",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "10313:11:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10297:27:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10293:31:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 30991,
                      "initializationExpression": {
                        "assignments": [
                          30943
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30943,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "10290:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 30991,
                            "src": "10285:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30942,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10285:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 30944,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10285:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 30953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "10326:4:110",
                          "subExpression": {
                            "id": 30952,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30943,
                            "src": "10329:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30954,
                        "nodeType": "ExpressionStatement",
                        "src": "10326:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "10280:276:110"
                    },
                    {
                      "expression": {
                        "id": 30998,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 30992,
                          "name": "res",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30914,
                          "src": "10584:3:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "hexValue": "36",
                              "id": 30996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10602:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              }
                            ],
                            "id": 30995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "10590:11:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint8[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 30993,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "10594:5:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 30994,
                              "nodeType": "ArrayTypeName",
                              "src": "10594:7:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                                "typeString": "uint8[]"
                              }
                            }
                          },
                          "id": 30997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10590:14:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "src": "10584:20:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "id": 30999,
                      "nodeType": "ExpressionStatement",
                      "src": "10584:20:110"
                    },
                    {
                      "assignments": [
                        31001
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 31001,
                          "mutability": "mutable",
                          "name": "mod",
                          "nameLocation": "10626:3:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 31040,
                          "src": "10619:10:110",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 31000,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10619:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 31007,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 31006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 31003,
                              "name": "comb",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30929,
                              "src": "10640:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            ],
                            "id": 31002,
                            "name": "polymod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30904,
                            "src": "10632:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint32[] memory) pure returns (uint32)"
                            }
                          },
                          "id": 31004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10632:13:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "^",
                        "rightExpression": {
                          "id": 31005,
                          "name": "enc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30910,
                          "src": "10648:3:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "10632:19:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10619:32:110"
                    },
                    {
                      "body": {
                        "id": 31038,
                        "nodeType": "Block",
                        "src": "10696:78:110",
                        "statements": [
                          {
                            "expression": {
                              "id": 31036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 31018,
                                  "name": "res",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30914,
                                  "src": "10715:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 31020,
                                "indexExpression": {
                                  "id": 31019,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31009,
                                  "src": "10719:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10715:6:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 31034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 31031,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 31023,
                                            "name": "mod",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31001,
                                            "src": "10731:3:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">>",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 31029,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "hexValue": "35",
                                                  "id": 31024,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "10739:1:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_5_by_1",
                                                    "typeString": "int_const 5"
                                                  },
                                                  "value": "5"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 31027,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "hexValue": "35",
                                                        "id": 31025,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "10744:1:110",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_5_by_1",
                                                          "typeString": "int_const 5"
                                                        },
                                                        "value": "5"
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "-",
                                                      "rightExpression": {
                                                        "id": 31026,
                                                        "name": "p",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 31009,
                                                        "src": "10748:1:110",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "10744:5:110",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 31028,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "10743:7:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "10739:11:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 31030,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "10738:13:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "10731:20:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "id": 31032,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10730:22:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "3331",
                                      "id": 31033,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10755:2:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_31_by_1",
                                        "typeString": "int_const 31"
                                      },
                                      "value": "31"
                                    },
                                    "src": "10730:27:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "id": 31022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10724:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 31021,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10724:5:110",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 31035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10724:34:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "10715:43:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 31037,
                            "nodeType": "ExpressionStatement",
                            "src": "10715:43:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 31014,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 31012,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31009,
                          "src": "10683:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "36",
                          "id": 31013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10687:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_6_by_1",
                            "typeString": "int_const 6"
                          },
                          "value": "6"
                        },
                        "src": "10683:5:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 31039,
                      "initializationExpression": {
                        "assignments": [
                          31009
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31009,
                            "mutability": "mutable",
                            "name": "p",
                            "nameLocation": "10676:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 31039,
                            "src": "10671:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31008,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10671:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 31011,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 31010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10680:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10671:10:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 31016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "10690:4:110",
                          "subExpression": {
                            "id": 31015,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31009,
                            "src": "10693:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31017,
                        "nodeType": "ExpressionStatement",
                        "src": "10690:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "10666:108:110"
                    }
                  ]
                }
              ]
            },
            "id": 31042,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createChecksum",
            "nameLocation": "9965:14:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30906,
                  "mutability": "mutable",
                  "name": "hrp",
                  "nameLocation": "10003:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31042,
                  "src": "9990:16:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30905,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9990:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30908,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "10030:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31042,
                  "src": "10017:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 30907,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10017:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30910,
                  "mutability": "mutable",
                  "name": "enc",
                  "nameLocation": "10052:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31042,
                  "src": "10045:10:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 30909,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10045:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9979:83:110"
            },
            "returnParameters": {
              "id": 30915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30914,
                  "mutability": "mutable",
                  "name": "res",
                  "nameLocation": "10101:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31042,
                  "src": "10086:18:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30912,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "10086:5:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 30913,
                    "nodeType": "ArrayTypeName",
                    "src": "10086:7:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10085:20:110"
            },
            "scope": 31372,
            "src": "9956:836:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31134,
              "nodeType": "Block",
              "src": "10938:448:110",
              "statements": [
                {
                  "id": 31133,
                  "nodeType": "UncheckedBlock",
                  "src": "10949:430:110",
                  "statements": [
                    {
                      "assignments": [
                        31058
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 31058,
                          "mutability": "mutable",
                          "name": "ehrp",
                          "nameLocation": "10989:4:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 31133,
                          "src": "10974:19:110",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 31056,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "10974:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 31057,
                            "nodeType": "ArrayTypeName",
                            "src": "10974:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                              "typeString": "uint8[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 31062,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 31060,
                            "name": "hrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31044,
                            "src": "11006:3:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 31059,
                          "name": "hrpExpand",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30808,
                          "src": "10996:9:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                            "typeString": "function (bytes memory) pure returns (uint8[] memory)"
                          }
                        },
                        "id": 31061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10996:14:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10974:36:110"
                    },
                    {
                      "assignments": [
                        31067
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 31067,
                          "mutability": "mutable",
                          "name": "cData",
                          "nameLocation": "11041:5:110",
                          "nodeType": "VariableDeclaration",
                          "scope": 31133,
                          "src": "11025:21:110",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 31065,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11025:6:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 31066,
                            "nodeType": "ArrayTypeName",
                            "src": "11025:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                              "typeString": "uint32[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 31077,
                      "initialValue": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 31075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 31071,
                                "name": "ehrp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31058,
                                "src": "11062:4:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                  "typeString": "uint8[] memory"
                                }
                              },
                              "id": 31072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11067:6:110",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "11062:11:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 31073,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31047,
                                "src": "11076:4:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                  "typeString": "uint8[] memory"
                                }
                              },
                              "id": 31074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11081:6:110",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "11076:11:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11062:25:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 31070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "11049:12:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint32[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 31068,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11053:6:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 31069,
                            "nodeType": "ArrayTypeName",
                            "src": "11053:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                              "typeString": "uint32[]"
                            }
                          }
                        },
                        "id": 31076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11049:39:110",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                          "typeString": "uint32[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11025:63:110"
                    },
                    {
                      "body": {
                        "id": 31099,
                        "nodeType": "Block",
                        "src": "11139:61:110",
                        "statements": [
                          {
                            "expression": {
                              "id": 31097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 31088,
                                  "name": "cData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31067,
                                  "src": "11158:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                    "typeString": "uint32[] memory"
                                  }
                                },
                                "id": 31090,
                                "indexExpression": {
                                  "id": 31089,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31079,
                                  "src": "11164:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11158:8:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 31093,
                                      "name": "ehrp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31058,
                                      "src": "11176:4:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                        "typeString": "uint8[] memory"
                                      }
                                    },
                                    "id": 31095,
                                    "indexExpression": {
                                      "id": 31094,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31079,
                                      "src": "11181:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11176:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 31092,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11169:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 31091,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11169:6:110",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 31096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11169:15:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "11158:26:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 31098,
                            "nodeType": "ExpressionStatement",
                            "src": "11158:26:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 31084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 31081,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31079,
                          "src": "11116:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 31082,
                            "name": "ehrp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31058,
                            "src": "11120:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 31083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11125:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11120:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11116:15:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 31100,
                      "initializationExpression": {
                        "assignments": [
                          31079
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31079,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "11113:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 31100,
                            "src": "11108:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31078,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "11108:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 31080,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11108:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 31086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "11133:4:110",
                          "subExpression": {
                            "id": 31085,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31079,
                            "src": "11136:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31087,
                        "nodeType": "ExpressionStatement",
                        "src": "11133:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "11103:97:110"
                    },
                    {
                      "body": {
                        "id": 31125,
                        "nodeType": "Block",
                        "src": "11250:75:110",
                        "statements": [
                          {
                            "expression": {
                              "id": 31123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 31111,
                                  "name": "cData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31067,
                                  "src": "11269:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                    "typeString": "uint32[] memory"
                                  }
                                },
                                "id": 31116,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 31115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 31112,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31102,
                                    "src": "11275:1:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 31113,
                                      "name": "ehrp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31058,
                                      "src": "11279:4:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                        "typeString": "uint8[] memory"
                                      }
                                    },
                                    "id": 31114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "11284:6:110",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "11279:11:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11275:15:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11269:22:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 31119,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31047,
                                      "src": "11301:4:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                        "typeString": "uint8[] memory"
                                      }
                                    },
                                    "id": 31121,
                                    "indexExpression": {
                                      "id": 31120,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31102,
                                      "src": "11306:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11301:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 31118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11294:6:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 31117,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11294:6:110",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 31122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11294:15:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "11269:40:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 31124,
                            "nodeType": "ExpressionStatement",
                            "src": "11269:40:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 31107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 31104,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31102,
                          "src": "11227:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 31105,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31047,
                            "src": "11231:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 31106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11236:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11231:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11227:15:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 31126,
                      "initializationExpression": {
                        "assignments": [
                          31102
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31102,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "11224:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 31126,
                            "src": "11219:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31101,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "11219:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 31103,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11219:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 31109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "11244:4:110",
                          "subExpression": {
                            "id": 31108,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31102,
                            "src": "11247:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31110,
                        "nodeType": "ExpressionStatement",
                        "src": "11244:4:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "11214:111:110"
                    },
                    {
                      "expression": {
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 31131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 31128,
                              "name": "cData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31067,
                              "src": "11354:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            ],
                            "id": 31127,
                            "name": "polymod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30904,
                            "src": "11346:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint32[] memory) pure returns (uint32)"
                            }
                          },
                          "id": 31129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11346:14:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 31130,
                          "name": "enc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31049,
                          "src": "11364:3:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "11346:21:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 31053,
                      "id": 31132,
                      "nodeType": "Return",
                      "src": "11339:28:110"
                    }
                  ]
                }
              ]
            },
            "id": 31135,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "verifyChecksum",
            "nameLocation": "10809:14:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 31050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31044,
                  "mutability": "mutable",
                  "name": "hrp",
                  "nameLocation": "10847:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31135,
                  "src": "10834:16:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 31043,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10834:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31047,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "10876:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31135,
                  "src": "10861:19:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 31045,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "10861:5:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 31046,
                    "nodeType": "ArrayTypeName",
                    "src": "10861:7:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31049,
                  "mutability": "mutable",
                  "name": "enc",
                  "nameLocation": "10898:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31135,
                  "src": "10891:10:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 31048,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10891:6:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10823:85:110"
            },
            "returnParameters": {
              "id": 31053,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31052,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 31135,
                  "src": "10932:4:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31051,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10932:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10931:6:110"
            },
            "scope": 31372,
            "src": "10800:586:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31191,
              "nodeType": "Block",
              "src": "11552:246:110",
              "statements": [
                {
                  "assignments": [
                    31152
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31152,
                      "mutability": "mutable",
                      "name": "dataBits",
                      "nameLocation": "11578:8:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 31191,
                      "src": "11563:23:110",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 31150,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11563:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 31151,
                        "nodeType": "ArrayTypeName",
                        "src": "11563:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 31159,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 31156,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31137,
                          "src": "11601:4:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 31157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "11606:6:110",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "11601:11:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 31155,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11589:11:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint8[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 31153,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11593:5:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 31154,
                        "nodeType": "ArrayTypeName",
                        "src": "11593:7:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      }
                    },
                    "id": 31158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11589:24:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                      "typeString": "uint8[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11563:50:110"
                },
                {
                  "body": {
                    "id": 31182,
                    "nodeType": "Block",
                    "src": "11671:55:110",
                    "statements": [
                      {
                        "expression": {
                          "id": 31180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 31171,
                              "name": "dataBits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31152,
                              "src": "11686:8:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 31173,
                            "indexExpression": {
                              "id": 31172,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31161,
                              "src": "11695:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11686:11:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 31176,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31137,
                                  "src": "11706:4:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 31178,
                                "indexExpression": {
                                  "id": 31177,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31161,
                                  "src": "11711:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11706:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              ],
                              "id": 31175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11700:5:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 31174,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "11700:5:110",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 31179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11700:14:110",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "11686:28:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 31181,
                        "nodeType": "ExpressionStatement",
                        "src": "11686:28:110"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 31167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 31164,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31161,
                      "src": "11645:1:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 31165,
                        "name": "dataBits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31152,
                        "src": "11649:8:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      "id": 31166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11658:6:110",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11649:15:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11645:19:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 31183,
                  "initializationExpression": {
                    "assignments": [
                      31161
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 31161,
                        "mutability": "mutable",
                        "name": "p",
                        "nameLocation": "11638:1:110",
                        "nodeType": "VariableDeclaration",
                        "scope": 31183,
                        "src": "11631:8:110",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 31160,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11631:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 31163,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 31162,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11642:1:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11631:12:110"
                  },
                  "isSimpleCounterLoop": false,
                  "loopExpression": {
                    "expression": {
                      "id": 31169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "11666:3:110",
                      "subExpression": {
                        "id": 31168,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31161,
                        "src": "11668:1:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 31170,
                    "nodeType": "ExpressionStatement",
                    "src": "11666:3:110"
                  },
                  "nodeType": "ForStatement",
                  "src": "11626:100:110"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 31185,
                        "name": "dataBits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31152,
                        "src": "11758:8:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      {
                        "id": 31186,
                        "name": "frombits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31139,
                        "src": "11768:8:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 31187,
                        "name": "tobits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31141,
                        "src": "11778:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 31188,
                        "name": "pad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31143,
                        "src": "11786:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 31184,
                      "name": "_convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31371,
                      "src": "11745:12:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint8_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint8[] memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 31189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11745:45:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 31147,
                  "id": 31190,
                  "nodeType": "Return",
                  "src": "11738:52:110"
                }
              ]
            },
            "id": 31192,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "convertBits",
            "nameLocation": "11403:11:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 31144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31137,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "11438:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31192,
                  "src": "11425:17:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 31136,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11425:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31139,
                  "mutability": "mutable",
                  "name": "frombits",
                  "nameLocation": "11458:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31192,
                  "src": "11453:13:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31138,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11453:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31141,
                  "mutability": "mutable",
                  "name": "tobits",
                  "nameLocation": "11482:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31192,
                  "src": "11477:11:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31140,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11477:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31143,
                  "mutability": "mutable",
                  "name": "pad",
                  "nameLocation": "11504:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31192,
                  "src": "11499:8:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31142,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11499:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11414:100:110"
            },
            "returnParameters": {
              "id": 31147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31146,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 31192,
                  "src": "11538:12:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 31145,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11538:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11537:14:110"
            },
            "scope": 31372,
            "src": "11394:404:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31213,
              "nodeType": "Block",
              "src": "11966:67:110",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 31207,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31195,
                        "src": "11997:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      },
                      {
                        "id": 31208,
                        "name": "frombits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31197,
                        "src": "12003:8:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 31209,
                        "name": "tobits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31199,
                        "src": "12013:6:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 31210,
                        "name": "pad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31201,
                        "src": "12021:3:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 31206,
                      "name": "_convertBits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31371,
                      "src": "11984:12:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint8_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint8[] memory,uint256,uint256,bool) pure returns (bytes memory)"
                      }
                    },
                    "id": 31211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11984:41:110",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 31205,
                  "id": 31212,
                  "nodeType": "Return",
                  "src": "11977:48:110"
                }
              ]
            },
            "id": 31214,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "convertBits",
            "nameLocation": "11815:11:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 31202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31195,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "11852:4:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31214,
                  "src": "11837:19:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 31193,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "11837:5:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 31194,
                    "nodeType": "ArrayTypeName",
                    "src": "11837:7:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31197,
                  "mutability": "mutable",
                  "name": "frombits",
                  "nameLocation": "11872:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31214,
                  "src": "11867:13:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31196,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11867:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31199,
                  "mutability": "mutable",
                  "name": "tobits",
                  "nameLocation": "11896:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31214,
                  "src": "11891:11:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31198,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11891:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31201,
                  "mutability": "mutable",
                  "name": "pad",
                  "nameLocation": "11918:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31214,
                  "src": "11913:8:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31200,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11913:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11826:102:110"
            },
            "returnParameters": {
              "id": 31205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31204,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 31214,
                  "src": "11952:12:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 31203,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11952:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11951:14:110"
            },
            "scope": 31372,
            "src": "11806:227:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31370,
              "nodeType": "Block",
              "src": "12210:1197:110",
              "statements": [
                {
                  "assignments": [
                    31229
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31229,
                      "mutability": "mutable",
                      "name": "acc",
                      "nameLocation": "12226:3:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 31370,
                      "src": "12221:8:110",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31228,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12221:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 31231,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 31230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12232:1:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12221:12:110"
                },
                {
                  "assignments": [
                    31233
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31233,
                      "mutability": "mutable",
                      "name": "bits",
                      "nameLocation": "12249:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 31370,
                      "src": "12244:9:110",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31232,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12244:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 31235,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 31234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12256:1:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12244:13:110"
                },
                {
                  "assignments": [
                    31237
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31237,
                      "mutability": "mutable",
                      "name": "maxv",
                      "nameLocation": "12275:4:110",
                      "nodeType": "VariableDeclaration",
                      "scope": 31370,
                      "src": "12270:9:110",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31236,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12270:4:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 31244,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 31243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "31",
                            "id": 31238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12283:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "id": 31239,
                            "name": "tobits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31221,
                            "src": "12288:6:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12283:11:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 31241,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12282:13:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 31242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12298:1:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "12282:17:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12270:29:110"
                },
                {
                  "id": 31318,
                  "nodeType": "UncheckedBlock",
                  "src": "12312:667:110",
                  "statements": [
                    {
                      "body": {
                        "id": 31316,
                        "nodeType": "Block",
                        "src": "12376:592:110",
                        "statements": [
                          {
                            "assignments": [
                              31256
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 31256,
                                "mutability": "mutable",
                                "name": "value",
                                "nameLocation": "12401:5:110",
                                "nodeType": "VariableDeclaration",
                                "scope": 31316,
                                "src": "12395:11:110",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 31255,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12395:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 31260,
                            "initialValue": {
                              "baseExpression": {
                                "id": 31257,
                                "name": "dataBits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31217,
                                "src": "12409:8:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                  "typeString": "uint8[] memory"
                                }
                              },
                              "id": 31259,
                              "indexExpression": {
                                "id": 31258,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31246,
                                "src": "12418:1:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12409:11:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12395:25:110"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 31271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 31264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 31262,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31256,
                                      "src": "12469:5:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 31263,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12478:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "12469:10:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 31270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "id": 31267,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 31265,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31256,
                                            "src": "12484:5:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">>",
                                          "rightExpression": {
                                            "id": 31266,
                                            "name": "frombits",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31219,
                                            "src": "12493:8:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12484:17:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        }
                                      ],
                                      "id": 31268,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "12483:19:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 31269,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12506:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "12483:24:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "12469:38:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4265636833323a2076616c7565206d757374206265206e6f6e2d6e6567617469766520616e642066697420696e2066726f6d62697473",
                                  "id": 31272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12530:56:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c3d844aee3a847f0e164a11470dfaf03e0661e60bf8b0718b82a475dc4773582",
                                    "typeString": "literal_string \"Bech32: value must be non-negative and fit in frombits\""
                                  },
                                  "value": "Bech32: value must be non-negative and fit in frombits"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c3d844aee3a847f0e164a11470dfaf03e0661e60bf8b0718b82a475dc4773582",
                                    "typeString": "literal_string \"Bech32: value must be non-negative and fit in frombits\""
                                  }
                                ],
                                "id": 31261,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4294967278,
                                  4294967278,
                                  4294967278
                                ],
                                "referencedDeclaration": 4294967278,
                                "src": "12439:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 31273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12439:166:110",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 31274,
                            "nodeType": "ExpressionStatement",
                            "src": "12439:166:110"
                          },
                          {
                            "expression": {
                              "id": 31282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 31275,
                                "name": "acc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31229,
                                "src": "12626:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 31278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 31276,
                                        "name": "acc",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31229,
                                        "src": "12633:3:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "id": 31277,
                                        "name": "frombits",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31219,
                                        "src": "12640:8:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12633:15:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 31279,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12632:17:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 31280,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31256,
                                  "src": "12652:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "12632:25:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12626:31:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 31283,
                            "nodeType": "ExpressionStatement",
                            "src": "12626:31:110"
                          },
                          {
                            "expression": {
                              "id": 31286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 31284,
                                "name": "bits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31233,
                                "src": "12676:4:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 31285,
                                "name": "frombits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31219,
                                "src": "12684:8:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12676:16:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 31287,
                            "nodeType": "ExpressionStatement",
                            "src": "12676:16:110"
                          },
                          {
                            "body": {
                              "id": 31314,
                              "nodeType": "Block",
                              "src": "12736:217:110",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 31293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 31291,
                                      "name": "bits",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31233,
                                      "src": "12759:4:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 31292,
                                      "name": "tobits",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31221,
                                      "src": "12767:6:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12759:14:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 31294,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12759:14:110"
                                },
                                {
                                  "expression": {
                                    "id": 31312,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 31295,
                                      "name": "ret",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31226,
                                      "src": "12796:3:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 31298,
                                          "name": "ret",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31226,
                                          "src": "12845:3:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 31308,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 31305,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 31303,
                                                          "name": "acc",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 31229,
                                                          "src": "12889:3:110",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">>",
                                                        "rightExpression": {
                                                          "id": 31304,
                                                          "name": "bits",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 31233,
                                                          "src": "12896:4:110",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "12889:11:110",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "id": 31306,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "12888:13:110",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "&",
                                                  "rightExpression": {
                                                    "id": 31307,
                                                    "name": "maxv",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 31237,
                                                    "src": "12904:4:110",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "12888:20:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 31302,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "12882:5:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint8_$",
                                                  "typeString": "type(uint8)"
                                                },
                                                "typeName": {
                                                  "id": 31301,
                                                  "name": "uint8",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "12882:5:110",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 31309,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "12882:27:110",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            ],
                                            "id": 31300,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "12875:6:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes1_$",
                                              "typeString": "type(bytes1)"
                                            },
                                            "typeName": {
                                              "id": 31299,
                                              "name": "bytes1",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12875:6:110",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 31310,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12875:35:110",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        ],
                                        "expression": {
                                          "id": 31296,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4294967295,
                                          "src": "12802:3:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 31297,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "12806:12:110",
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "src": "12802:16:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 31311,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12802:131:110",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "src": "12796:137:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 31313,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12796:137:110"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 31288,
                                "name": "bits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31233,
                                "src": "12720:4:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 31289,
                                "name": "tobits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31221,
                                "src": "12728:6:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12720:14:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 31315,
                            "nodeType": "WhileStatement",
                            "src": "12713:240:110"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 31251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 31248,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31246,
                          "src": "12350:1:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 31249,
                            "name": "dataBits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31217,
                            "src": "12354:8:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[] memory"
                            }
                          },
                          "id": 31250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12363:6:110",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "12354:15:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12350:19:110",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 31317,
                      "initializationExpression": {
                        "assignments": [
                          31246
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31246,
                            "mutability": "mutable",
                            "name": "p",
                            "nameLocation": "12347:1:110",
                            "nodeType": "VariableDeclaration",
                            "scope": 31317,
                            "src": "12342:6:110",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31245,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12342:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 31247,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12342:6:110"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 31253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "12371:3:110",
                          "subExpression": {
                            "id": 31252,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31246,
                            "src": "12373:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31254,
                        "nodeType": "ExpressionStatement",
                        "src": "12371:3:110"
                      },
                      "nodeType": "ForStatement",
                      "src": "12337:631:110"
                    }
                  ]
                },
                {
                  "condition": {
                    "id": 31319,
                    "name": "pad",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 31223,
                    "src": "12995:3:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 31368,
                    "nodeType": "Block",
                    "src": "13217:183:110",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 31364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 31349,
                                  "name": "bits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31233,
                                  "src": "13258:4:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 31350,
                                  "name": "frombits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31219,
                                  "src": "13265:8:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13258:15:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 31360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 31357,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 31352,
                                              "name": "acc",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 31229,
                                              "src": "13279:3:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 31355,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 31353,
                                                    "name": "tobits",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 31221,
                                                    "src": "13287:6:110",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "id": 31354,
                                                    "name": "bits",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 31233,
                                                    "src": "13296:4:110",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "13287:13:110",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 31356,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "13286:15:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "13279:22:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 31358,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13278:24:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "id": 31359,
                                        "name": "maxv",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31237,
                                        "src": "13305:4:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13278:31:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 31361,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13277:33:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 31362,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13314:1:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13277:38:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13258:57:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4265636833323a20696e76616c69642070616464696e67206f722076616c75652073697a65",
                              "id": 31365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13334:39:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e94f6be74a97f1cb3bd761cbce886a47861edc099a5ca2546d140eebfb9c3780",
                                "typeString": "literal_string \"Bech32: invalid padding or value size\""
                              },
                              "value": "Bech32: invalid padding or value size"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e94f6be74a97f1cb3bd761cbce886a47861edc099a5ca2546d140eebfb9c3780",
                                "typeString": "literal_string \"Bech32: invalid padding or value size\""
                              }
                            ],
                            "id": 31348,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "13232:7:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13232:156:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31367,
                        "nodeType": "ExpressionStatement",
                        "src": "13232:156:110"
                      }
                    ]
                  },
                  "id": 31369,
                  "nodeType": "IfStatement",
                  "src": "12991:409:110",
                  "trueBody": {
                    "id": 31347,
                    "nodeType": "Block",
                    "src": "13000:211:110",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 31320,
                            "name": "bits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31233,
                            "src": "13019:4:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 31321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13026:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13019:8:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 31346,
                        "nodeType": "IfStatement",
                        "src": "13015:185:110",
                        "trueBody": {
                          "id": 31345,
                          "nodeType": "Block",
                          "src": "13029:171:110",
                          "statements": [
                            {
                              "expression": {
                                "id": 31343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 31323,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31226,
                                  "src": "13048:3:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 31326,
                                      "name": "ret",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31226,
                                      "src": "13093:3:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 31339,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 31336,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 31331,
                                                      "name": "acc",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 31229,
                                                      "src": "13133:3:110",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<<",
                                                    "rightExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 31334,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 31332,
                                                            "name": "tobits",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 31221,
                                                            "src": "13141:6:110",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "-",
                                                          "rightExpression": {
                                                            "id": 31333,
                                                            "name": "bits",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 31233,
                                                            "src": "13150:4:110",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "13141:13:110",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "id": 31335,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "13140:15:110",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13133:22:110",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 31337,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "13132:24:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "&",
                                              "rightExpression": {
                                                "id": 31338,
                                                "name": "maxv",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 31237,
                                                "src": "13159:4:110",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "13132:31:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 31330,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "13126:5:110",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 31329,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "13126:5:110",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 31340,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13126:38:110",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        ],
                                        "id": 31328,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13119:6:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 31327,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13119:6:110",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 31341,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13119:46:110",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    ],
                                    "expression": {
                                      "id": 31324,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "13054:3:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 31325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "13058:12:110",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "13054:16:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 31342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13054:130:110",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "13048:136:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 31344,
                              "nodeType": "ExpressionStatement",
                              "src": "13048:136:110"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "id": 31371,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_convertBits",
            "nameLocation": "12050:12:110",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 31224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31217,
                  "mutability": "mutable",
                  "name": "dataBits",
                  "nameLocation": "12088:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31371,
                  "src": "12073:23:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 31215,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "12073:5:110",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 31216,
                    "nodeType": "ArrayTypeName",
                    "src": "12073:7:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31219,
                  "mutability": "mutable",
                  "name": "frombits",
                  "nameLocation": "12112:8:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31371,
                  "src": "12107:13:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31218,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12107:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31221,
                  "mutability": "mutable",
                  "name": "tobits",
                  "nameLocation": "12136:6:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31371,
                  "src": "12131:11:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31220,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12131:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31223,
                  "mutability": "mutable",
                  "name": "pad",
                  "nameLocation": "12158:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31371,
                  "src": "12153:8:110",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31222,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12153:4:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12062:106:110"
            },
            "returnParameters": {
              "id": 31227,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31226,
                  "mutability": "mutable",
                  "name": "ret",
                  "nameLocation": "12205:3:110",
                  "nodeType": "VariableDeclaration",
                  "scope": 31371,
                  "src": "12192:16:110",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 31225,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12192:5:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12191:18:110"
            },
            "scope": 31372,
            "src": "12041:1366:110",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 31373,
        "src": "211:13199:110",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "100:13310:110"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.944Z",
  "devdoc": {
    "details": "Collection of functions related to the Bech32 address generation",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}