{
  "contractName": "WitPriceFeedsDataLib",
  "abi": [
    {
      "inputs": [],
      "name": "PriceFeedNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StalePrice",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "uint64",
              "name": "price",
              "type": "uint64"
            },
            {
              "internalType": "int56",
              "name": "deltaPrice",
              "type": "int56"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "trail",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        },
        {
          "internalType": "uint24",
          "name": "age",
          "type": "uint24"
        }
      ],
      "name": "getPriceNotOlderThan",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "uint64",
              "name": "price",
              "type": "uint64"
            },
            {
              "internalType": "int56",
              "name": "deltaPrice",
              "type": "int56"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "trail",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "getPriceUnsafe",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "uint64",
              "name": "price",
              "type": "uint64"
            },
            {
              "internalType": "int56",
              "name": "deltaPrice",
              "type": "int56"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "trail",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IWitPriceFeedsTypes.Oracles",
          "name": "oracle",
          "type": "IWitPriceFeedsTypes.Oracles"
        }
      ],
      "name": "toString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IWitPriceFeedsTypes.Mappers",
          "name": "mapper",
          "type": "IWitPriceFeedsTypes.Mappers"
        }
      ],
      "name": "toString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IWitPriceFeedsTypes.Oracles",
          "name": "oracle",
          "type": "IWitPriceFeedsTypes.Oracles"
        }
      ],
      "name": "toERC165Id",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PriceFeedNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StalePrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"getPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"internalType\":\"uint24\",\"name\":\"age\",\"type\":\"uint24\"}],\"name\":\"getPriceNotOlderThan\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"getPriceUnsafe\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"oracle\",\"type\":\"IWitPriceFeedsTypes.Oracles\"}],\"name\":\"toERC165Id\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"oracle\",\"type\":\"IWitPriceFeedsTypes.Oracles\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Mappers\",\"name\":\"mapper\",\"type\":\"IWitPriceFeedsTypes.Mappers\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation.\",\"errors\":{\"PriceFeedNotFound()\":[{\"details\":\"Signature: 0x14aebe68\"}],\"StalePrice()\":[{\"details\":\"Signature: 0x19abf40e\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"WitPriceFeeds data model.\",\"version\":1},\"userdoc\":{\"errors\":{\"PriceFeedNotFound()\":[{\"notice\":\"Price feed not found or it is not pushed on-chain yet.\"}],\"StalePrice()\":[{\"notice\":\"Requested price is stale.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/data/WitPriceFeedsDataLib.sol\":\"WitPriceFeedsDataLib\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"ado-contracts/contracts/interfaces/IERC2362.sol\":{\"keccak256\":\"0x4df66aa83b94d7c3d52aba3522b6eeafc19f2c45299b7c871ef46eb199ee4f6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af92023c38ab97a95fb7e2a196a697cfc1d90bb1b8bfe73e0ba69cbb7a8f5ab\",\"dweb:/ipfs/QmVSBWxe2QCZvAxiuTfEwprK9MbDtFNptoWeMBbmUcwQnx\"]},\"project:/contracts/WitOracle.sol\":{\"keccak256\":\"0x7f20eab15140df459753dfa8e406b826918b56ebe2c46456f9d04345c02629d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0573ce3d48200c71d8235a1a8c055b706420b2037bd21336f3c61713c3b8349\",\"dweb:/ipfs/QmY7BnVaNXFtJs1BFdeaa7dQfvUVoZyfwtv9HuToCxUUHU\"]},\"project:/contracts/data/WitPriceFeedsDataLib.sol\":{\"keccak256\":\"0x6c018724f4a5fdde4c0581bf7e9c25518925fc76f86c8efee9a188da64eaf39a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://143dd8e0cde80a88b4ff2c84f2d2a2b3207fc0201bc7a982689dfc6b90d8a357\",\"dweb:/ipfs/QmcF36BXaHTZ41bJfuukEQ74dksg37XWQ2FhvTd4iVQmNt\"]},\"project:/contracts/interfaces/IWitAppliance.sol\":{\"keccak256\":\"0xd207ca54a1049445a3d99eea497d9b34c6dbdd44d771eee825e4c031bd2f447e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f81de32d868ff2881ed6fe97cc897e40b4b11d23cbe53a0e23cf3e68f9c0f0a3\",\"dweb:/ipfs/QmeeXmzmK5MAzt7Hf5DB2L81efKtTzZg9VbQ8sUiTqEk5c\"]},\"project:/contracts/interfaces/IWitOracle.sol\":{\"keccak256\":\"0x26cbe2074c0b3f545a46d95fad5e2280b67edcd958e4ae0b88f3a018aa11b805\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324bac61f65e3edb01c88b9b75ca17affd593be88da5753a93b3f5304d3f479\",\"dweb:/ipfs/QmcVmNV6smbFiPaxvuN8ShkqbDZsT1wfjnF7f3qs6ke7QG\"]},\"project:/contracts/interfaces/IWitOracleAppliance.sol\":{\"keccak256\":\"0xcd8e57eca7f8042c85a83264e2ff6d1cd7a9f1521831736d7f57bcc7800642e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c639668e9439d60770b5df77436088ae7bd0aeb1d1be446552a98b6c29138f0\",\"dweb:/ipfs/QmbN3f5YuKMSd2j9tjay3VEkiYibGWpbfbwRNyrxA8k4o4\"]},\"project:/contracts/interfaces/IWitOracleQueriable.sol\":{\"keccak256\":\"0xdb0da1e377a35a7d620f43cb583a876750a52d91da2b888f48042483ad9c4910\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edfcdf3e96ec3c5de7438f82e3d5a1dc9af9eb29080044213dccb26ff978354c\",\"dweb:/ipfs/Qmap2FzSysh2fug88eortbsTM7itFygRzKc9HfV43ePMik\"]},\"project:/contracts/interfaces/IWitOracleQueriableEvents.sol\":{\"keccak256\":\"0x47c283e931006d35bd2599524f86724e45eae6fad2fdd9cdecd1c85a90ff3f8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ad0520f99ec9298536ae9434f58caeb470c10dd3eaab1e4c7ed4cae9a97e2a2\",\"dweb:/ipfs/QmSuYCsSPweZfQc5Fbf9jYDdx4u7gwYCUdjhpcrrxmWZy6\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistry.sol\":{\"keccak256\":\"0x437bbb89129311bd1cc8f6becd333df46109ec53b24d3159be942b225614071f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef9bcdf4a73cb126885478c994821b7fe2b87d9221b767b4c9342b89b0d6550a\",\"dweb:/ipfs/QmXzZXPMxjSiFpcEnhg6CjLFNxGCpDZt22xpUh7VHxNTGd\"]},\"project:/contracts/interfaces/IWitPriceFeeds.sol\":{\"keccak256\":\"0xb29abe8819699e37e91b41c4cb63273fbb0ab8c482a09c31da6c91d7338cc405\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9325f3cbd3b396216268ec83d583abd86f44a5d656c375485296e256b3c2f2a\",\"dweb:/ipfs/Qme8pjdacDLa8HLKF7Sm3XZa9uUQn1EL7gANLnAbak8y4f\"]},\"project:/contracts/interfaces/IWitPriceFeedsAdmin.sol\":{\"keccak256\":\"0xd05b103840eeb8a4770e140dbe91bd40dd33d92959d226c57a2ae45a5e615355\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29e6104b0b62c676bb797ce8d01512550058f5b6de210b2467ba9bb0dfe8c00f\",\"dweb:/ipfs/QmUAgsVJYHqiRFrrnWCYo5vGJRaN4VsZvcBXJWYJUF5QyV\"]},\"project:/contracts/interfaces/IWitPriceFeedsConsumer.sol\":{\"keccak256\":\"0x2c12c7f4502a2953f352b67688cd8841a1198c9b8e8f9f87ab3fc0163b7533e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d82ec627ac4c38a7336b03541c118d606e107128ba109097857a26d376e92f33\",\"dweb:/ipfs/QmQBmvL5ziD7fY2vDBNpbDbbhnwi8Cwh4XVthUjTd9ZyCF\"]},\"project:/contracts/interfaces/IWitPriceFeedsEvents.sol\":{\"keccak256\":\"0xf8b1a2ca8dd8dc8a5b8debf18f4c32df404709a4b03353c939e57a92a4e41b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f755b639781013ae0bae92f063b1f5b440c187bbc9a7f938b6982e579114acfe\",\"dweb:/ipfs/QmZafsjeELGnVdbXvsiXeQ82vR7DBFCrwDLGqeopgxBgyC\"]},\"project:/contracts/interfaces/IWitPriceFeedsTypes.sol\":{\"keccak256\":\"0x68e2189e863f50e8d0aad8394a526df00c1e626886c23aa24c915427e5285e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5ff40355d4144e7c08f033b55e9ef1b5994bbd83bbfbd7a41129b141f164194\",\"dweb:/ipfs/QmXMhM7GXaVXnCQ1VFB4kPhbhbfktuNFKqMGXMtWLgUk3d\"]},\"project:/contracts/interfaces/legacy/IChainlinkAggregatorV3.sol\":{\"keccak256\":\"0x09750da5b74e684e13093320b00c8e95d648ddf58bfdb29b8bc3b90e6853c263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b08da33fc3e7cbf1f60965f82efdea926f2f62312298be29188eca9d109189ac\",\"dweb:/ipfs/QmR2sJ4dddcDW5q14usqiEeB7pamqHDfqkMDd9hghVMhiJ\"]},\"project:/contracts/interfaces/legacy/IWitPyth.sol\":{\"keccak256\":\"0xa06a34a5e553beae7dbe09a5d1049557190511e696a1b855ab5e1196a06048a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2c814b7be5539147c0ba1b55f6cddcad382d5e5e9f9de545d2d428c1989c7de\",\"dweb:/ipfs/QmY8KSV3PW2FBQVzXidLQ21KvDJ1v6y8WHaV8uxsqThJCC\"]},\"project:/contracts/interfaces/legacy/IWitPythErrors.sol\":{\"keccak256\":\"0x7d10dfd625a4914e4017cde140397f9f236f726ea82b4feed1d889f852866c1d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bbf8dc2bbac36cf0a141f7062b6ed8143cffaee7969a1afc3cf0d1971e8cf18\",\"dweb:/ipfs/QmbLiZwggZwhiTLJurBkAu492xAZZ9MXWiknsuGnLYNXhP\"]},\"project:/contracts/interfaces/legacy/IWitPythEvents.sol\":{\"keccak256\":\"0xacca21f4bb4d740de63f4f2e469e8313b1d8f9a7d2340efcc17981c3510c2800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da8b0493082593838fbc4df2431c1983a82165ae1f17215e988951c0c1ef3882\",\"dweb:/ipfs/QmNUX9K3UqxiR9igT87iLja8h3u7htp83ZhAGZ6UgD3BZP\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Slices.sol\":{\"keccak256\":\"0x9d046fa558be922c9625a1fdc470f6e68b3c9b5745b6185cb4a4fc59181fa006\",\"license\":\"APACHE-2.0\",\"urls\":[\"bzz-raw://ab19ba09faf83aaa92947f0a0907f6522be89279a9a1b0e53d5393a23085947d\",\"dweb:/ipfs/QmeE9MwhpSFNTwyqDFpMFjftrJKR1edBhLjV3bdKQQHUVm\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]}},\"version\":1}",
  "bytecode": "0x61325c610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100d6575f3560e01c80639744540911610093578063d9ea438f1161006e578063d9ea438f146102b9578063ef0bf0a0146102cc578063fce897db146102eb578063ff0e1724146102ff575f5ffd5b80639744540914610228578063c66f4c0a14610293578063cab8a78e146102a6575f5ffd5b806301d63b7f146100da5780630873d81d1461011757806310b999a3146101565780631752c19f146101765780635e34a7bb146101f45780637d18e02014610207575b5f5ffd5b8180156100e5575f5ffd5b506100f96100f436600461274e565b61031e565b6040516001600160e01b031990911681526020015b60405180910390f35b818015610122575f5ffd5b50610136610131366004612822565b610570565b604080516001600160e01b0319909316835260208301919091520161010e565b6101696101643660046128c2565b610668565b60405161010e9190612909565b610189610184366004612944565b6107a9565b60405161010e91905f60c0820190506001600160401b0383511682526001600160401b036020840151166020830152604083015160060b604083015260608301515f0b60608301526001600160401b03608084015116608083015260a083015160a083015292915050565b61016961020236600461297d565b610e2d565b818015610212575f5ffd5b506102266102213660046129a3565b610f1c565b005b61023b6102363660046129d8565b61128f565b60405161010e91905f60a08201905082515f0b82526001600160401b036020840151166020830152604083015160060b60408301526001600160401b0360608401511660608301526080830151608083015292915050565b61023b6102a13660046129d8565b611348565b6100f96102b43660046128c2565b611495565b61023b6102c73660046129f1565b61153c565b8180156102d7575f5ffd5b506100f96102e6366004612a22565b611661565b8180156102f6575f5ffd5b506100f961178e565b81801561030a575f5ffd5b506100f9610319366004612a90565b6117c3565b5f8084600481111561033257610332612b0d565b60ff1611801561035657506004848181111561035057610350612b0d565b60ff1611155b6103985760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21036b0b83832b960911b60448201526064015b60405180910390fd5b5f6103a388886118f1565b90505f6103af82611a98565b90506103ba81611ac2565b156103d75760405162461bcd60e51b815260040161038f90612b21565b5f5f5b85811015610543575f6104438888848181106103f8576103f8612b4a565b905060200281019061040a9190612b5e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90505f61044f82611a98565b905061045a81611ac2565b89898581811061046c5761046c612b4a565b905060200281019061047e9190612b5e565b60405160200161048f929190612ba0565b604051602081830303815290604052906104bc5760405162461bcd60e51b815260040161038f9190612909565b506104c8836020612bec565b826001600160e01b031916901c841793506104e1611b46565b6001600160e01b0319929092165f9081526002909201602090815260408320805460018082018355918552919093206008820401805463ffffffff60079093166004026101000a928302191660e089901c9290920291909117905550016103da565b5061055082898984611b6a565b6105598361128f565b5061056261178e565b9a9950505050505050505050565b5f5f5f61057d89896118f1565b90505f61058982611a98565b90506001600160a01b0385166105d55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051630502487d60e51b81526001600160a01b0386169063a0490fa090610603908b908b90600401612c2b565b602060405180830381865afa15801561061e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106429190612c46565b925061065181875f3087611bf2565b61065961178e565b93505050965096945050505050565b60605f82600381111561067d5761067d612b0d565b036106a857505060408051808201909152600a8152695769742f4f7261636c6560b01b602082015290565b60018260038111156106bc576106bc612b0d565b036106e857505060408051808201909152600b81526a20a22797a2a92199199b1960a91b602082015290565b60028260038111156106fc576106fc612b0d565b03610732575050604080518082019091526015815274436861696e6c696e6b41676772656761746f72563360581b602082015290565b600382600381111561074657610746612b0d565b0361076c575050604080518082019091526005815264092a0f2e8d60db1b602082015290565b60405162461bcd60e51b8152602060048201526012602482015271756e737570706f72746564206f7261636c6560701b604482015260640161038f565b6107b161262d565b6001840154600160501b900460ff165f8160048111156107d3576107d3612b0d565b03610d11576001850154600160581b900460ff165f8160038111156107fa576107fa612b0d565b036109f3576001860154600160601b90046001600160a01b0316158061083357506001860154600160601b90046001600160a01b031630145b156108a85750506040805160c08101825260058601546001600160401b03808216835268010000000000000000820481166020840152600160801b8204600690810b94840194909452600160b81b82045f0b6060840152600160c01b9091041660808201529085015460a08201529050610e26565b60048601546301000000900460ff16610955576001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff8616602482015261095091600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa158015610927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094b9190612c85565b611ca9565b6109ea565b6001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff861660248201526109ea91600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa1580156109c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e59190612c85565b611d18565b92505050610e26565b6001816003811115610a0757610a07612b0d565b03610aba576001860154600287015460405163f78eea8360e01b815260048101919091525f918291600160601b9091046001600160a01b03169063f78eea8390602401606060405180830381865afa158015610a65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a899190612d1b565b506001600160401b03918216602088015216608086015250506001860154600160201b90045f0b6060840152610d0b565b6002816003811115610ace57610ace612b0d565b03610b81575f5f87600101600c9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190612d5f565b506001600160401b0392831660208a01529091166080880152505050506001860154600160201b90045f0b6060840152610d0b565b6003816003811115610b9557610b95612b0d565b0361076c57604080516080810182525f80825260208201819052918101829052606081019190915260048701546301000000900460ff1615610c5e5760018701546002880154604051639474f45b60e01b81526004810191909152600160601b9091046001600160a01b031690639474f45b90602401608060405180830381865afa158015610c26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a9190612dad565b80516001600160401b031685529050610cea565b600187015460028801546040516396834ad360e01b81526004810191909152600160601b9091046001600160a01b0316906396834ad390602401608060405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd79190612dad565b80516001600160401b0316602086015290505b6060808201516001600160401b031660808601526040909101515f0b908401525b50610e24565b6003816004811115610d2557610d25612b0d565b1480610d4257506004816004811115610d4057610d40612b0d565b145b15610d7f576001850154610d779085908590600160201b90045f0b6004856004811115610d7157610d71612b0d565b14611d87565b915050610e26565b6002816004811115610d9357610d93612b0d565b03610db3576001850154610d779085908590600160201b90045f0b612073565b6001816004811115610dc757610dc7612b0d565b03610de7576001850154610d779085908590600160201b90045f0b6121ba565b60405162461bcd60e51b81526020600482015260126024820152713ab739bab83837b93a32b21036b0b83832b960711b604482015260640161038f565b505b9392505050565b60605f826004811115610e4257610e42612b0d565b03610e675750506040805180820190915260048152634e6f6e6560e01b602082015290565b6003826004811115610e7b57610e7b612b0d565b03610ea3575050604080518082019091526007815266141c9bd91d58dd60ca1b602082015290565b6001826004811115610eb757610eb7612b0d565b03610ee057505060408051808201909152600881526746616c6c6261636b60c01b602082015290565b6002826004811115610ef457610ef4612b0d565b03610de7575050604080518082019091526007815266121bdd1d195cdd60ca1b602082015290565b5f610f2683611a98565b9050610f3181611ac2565b1561128a575f610f3f611b46565b6001600160e01b031985165f908152600291909101602090815260409182902080548351818402810184019094528084529091830182828015610fcb57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f8d5790505b505050505090508280610fdd57508051155b6110355760405162461bcd60e51b815260206004820152602360248201527f63616e6e6f742072656d6f7665206966206d61707065642066726f6d206f746860448201526265727360e81b606482015260840161038f565b5f5b815181101561106b5761106382828151811061105557611055612b4a565b602002602001015185610f1c565b600101611037565b50611074611b46565b6001600160e01b031985165f9081526002919091016020526040812061109991612661565b5f60016110a4611b46565b546110af9190612e36565b600184015490915063ffffffff1681111561114b575f6110cd611b46565b8054839081106110df576110df612b4a565b5f91825260208220015491506110f482611a98565b600180870154908201805463ffffffff191663ffffffff90921691909117905590508161111f611b46565b6001870154815463ffffffff90911690811061113d5761113d612b4a565b5f9182526020909120015550505b611153611b46565b80548061116257611162612e49565b5f8281526020812082015f1990810191909155019055600283015480156111eb576111b661118e611b46565b5f838152600391909101602052604090205460e01b6001600160e01b03199081169088161490565b156111eb575f6111c4611b46565b5f83815260039190910160205260409020805463ffffffff191660e09290921c9190911790555b6111f3611b46565b6001600160e01b031987165f908152600191909101602052604081206005810182905560060155611222611b46565b6001600160e01b031987165f90815260019190910160205260408120906112498282612686565b505f6001820181905560028201819055600382018190556004820180546dffffffffffffffffffffffffffff19169055600582018190556006909101555050505b505050565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101829052906112c283611a98565b90505f6112d082855f6107a9565b90506040518060a0016040528082606001515f0b81526020015f835f01516001600160401b031611611306578260200151611309565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a0015181525092505050919050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081018290529061137b83611a98565b90505f61138a82600401612241565b90505f61139c838684606001516107a9565b60808101519091506001600160401b03166113ca57604051630295d7cd60e31b815260040160405180910390fd5b606082015162ffffff1615806114015750816060015162ffffff1681608001516113f49190612e5d565b6001600160401b03164211155b61141e57604051630cd5fa0760e11b815260040160405180910390fd5b6040518060a0016040528082606001515f0b81526020015f835f01516001600160401b031611611452578260200151611455565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a001518152509350505050919050565b5f808260038111156114a9576114a9612b0d565b036114bc5750636d11bc5160e11b919050565b60018260038111156114d0576114d0612b0d565b036114e3575063f78eea8360e01b919050565b60028260038111156114f7576114f7612b0d565b0361150a5750630e70a24b60e31b919050565b600382600381111561151e5761151e612b0d565b0361153057506242596b60e61b919050565b505f919050565b919050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081018290529061156f84611a98565b90505f61157d8286866107a9565b60808101519091506001600160401b03166115ab57604051630295d7cd60e31b815260040160405180910390fd5b8362ffffff1681608001516115c09190612e5d565b6001600160401b03164211156115e957604051630cd5fa0760e11b815260040160405180910390fd5b6040518060a0016040528082606001515f0b81526020015f835f01516001600160401b03161161161d578260200151611620565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a00151815250925050505b92915050565b5f5f61166d87876118f1565b90505f61167982611a98565b90506001600160a01b0384166116c55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051631a3b01e960e21b8152600481018790526001600160a01b038516906368ec07a490602401602060405180830381865afa158015611708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172c9190612e7c565b61176d5760405162461bcd60e51b8152602060048201526012602482015271756e766572696669656420736f757263657360701b604482015260640161038f565b61177a81865f308a611bf2565b61178261178e565b98975050505050505050565b5f6117976123e4565b9050806117a2611b46565b60050160146101000a81548163ffffffff021916908360e01c021790555090565b5f808460038111156117d7576117d7612b0d565b60ff16101580156117fc5750600384818111156117f6576117f6612b0d565b60ff1611155b6118395760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206f7261636c6560901b604482015260640161038f565b5f61184488886118f1565b90505f61185082611a98565b905061185b81611ac2565b156118785760405162461bcd60e51b815260040161038f90612b21565b5f856001600160a01b03163b116118c55760405162461bcd60e51b8152602060048201526011602482015270696e6578697374656e74206f7261636c6560781b604482015260640161038f565b6118d28188888888611bf2565b6118db8261128f565b506118e461178e565b9998505050505050505050565b5f5f61193184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90508091505f61194083611a98565b604051909150611954908290602001612ec9565b60405160208183030381529060405280519060200120858560405160200161197d929190612c2b565b6040516020818303038152906040528051906020012014611a65576119a0611b46565b6001600160e01b031984165f908152600291909101602052604090205415611a265760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74207265666163746f72206578697369746e672073796d626f6c206044820152726966206d6170706564206279206f746865727360681b606482015260840161038f565b80611a32858783612f9b565b50611a3b611b46565b5460018201805463ffffffff191663ffffffff9092169190911790555f6005820181905560068201555b611a6e81611ac2565b611a9057611a7a611b46565b80546001810182555f9182526020909120018290555b505092915050565b5f611aa1611b46565b6001600160e01b03199092165f908152600192909201602052506040902090565b60028101545f90151580611af757506001820154600160501b900460ff166004811115611af157611af1612b0d565b60ff1615155b8061165b57505060010154600160601b90046001600160a01b0316151590565b5f81604051602001611b299190612909565b604051602081830303815290604052805190602001209050919050565b7fc5354469a5d32189a18f5e79f9508d828fa089087c317bc89792b1c8dba5390090565b611b7384611ac2565b15611b905760405162461bcd60e51b815260040161038f90612b21565b60018401805464ff00000000198116600160201b60ff87160290811783558492916aff0000000000ff00000000191660ff60501b1990911617600160501b836004811115611be057611be0612b0d565b02179055506003909301929092555050565b611bfb85611ac2565b15611c185760405162461bcd60e51b815260040161038f90612b21565b60018501805464ff00000000198116600160201b60ff88160290811783558592916bff000000000000ff00000000191660ff60581b1990911617600160581b836003811115611c6957611c69612b0d565b02179055506001850180546001600160a01b03909316600160601b026bffffffffffffffffffffffff909316929092179091556002909301929092555050565b611cb161262d565b6040518060c001604052805f6001600160401b0316815260200183602001516001600160401b03168152602001836040015160060b8152602001835f01515f0b815260200183606001516001600160401b0316815260200183608001518152509050919050565b611d2061262d565b6040518060c0016040528083602001516001600160401b031681526020015f6001600160401b03168152602001836040015160060b8152602001835f01515f0b815260200183606001516001600160401b0316815260200183608001518152509050919050565b611d8f61262d565b5f611d9986612465565b9050611da36126bd565b5f5b8251811015611ef5575f611df4611dd4858481518110611dc757611dc7612b4a565b6020026020010151611a98565b858481518110611de657611de6612b4a565b60200260200101518a6107a9565b9050815f03611e495780516001600160401b031615611e1c57805160070b6020840152611e27565b602081015160070b83525b6080808201516001600160401b03169086015260a08082015190860152611ec5565b60208301515f1215611e6d57805160070b8360016020020180519091029052611e7e565b6020810151835160079190910b0283525b611ea2816080015186608001516001600160401b031661251b90919063ffffffff16565b15611ec5576080808201516001600160401b03169086015260a080820151908601525b85611ed65780606001515f03611edc565b80606001515b5f0b836002602002018051909101905250600101611da5565b505f85900b81600260200201818151611f0e9190613054565b90525060408101515f12611fff578315611fa25760408101515f90611f3290613073565b611f3d90600a613170565b90505f82600160200201511315611f6d576020820151611f5d908261318f565b6001600160401b03168452611f9c565b81515f1215611f95578151611f82908261318f565b6001600160401b03166020850152611f9c565b5f60208501525b50612060565b60408101515f90611fb290613073565b611fbd90600a613170565b90505f82600160200201511315611fde576020820151611f5d90829061318f565b8151611feb90829061318f565b6001600160401b0316602085015250612060565b60408101515f9061201190600a613170565b90505f82600160200201511315612042576020820151612032908290612bec565b6001600160401b0316845261205e565b815161204f908290612bec565b6001600160401b031660208501525b505b50505f9290920b60608301525092915050565b61207b61262d565b5f61208585612465565b90505f5b815181101561210b575f6120cb6120ab848481518110611dc757611dc7612b4a565b8484815181106120bd576120bd612b4a565b6020026020010151886107a9565b90508115806120f957506120f9846080015182608001516001600160401b031661251b90919063ffffffff16565b15612102578093505b50600101612089565b5081606001515f0b835f0b12156121625782826060015161212c91906131a2565b61213790600a6131c2565b8260200181815161214891906131d0565b6001600160401b03169052505f83900b6060830152610e24565b81606001515f0b835f0b1315610e2457606082015161218190846131a2565b61218c90600a6131c2565b8260200181815161219d91906131f9565b6001600160401b03169052505f83900b6060830152509392505050565b6121c261262d565b5f6121cc85612465565b90505f5b815181101561210b575f6121f26120ab848481518110611dc757611dc7612b4a565b905062ffffff86161580612229575061221062ffffff871642612e36565b6001600160401b031681608001516001600160401b0316115b15612238579250610e26915050565b506001016121d0565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529061227a611b46565b6040805160c081019091528454600492909201925090819062ffffff16156122a857845462ffffff166122b0565b825462ffffff165b62ffffff16815284546020909101906301000000900460ff16806122dc575082546301000000900460ff165b151581528454602090910190600160201b900462ffffff161561230c578454600160201b900462ffffff1661231b565b8254600160201b900462ffffff165b62ffffff90811682528554602090920191600160381b9004161561234c578454600160381b900462ffffff1661235b565b8254600160381b900462ffffff165b62ffffff1681528454602090910190600160501b900461ffff161561238c578454600160501b900461ffff1661239a565b8254600160501b900461ffff165b61ffff90811682528554602090920191600160601b900416156123c9578454600160601b900461ffff166123d7565b8254600160601b900461ffff165b61ffff1690529392505050565b5f5f6123ee611b46565b549050801561246157612426612421612405611b46565b80545f9061241557612415612b4a565b905f5260205f20015490565b61252c565b915060015b8181101561245f57612453612421612441611b46565b80548490811061241557612415612b4a565b9092189160010161242b565b505b5090565b60605f612470611b46565b6001600160e01b031984165f90815260019190910160205260409081902060030154815160088082526101208201909352909250908160200160208202803683370190505091505f5b600881101561251357816001600160e01b031981165f036124da5750612513565b808483815181106124ed576124ed612b4a565b6001600160e01b03199092166020928302919091018201529290921b91506001016124b9565b825250919050565b6001600160401b0390811691161190565b5f5f61253783611a98565b60028101549091506125ff575f6001820154600160501b900460ff16600481111561256457612564612b0d565b036125be5760018101546040516001600160e01b031985166020820152600160601b90910460601b6bffffffffffffffffffffffff1916602482015260380160405160208183030381529060405280519060200120610e26565b60038101546040516001600160e01b03198516602082015260248101919091526044015b604051602081830303815290604052805190602001209392505050565b60028101546040516001600160e01b03198516602082015260248101919091526044016125e2565b50919050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b5080545f825560070160089004905f5260205f209081019061268391906126db565b50565b50805461269290612e97565b5f825580601f106126a1575050565b601f0160209004905f5260205f209081019061268391906126db565b60405180606001604052806003906020820280368337509192915050565b5b80821115612461575f81556001016126dc565b5f5f83601f8401126126ff575f5ffd5b5081356001600160401b03811115612715575f5ffd5b60208301915083602082850101111561272c575f5ffd5b9250929050565b805f0b8114612683575f5ffd5b803560058110611537575f5ffd5b5f5f5f5f5f5f60808789031215612763575f5ffd5b86356001600160401b03811115612778575f5ffd5b61278489828a016126ef565b909750955050602087013561279881612733565b93506127a660408801612740565b925060608701356001600160401b038111156127c0575f5ffd5b8701601f810189136127d0575f5ffd5b80356001600160401b038111156127e5575f5ffd5b8960208260051b84010111156127f9575f5ffd5b60208201935080925050509295509295509295565b6001600160a01b0381168114612683575f5ffd5b5f5f5f5f5f5f60808789031215612837575f5ffd5b86356001600160401b0381111561284c575f5ffd5b61285889828a016126ef565b90975095505060208701356001600160401b03811115612876575f5ffd5b61288289828a016126ef565b909550935050604087013561289681612733565b915060608701356128a68161280e565b809150509295509295509295565b803560048110611537575f5ffd5b5f602082840312156128d2575f5ffd5b610e26826128b4565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e2660208301846128db565b80356001600160e01b031981168114611537575f5ffd5b803562ffffff81168114611537575f5ffd5b5f5f5f60608486031215612956575f5ffd5b833592506129666020850161291b565b915061297460408501612932565b90509250925092565b5f6020828403121561298d575f5ffd5b610e2682612740565b8015158114612683575f5ffd5b5f5f604083850312156129b4575f5ffd5b6129bd8361291b565b915060208301356129cd81612996565b809150509250929050565b5f602082840312156129e8575f5ffd5b610e268261291b565b5f5f60408385031215612a02575f5ffd5b612a0b8361291b565b9150612a1960208401612932565b90509250929050565b5f5f5f5f5f60808688031215612a36575f5ffd5b85356001600160401b03811115612a4b575f5ffd5b612a57888289016126ef565b909650945050602086013592506040860135612a7281612733565b91506060860135612a828161280e565b809150509295509295909350565b5f5f5f5f5f5f60a08789031215612aa5575f5ffd5b86356001600160401b03811115612aba575f5ffd5b612ac689828a016126ef565b9097509550506020870135612ada81612733565b9350612ae8604088016128b4565b92506060870135612af88161280e565b95989497509295919493608090920135925050565b634e487b7160e01b5f52602160045260245ffd5b6020808252600f908201526e185b1c9958591e481cd95d1d1b1959608a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112612b73575f5ffd5b8301803591506001600160401b03821115612b8c575f5ffd5b60200191503681900382131561272c575f5ffd5b7f756e737570706f7274656420646570656e64656e63793a2000000000000000008152818360188301375f9101601801908152919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761165b5761165b612bd8565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f612c3e602083018486612c03565b949350505050565b5f60208284031215612c56575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381168114612683575f5ffd5b5f60a0828403128015612c96575f5ffd5b5060405160a081016001600160401b0381118282101715612cb957612cb9612c5d565b6040528251612cc781612733565b81526020830151612cd781612c71565b60208201526040830151600681900b8114612cf0575f5ffd5b60408201526060830151612d0381612c71565b60608201526080928301519281019290925250919050565b5f5f5f60608486031215612d2d575f5ffd5b5050815160208301516040909301519094929350919050565b805169ffffffffffffffffffff81168114611537575f5ffd5b5f5f5f5f5f60a08688031215612d73575f5ffd5b612d7c86612d46565b60208701516040880151606089015192975090955093509150612da160808701612d46565b90509295509295909350565b5f6080828403128015612dbe575f5ffd5b50604051608081016001600160401b0381118282101715612de157612de1612c5d565b6040528251600781900b8114612df5575f5ffd5b81526020830151612e0581612c71565b60208201526040830151600381900b8114612e1e575f5ffd5b60408201526060928301519281019290925250919050565b8181038181111561165b5761165b612bd8565b634e487b7160e01b5f52603160045260245ffd5b6001600160401b03818116838216019081111561165b5761165b612bd8565b5f60208284031215612e8c575f5ffd5b8151610e2681612996565b600181811c90821680612eab57607f821691505b60208210810361262757634e487b7160e01b5f52602260045260245ffd5b602081525f5f8354612eda81612e97565b806020860152600182165f8114612ef85760018114612f1457612f45565b60ff1983166040870152604082151560051b8701019350612f45565b865f5260205f205f5b83811015612f3c57815488820160400152600190910190602001612f1d565b87016040019450505b509195945050505050565b601f82111561128a57805f5260205f20601f840160051c81016020851015612f755750805b601f840160051c820191505b81811015612f94575f8155600101612f81565b5050505050565b6001600160401b03831115612fb257612fb2612c5d565b612fc683612fc08354612e97565b83612f50565b5f601f841160018114612ff7575f8515612fe05750838201355b5f19600387901b1c1916600186901b178355612f94565b5f83815260208120601f198716915b828110156130265786850135825560209485019460019092019101613006565b5086821015613042575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8082018281125f831280158216821582161715611a9057611a90612bd8565b5f600160ff1b820161308757613087612bd8565b505f0390565b6001815b60018411156130c8578085048111156130ac576130ac612bd8565b60018416156130ba57908102905b60019390931c928002613091565b935093915050565b5f826130de5750600161165b565b816130ea57505f61165b565b8160018114613100576002811461310a57613126565b600191505061165b565b60ff84111561311b5761311b612bd8565b50506001821b61165b565b5060208310610133831016604e8410600b8410161715613149575081810a61165b565b6131555f19848461308d565b805f190482111561316857613168612bd8565b029392505050565b5f610e2683836130d0565b634e487b7160e01b5f52601260045260245ffd5b5f8261319d5761319d61317b565b500490565b5f82810b9082900b03607f198112607f8213171561165b5761165b612bd8565b5f610e2660ff8416836130d0565b6001600160401b0381811683821602908116908181146131f2576131f2612bd8565b5092915050565b5f6001600160401b038316806132115761321161317b565b806001600160401b038416049150509291505056fea2646970667358221220313ed896bd4777215a9258b0fa9a0d5553f6dad6d9d6f4bc18dc9337d4a40c0064736f6c634300081e0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100d6575f3560e01c80639744540911610093578063d9ea438f1161006e578063d9ea438f146102b9578063ef0bf0a0146102cc578063fce897db146102eb578063ff0e1724146102ff575f5ffd5b80639744540914610228578063c66f4c0a14610293578063cab8a78e146102a6575f5ffd5b806301d63b7f146100da5780630873d81d1461011757806310b999a3146101565780631752c19f146101765780635e34a7bb146101f45780637d18e02014610207575b5f5ffd5b8180156100e5575f5ffd5b506100f96100f436600461274e565b61031e565b6040516001600160e01b031990911681526020015b60405180910390f35b818015610122575f5ffd5b50610136610131366004612822565b610570565b604080516001600160e01b0319909316835260208301919091520161010e565b6101696101643660046128c2565b610668565b60405161010e9190612909565b610189610184366004612944565b6107a9565b60405161010e91905f60c0820190506001600160401b0383511682526001600160401b036020840151166020830152604083015160060b604083015260608301515f0b60608301526001600160401b03608084015116608083015260a083015160a083015292915050565b61016961020236600461297d565b610e2d565b818015610212575f5ffd5b506102266102213660046129a3565b610f1c565b005b61023b6102363660046129d8565b61128f565b60405161010e91905f60a08201905082515f0b82526001600160401b036020840151166020830152604083015160060b60408301526001600160401b0360608401511660608301526080830151608083015292915050565b61023b6102a13660046129d8565b611348565b6100f96102b43660046128c2565b611495565b61023b6102c73660046129f1565b61153c565b8180156102d7575f5ffd5b506100f96102e6366004612a22565b611661565b8180156102f6575f5ffd5b506100f961178e565b81801561030a575f5ffd5b506100f9610319366004612a90565b6117c3565b5f8084600481111561033257610332612b0d565b60ff1611801561035657506004848181111561035057610350612b0d565b60ff1611155b6103985760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21036b0b83832b960911b60448201526064015b60405180910390fd5b5f6103a388886118f1565b90505f6103af82611a98565b90506103ba81611ac2565b156103d75760405162461bcd60e51b815260040161038f90612b21565b5f5f5b85811015610543575f6104438888848181106103f8576103f8612b4a565b905060200281019061040a9190612b5e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90505f61044f82611a98565b905061045a81611ac2565b89898581811061046c5761046c612b4a565b905060200281019061047e9190612b5e565b60405160200161048f929190612ba0565b604051602081830303815290604052906104bc5760405162461bcd60e51b815260040161038f9190612909565b506104c8836020612bec565b826001600160e01b031916901c841793506104e1611b46565b6001600160e01b0319929092165f9081526002909201602090815260408320805460018082018355918552919093206008820401805463ffffffff60079093166004026101000a928302191660e089901c9290920291909117905550016103da565b5061055082898984611b6a565b6105598361128f565b5061056261178e565b9a9950505050505050505050565b5f5f5f61057d89896118f1565b90505f61058982611a98565b90506001600160a01b0385166105d55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051630502487d60e51b81526001600160a01b0386169063a0490fa090610603908b908b90600401612c2b565b602060405180830381865afa15801561061e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106429190612c46565b925061065181875f3087611bf2565b61065961178e565b93505050965096945050505050565b60605f82600381111561067d5761067d612b0d565b036106a857505060408051808201909152600a8152695769742f4f7261636c6560b01b602082015290565b60018260038111156106bc576106bc612b0d565b036106e857505060408051808201909152600b81526a20a22797a2a92199199b1960a91b602082015290565b60028260038111156106fc576106fc612b0d565b03610732575050604080518082019091526015815274436861696e6c696e6b41676772656761746f72563360581b602082015290565b600382600381111561074657610746612b0d565b0361076c575050604080518082019091526005815264092a0f2e8d60db1b602082015290565b60405162461bcd60e51b8152602060048201526012602482015271756e737570706f72746564206f7261636c6560701b604482015260640161038f565b6107b161262d565b6001840154600160501b900460ff165f8160048111156107d3576107d3612b0d565b03610d11576001850154600160581b900460ff165f8160038111156107fa576107fa612b0d565b036109f3576001860154600160601b90046001600160a01b0316158061083357506001860154600160601b90046001600160a01b031630145b156108a85750506040805160c08101825260058601546001600160401b03808216835268010000000000000000820481166020840152600160801b8204600690810b94840194909452600160b81b82045f0b6060840152600160c01b9091041660808201529085015460a08201529050610e26565b60048601546301000000900460ff16610955576001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff8616602482015261095091600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa158015610927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094b9190612c85565b611ca9565b6109ea565b6001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff861660248201526109ea91600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa1580156109c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e59190612c85565b611d18565b92505050610e26565b6001816003811115610a0757610a07612b0d565b03610aba576001860154600287015460405163f78eea8360e01b815260048101919091525f918291600160601b9091046001600160a01b03169063f78eea8390602401606060405180830381865afa158015610a65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a899190612d1b565b506001600160401b03918216602088015216608086015250506001860154600160201b90045f0b6060840152610d0b565b6002816003811115610ace57610ace612b0d565b03610b81575f5f87600101600c9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190612d5f565b506001600160401b0392831660208a01529091166080880152505050506001860154600160201b90045f0b6060840152610d0b565b6003816003811115610b9557610b95612b0d565b0361076c57604080516080810182525f80825260208201819052918101829052606081019190915260048701546301000000900460ff1615610c5e5760018701546002880154604051639474f45b60e01b81526004810191909152600160601b9091046001600160a01b031690639474f45b90602401608060405180830381865afa158015610c26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a9190612dad565b80516001600160401b031685529050610cea565b600187015460028801546040516396834ad360e01b81526004810191909152600160601b9091046001600160a01b0316906396834ad390602401608060405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd79190612dad565b80516001600160401b0316602086015290505b6060808201516001600160401b031660808601526040909101515f0b908401525b50610e24565b6003816004811115610d2557610d25612b0d565b1480610d4257506004816004811115610d4057610d40612b0d565b145b15610d7f576001850154610d779085908590600160201b90045f0b6004856004811115610d7157610d71612b0d565b14611d87565b915050610e26565b6002816004811115610d9357610d93612b0d565b03610db3576001850154610d779085908590600160201b90045f0b612073565b6001816004811115610dc757610dc7612b0d565b03610de7576001850154610d779085908590600160201b90045f0b6121ba565b60405162461bcd60e51b81526020600482015260126024820152713ab739bab83837b93a32b21036b0b83832b960711b604482015260640161038f565b505b9392505050565b60605f826004811115610e4257610e42612b0d565b03610e675750506040805180820190915260048152634e6f6e6560e01b602082015290565b6003826004811115610e7b57610e7b612b0d565b03610ea3575050604080518082019091526007815266141c9bd91d58dd60ca1b602082015290565b6001826004811115610eb757610eb7612b0d565b03610ee057505060408051808201909152600881526746616c6c6261636b60c01b602082015290565b6002826004811115610ef457610ef4612b0d565b03610de7575050604080518082019091526007815266121bdd1d195cdd60ca1b602082015290565b5f610f2683611a98565b9050610f3181611ac2565b1561128a575f610f3f611b46565b6001600160e01b031985165f908152600291909101602090815260409182902080548351818402810184019094528084529091830182828015610fcb57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f8d5790505b505050505090508280610fdd57508051155b6110355760405162461bcd60e51b815260206004820152602360248201527f63616e6e6f742072656d6f7665206966206d61707065642066726f6d206f746860448201526265727360e81b606482015260840161038f565b5f5b815181101561106b5761106382828151811061105557611055612b4a565b602002602001015185610f1c565b600101611037565b50611074611b46565b6001600160e01b031985165f9081526002919091016020526040812061109991612661565b5f60016110a4611b46565b546110af9190612e36565b600184015490915063ffffffff1681111561114b575f6110cd611b46565b8054839081106110df576110df612b4a565b5f91825260208220015491506110f482611a98565b600180870154908201805463ffffffff191663ffffffff90921691909117905590508161111f611b46565b6001870154815463ffffffff90911690811061113d5761113d612b4a565b5f9182526020909120015550505b611153611b46565b80548061116257611162612e49565b5f8281526020812082015f1990810191909155019055600283015480156111eb576111b661118e611b46565b5f838152600391909101602052604090205460e01b6001600160e01b03199081169088161490565b156111eb575f6111c4611b46565b5f83815260039190910160205260409020805463ffffffff191660e09290921c9190911790555b6111f3611b46565b6001600160e01b031987165f908152600191909101602052604081206005810182905560060155611222611b46565b6001600160e01b031987165f90815260019190910160205260408120906112498282612686565b505f6001820181905560028201819055600382018190556004820180546dffffffffffffffffffffffffffff19169055600582018190556006909101555050505b505050565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101829052906112c283611a98565b90505f6112d082855f6107a9565b90506040518060a0016040528082606001515f0b81526020015f835f01516001600160401b031611611306578260200151611309565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a0015181525092505050919050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081018290529061137b83611a98565b90505f61138a82600401612241565b90505f61139c838684606001516107a9565b60808101519091506001600160401b03166113ca57604051630295d7cd60e31b815260040160405180910390fd5b606082015162ffffff1615806114015750816060015162ffffff1681608001516113f49190612e5d565b6001600160401b03164211155b61141e57604051630cd5fa0760e11b815260040160405180910390fd5b6040518060a0016040528082606001515f0b81526020015f835f01516001600160401b031611611452578260200151611455565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a001518152509350505050919050565b5f808260038111156114a9576114a9612b0d565b036114bc5750636d11bc5160e11b919050565b60018260038111156114d0576114d0612b0d565b036114e3575063f78eea8360e01b919050565b60028260038111156114f7576114f7612b0d565b0361150a5750630e70a24b60e31b919050565b600382600381111561151e5761151e612b0d565b0361153057506242596b60e61b919050565b505f919050565b919050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081018290529061156f84611a98565b90505f61157d8286866107a9565b60808101519091506001600160401b03166115ab57604051630295d7cd60e31b815260040160405180910390fd5b8362ffffff1681608001516115c09190612e5d565b6001600160401b03164211156115e957604051630cd5fa0760e11b815260040160405180910390fd5b6040518060a0016040528082606001515f0b81526020015f835f01516001600160401b03161161161d578260200151611620565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a00151815250925050505b92915050565b5f5f61166d87876118f1565b90505f61167982611a98565b90506001600160a01b0384166116c55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051631a3b01e960e21b8152600481018790526001600160a01b038516906368ec07a490602401602060405180830381865afa158015611708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172c9190612e7c565b61176d5760405162461bcd60e51b8152602060048201526012602482015271756e766572696669656420736f757263657360701b604482015260640161038f565b61177a81865f308a611bf2565b61178261178e565b98975050505050505050565b5f6117976123e4565b9050806117a2611b46565b60050160146101000a81548163ffffffff021916908360e01c021790555090565b5f808460038111156117d7576117d7612b0d565b60ff16101580156117fc5750600384818111156117f6576117f6612b0d565b60ff1611155b6118395760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206f7261636c6560901b604482015260640161038f565b5f61184488886118f1565b90505f61185082611a98565b905061185b81611ac2565b156118785760405162461bcd60e51b815260040161038f90612b21565b5f856001600160a01b03163b116118c55760405162461bcd60e51b8152602060048201526011602482015270696e6578697374656e74206f7261636c6560781b604482015260640161038f565b6118d28188888888611bf2565b6118db8261128f565b506118e461178e565b9998505050505050505050565b5f5f61193184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90508091505f61194083611a98565b604051909150611954908290602001612ec9565b60405160208183030381529060405280519060200120858560405160200161197d929190612c2b565b6040516020818303038152906040528051906020012014611a65576119a0611b46565b6001600160e01b031984165f908152600291909101602052604090205415611a265760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74207265666163746f72206578697369746e672073796d626f6c206044820152726966206d6170706564206279206f746865727360681b606482015260840161038f565b80611a32858783612f9b565b50611a3b611b46565b5460018201805463ffffffff191663ffffffff9092169190911790555f6005820181905560068201555b611a6e81611ac2565b611a9057611a7a611b46565b80546001810182555f9182526020909120018290555b505092915050565b5f611aa1611b46565b6001600160e01b03199092165f908152600192909201602052506040902090565b60028101545f90151580611af757506001820154600160501b900460ff166004811115611af157611af1612b0d565b60ff1615155b8061165b57505060010154600160601b90046001600160a01b0316151590565b5f81604051602001611b299190612909565b604051602081830303815290604052805190602001209050919050565b7fc5354469a5d32189a18f5e79f9508d828fa089087c317bc89792b1c8dba5390090565b611b7384611ac2565b15611b905760405162461bcd60e51b815260040161038f90612b21565b60018401805464ff00000000198116600160201b60ff87160290811783558492916aff0000000000ff00000000191660ff60501b1990911617600160501b836004811115611be057611be0612b0d565b02179055506003909301929092555050565b611bfb85611ac2565b15611c185760405162461bcd60e51b815260040161038f90612b21565b60018501805464ff00000000198116600160201b60ff88160290811783558592916bff000000000000ff00000000191660ff60581b1990911617600160581b836003811115611c6957611c69612b0d565b02179055506001850180546001600160a01b03909316600160601b026bffffffffffffffffffffffff909316929092179091556002909301929092555050565b611cb161262d565b6040518060c001604052805f6001600160401b0316815260200183602001516001600160401b03168152602001836040015160060b8152602001835f01515f0b815260200183606001516001600160401b0316815260200183608001518152509050919050565b611d2061262d565b6040518060c0016040528083602001516001600160401b031681526020015f6001600160401b03168152602001836040015160060b8152602001835f01515f0b815260200183606001516001600160401b0316815260200183608001518152509050919050565b611d8f61262d565b5f611d9986612465565b9050611da36126bd565b5f5b8251811015611ef5575f611df4611dd4858481518110611dc757611dc7612b4a565b6020026020010151611a98565b858481518110611de657611de6612b4a565b60200260200101518a6107a9565b9050815f03611e495780516001600160401b031615611e1c57805160070b6020840152611e27565b602081015160070b83525b6080808201516001600160401b03169086015260a08082015190860152611ec5565b60208301515f1215611e6d57805160070b8360016020020180519091029052611e7e565b6020810151835160079190910b0283525b611ea2816080015186608001516001600160401b031661251b90919063ffffffff16565b15611ec5576080808201516001600160401b03169086015260a080820151908601525b85611ed65780606001515f03611edc565b80606001515b5f0b836002602002018051909101905250600101611da5565b505f85900b81600260200201818151611f0e9190613054565b90525060408101515f12611fff578315611fa25760408101515f90611f3290613073565b611f3d90600a613170565b90505f82600160200201511315611f6d576020820151611f5d908261318f565b6001600160401b03168452611f9c565b81515f1215611f95578151611f82908261318f565b6001600160401b03166020850152611f9c565b5f60208501525b50612060565b60408101515f90611fb290613073565b611fbd90600a613170565b90505f82600160200201511315611fde576020820151611f5d90829061318f565b8151611feb90829061318f565b6001600160401b0316602085015250612060565b60408101515f9061201190600a613170565b90505f82600160200201511315612042576020820151612032908290612bec565b6001600160401b0316845261205e565b815161204f908290612bec565b6001600160401b031660208501525b505b50505f9290920b60608301525092915050565b61207b61262d565b5f61208585612465565b90505f5b815181101561210b575f6120cb6120ab848481518110611dc757611dc7612b4a565b8484815181106120bd576120bd612b4a565b6020026020010151886107a9565b90508115806120f957506120f9846080015182608001516001600160401b031661251b90919063ffffffff16565b15612102578093505b50600101612089565b5081606001515f0b835f0b12156121625782826060015161212c91906131a2565b61213790600a6131c2565b8260200181815161214891906131d0565b6001600160401b03169052505f83900b6060830152610e24565b81606001515f0b835f0b1315610e2457606082015161218190846131a2565b61218c90600a6131c2565b8260200181815161219d91906131f9565b6001600160401b03169052505f83900b6060830152509392505050565b6121c261262d565b5f6121cc85612465565b90505f5b815181101561210b575f6121f26120ab848481518110611dc757611dc7612b4a565b905062ffffff86161580612229575061221062ffffff871642612e36565b6001600160401b031681608001516001600160401b0316115b15612238579250610e26915050565b506001016121d0565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529061227a611b46565b6040805160c081019091528454600492909201925090819062ffffff16156122a857845462ffffff166122b0565b825462ffffff165b62ffffff16815284546020909101906301000000900460ff16806122dc575082546301000000900460ff165b151581528454602090910190600160201b900462ffffff161561230c578454600160201b900462ffffff1661231b565b8254600160201b900462ffffff165b62ffffff90811682528554602090920191600160381b9004161561234c578454600160381b900462ffffff1661235b565b8254600160381b900462ffffff165b62ffffff1681528454602090910190600160501b900461ffff161561238c578454600160501b900461ffff1661239a565b8254600160501b900461ffff165b61ffff90811682528554602090920191600160601b900416156123c9578454600160601b900461ffff166123d7565b8254600160601b900461ffff165b61ffff1690529392505050565b5f5f6123ee611b46565b549050801561246157612426612421612405611b46565b80545f9061241557612415612b4a565b905f5260205f20015490565b61252c565b915060015b8181101561245f57612453612421612441611b46565b80548490811061241557612415612b4a565b9092189160010161242b565b505b5090565b60605f612470611b46565b6001600160e01b031984165f90815260019190910160205260409081902060030154815160088082526101208201909352909250908160200160208202803683370190505091505f5b600881101561251357816001600160e01b031981165f036124da5750612513565b808483815181106124ed576124ed612b4a565b6001600160e01b03199092166020928302919091018201529290921b91506001016124b9565b825250919050565b6001600160401b0390811691161190565b5f5f61253783611a98565b60028101549091506125ff575f6001820154600160501b900460ff16600481111561256457612564612b0d565b036125be5760018101546040516001600160e01b031985166020820152600160601b90910460601b6bffffffffffffffffffffffff1916602482015260380160405160208183030381529060405280519060200120610e26565b60038101546040516001600160e01b03198516602082015260248101919091526044015b604051602081830303815290604052805190602001209392505050565b60028101546040516001600160e01b03198516602082015260248101919091526044016125e2565b50919050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b5080545f825560070160089004905f5260205f209081019061268391906126db565b50565b50805461269290612e97565b5f825580601f106126a1575050565b601f0160209004905f5260205f209081019061268391906126db565b60405180606001604052806003906020820280368337509192915050565b5b80821115612461575f81556001016126dc565b5f5f83601f8401126126ff575f5ffd5b5081356001600160401b03811115612715575f5ffd5b60208301915083602082850101111561272c575f5ffd5b9250929050565b805f0b8114612683575f5ffd5b803560058110611537575f5ffd5b5f5f5f5f5f5f60808789031215612763575f5ffd5b86356001600160401b03811115612778575f5ffd5b61278489828a016126ef565b909750955050602087013561279881612733565b93506127a660408801612740565b925060608701356001600160401b038111156127c0575f5ffd5b8701601f810189136127d0575f5ffd5b80356001600160401b038111156127e5575f5ffd5b8960208260051b84010111156127f9575f5ffd5b60208201935080925050509295509295509295565b6001600160a01b0381168114612683575f5ffd5b5f5f5f5f5f5f60808789031215612837575f5ffd5b86356001600160401b0381111561284c575f5ffd5b61285889828a016126ef565b90975095505060208701356001600160401b03811115612876575f5ffd5b61288289828a016126ef565b909550935050604087013561289681612733565b915060608701356128a68161280e565b809150509295509295509295565b803560048110611537575f5ffd5b5f602082840312156128d2575f5ffd5b610e26826128b4565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e2660208301846128db565b80356001600160e01b031981168114611537575f5ffd5b803562ffffff81168114611537575f5ffd5b5f5f5f60608486031215612956575f5ffd5b833592506129666020850161291b565b915061297460408501612932565b90509250925092565b5f6020828403121561298d575f5ffd5b610e2682612740565b8015158114612683575f5ffd5b5f5f604083850312156129b4575f5ffd5b6129bd8361291b565b915060208301356129cd81612996565b809150509250929050565b5f602082840312156129e8575f5ffd5b610e268261291b565b5f5f60408385031215612a02575f5ffd5b612a0b8361291b565b9150612a1960208401612932565b90509250929050565b5f5f5f5f5f60808688031215612a36575f5ffd5b85356001600160401b03811115612a4b575f5ffd5b612a57888289016126ef565b909650945050602086013592506040860135612a7281612733565b91506060860135612a828161280e565b809150509295509295909350565b5f5f5f5f5f5f60a08789031215612aa5575f5ffd5b86356001600160401b03811115612aba575f5ffd5b612ac689828a016126ef565b9097509550506020870135612ada81612733565b9350612ae8604088016128b4565b92506060870135612af88161280e565b95989497509295919493608090920135925050565b634e487b7160e01b5f52602160045260245ffd5b6020808252600f908201526e185b1c9958591e481cd95d1d1b1959608a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112612b73575f5ffd5b8301803591506001600160401b03821115612b8c575f5ffd5b60200191503681900382131561272c575f5ffd5b7f756e737570706f7274656420646570656e64656e63793a2000000000000000008152818360188301375f9101601801908152919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761165b5761165b612bd8565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f612c3e602083018486612c03565b949350505050565b5f60208284031215612c56575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381168114612683575f5ffd5b5f60a0828403128015612c96575f5ffd5b5060405160a081016001600160401b0381118282101715612cb957612cb9612c5d565b6040528251612cc781612733565b81526020830151612cd781612c71565b60208201526040830151600681900b8114612cf0575f5ffd5b60408201526060830151612d0381612c71565b60608201526080928301519281019290925250919050565b5f5f5f60608486031215612d2d575f5ffd5b5050815160208301516040909301519094929350919050565b805169ffffffffffffffffffff81168114611537575f5ffd5b5f5f5f5f5f60a08688031215612d73575f5ffd5b612d7c86612d46565b60208701516040880151606089015192975090955093509150612da160808701612d46565b90509295509295909350565b5f6080828403128015612dbe575f5ffd5b50604051608081016001600160401b0381118282101715612de157612de1612c5d565b6040528251600781900b8114612df5575f5ffd5b81526020830151612e0581612c71565b60208201526040830151600381900b8114612e1e575f5ffd5b60408201526060928301519281019290925250919050565b8181038181111561165b5761165b612bd8565b634e487b7160e01b5f52603160045260245ffd5b6001600160401b03818116838216019081111561165b5761165b612bd8565b5f60208284031215612e8c575f5ffd5b8151610e2681612996565b600181811c90821680612eab57607f821691505b60208210810361262757634e487b7160e01b5f52602260045260245ffd5b602081525f5f8354612eda81612e97565b806020860152600182165f8114612ef85760018114612f1457612f45565b60ff1983166040870152604082151560051b8701019350612f45565b865f5260205f205f5b83811015612f3c57815488820160400152600190910190602001612f1d565b87016040019450505b509195945050505050565b601f82111561128a57805f5260205f20601f840160051c81016020851015612f755750805b601f840160051c820191505b81811015612f94575f8155600101612f81565b5050505050565b6001600160401b03831115612fb257612fb2612c5d565b612fc683612fc08354612e97565b83612f50565b5f601f841160018114612ff7575f8515612fe05750838201355b5f19600387901b1c1916600186901b178355612f94565b5f83815260208120601f198716915b828110156130265786850135825560209485019460019092019101613006565b5086821015613042575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8082018281125f831280158216821582161715611a9057611a90612bd8565b5f600160ff1b820161308757613087612bd8565b505f0390565b6001815b60018411156130c8578085048111156130ac576130ac612bd8565b60018416156130ba57908102905b60019390931c928002613091565b935093915050565b5f826130de5750600161165b565b816130ea57505f61165b565b8160018114613100576002811461310a57613126565b600191505061165b565b60ff84111561311b5761311b612bd8565b50506001821b61165b565b5060208310610133831016604e8410600b8410161715613149575081810a61165b565b6131555f19848461308d565b805f190482111561316857613168612bd8565b029392505050565b5f610e2683836130d0565b634e487b7160e01b5f52601260045260245ffd5b5f8261319d5761319d61317b565b500490565b5f82810b9082900b03607f198112607f8213171561165b5761165b612bd8565b5f610e2660ff8416836130d0565b6001600160401b0381811683821602908116908181146131f2576131f2612bd8565b5092915050565b5f6001600160401b038316806132115761321161317b565b806001600160401b038416049150509291505056fea2646970667358221220313ed896bd4777215a9258b0fa9a0d5553f6dad6d9d6f4bc18dc9337d4a40c0064736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:27923:136",
        "nodeType": "YulBlock",
        "src": "0:27923:136",
        "statements": [
          {
            "nativeSrc": "6:3:136",
            "nodeType": "YulBlock",
            "src": "6:3:136",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "87:275:136",
              "nodeType": "YulBlock",
              "src": "87:275:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "136:16:136",
                    "nodeType": "YulBlock",
                    "src": "136:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "145:1:136",
                              "nodeType": "YulLiteral",
                              "src": "145:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "148:1:136",
                              "nodeType": "YulLiteral",
                              "src": "148:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "138:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "138:6:136"
                          },
                          "nativeSrc": "138:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "138:12:136"
                        },
                        "nativeSrc": "138:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "138:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "115:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "115:6:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "123:4:136",
                                "nodeType": "YulLiteral",
                                "src": "123:4:136",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "111:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "111:3:136"
                            },
                            "nativeSrc": "111:17:136",
                            "nodeType": "YulFunctionCall",
                            "src": "111:17:136"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "130:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "130:3:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "107:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "107:3:136"
                        },
                        "nativeSrc": "107:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "107:27:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "100:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "100:6:136"
                    },
                    "nativeSrc": "100:35:136",
                    "nodeType": "YulFunctionCall",
                    "src": "100:35:136"
                  },
                  "nativeSrc": "97:55:136",
                  "nodeType": "YulIf",
                  "src": "97:55:136"
                },
                {
                  "nativeSrc": "161:30:136",
                  "nodeType": "YulAssignment",
                  "src": "161:30:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "184:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "184:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "171:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "171:12:136"
                    },
                    "nativeSrc": "171:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "171:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "161:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "161:6:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "234:16:136",
                    "nodeType": "YulBlock",
                    "src": "234:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "243:1:136",
                              "nodeType": "YulLiteral",
                              "src": "243:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "246:1:136",
                              "nodeType": "YulLiteral",
                              "src": "246:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "236:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "236:6:136"
                          },
                          "nativeSrc": "236:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "236:12:136"
                        },
                        "nativeSrc": "236:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "236:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "206:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "206:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "214:18:136",
                        "nodeType": "YulLiteral",
                        "src": "214:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "203:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "203:2:136"
                    },
                    "nativeSrc": "203:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "203:30:136"
                  },
                  "nativeSrc": "200:50:136",
                  "nodeType": "YulIf",
                  "src": "200:50:136"
                },
                {
                  "nativeSrc": "259:29:136",
                  "nodeType": "YulAssignment",
                  "src": "259:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "275:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "275:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "283:4:136",
                        "nodeType": "YulLiteral",
                        "src": "283:4:136",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "271:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "271:3:136"
                    },
                    "nativeSrc": "271:17:136",
                    "nodeType": "YulFunctionCall",
                    "src": "271:17:136"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nativeSrc": "259:8:136",
                      "nodeType": "YulIdentifier",
                      "src": "259:8:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "340:16:136",
                    "nodeType": "YulBlock",
                    "src": "340:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "349:1:136",
                              "nodeType": "YulLiteral",
                              "src": "349:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "352:1:136",
                              "nodeType": "YulLiteral",
                              "src": "352:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "342:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "342:6:136"
                          },
                          "nativeSrc": "342:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "342:12:136"
                        },
                        "nativeSrc": "342:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "342:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "311:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "311:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "319:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "319:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "307:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "307:3:136"
                            },
                            "nativeSrc": "307:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "307:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "328:4:136",
                            "nodeType": "YulLiteral",
                            "src": "328:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "303:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "303:3:136"
                        },
                        "nativeSrc": "303:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "303:30:136"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "335:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "335:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "300:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "300:2:136"
                    },
                    "nativeSrc": "300:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "300:39:136"
                  },
                  "nativeSrc": "297:59:136",
                  "nodeType": "YulIf",
                  "src": "297:59:136"
                }
              ]
            },
            "name": "abi_decode_string_calldata",
            "nativeSrc": "14:348:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "50:6:136",
                "nodeType": "YulTypedName",
                "src": "50:6:136",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "58:3:136",
                "nodeType": "YulTypedName",
                "src": "58:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nativeSrc": "66:8:136",
                "nodeType": "YulTypedName",
                "src": "66:8:136",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "76:6:136",
                "nodeType": "YulTypedName",
                "src": "76:6:136",
                "type": ""
              }
            ],
            "src": "14:348:136"
          },
          {
            "body": {
              "nativeSrc": "409:75:136",
              "nodeType": "YulBlock",
              "src": "409:75:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "462:16:136",
                    "nodeType": "YulBlock",
                    "src": "462:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "471:1:136",
                              "nodeType": "YulLiteral",
                              "src": "471:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "474:1:136",
                              "nodeType": "YulLiteral",
                              "src": "474:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "464:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "464:6:136"
                          },
                          "nativeSrc": "464:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "464:12:136"
                        },
                        "nativeSrc": "464:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "464:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "432:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "432:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "450:1:136",
                                "nodeType": "YulLiteral",
                                "src": "450:1:136",
                                "type": "",
                                "value": "0"
                              },
                              {
                                "name": "value",
                                "nativeSrc": "453:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "453:5:136"
                              }
                            ],
                            "functionName": {
                              "name": "signextend",
                              "nativeSrc": "439:10:136",
                              "nodeType": "YulIdentifier",
                              "src": "439:10:136"
                            },
                            "nativeSrc": "439:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "439:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "429:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "429:2:136"
                        },
                        "nativeSrc": "429:31:136",
                        "nodeType": "YulFunctionCall",
                        "src": "429:31:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "422:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "422:6:136"
                    },
                    "nativeSrc": "422:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "422:39:136"
                  },
                  "nativeSrc": "419:59:136",
                  "nodeType": "YulIf",
                  "src": "419:59:136"
                }
              ]
            },
            "name": "validator_revert_int8",
            "nativeSrc": "367:117:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "398:5:136",
                "nodeType": "YulTypedName",
                "src": "398:5:136",
                "type": ""
              }
            ],
            "src": "367:117:136"
          },
          {
            "body": {
              "nativeSrc": "543:94:136",
              "nodeType": "YulBlock",
              "src": "543:94:136",
              "statements": [
                {
                  "nativeSrc": "553:29:136",
                  "nodeType": "YulAssignment",
                  "src": "553:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "575:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "575:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "562:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "562:12:136"
                    },
                    "nativeSrc": "562:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "562:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "553:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "553:5:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "615:16:136",
                    "nodeType": "YulBlock",
                    "src": "615:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "624:1:136",
                              "nodeType": "YulLiteral",
                              "src": "624:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "627:1:136",
                              "nodeType": "YulLiteral",
                              "src": "627:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "617:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "617:6:136"
                          },
                          "nativeSrc": "617:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "617:12:136"
                        },
                        "nativeSrc": "617:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "617:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "604:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "604:5:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "611:1:136",
                            "nodeType": "YulLiteral",
                            "src": "611:1:136",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "601:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "601:2:136"
                        },
                        "nativeSrc": "601:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "601:12:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "594:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "594:6:136"
                    },
                    "nativeSrc": "594:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "594:20:136"
                  },
                  "nativeSrc": "591:40:136",
                  "nodeType": "YulIf",
                  "src": "591:40:136"
                }
              ]
            },
            "name": "abi_decode_enum_Mappers",
            "nativeSrc": "489:148:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "522:6:136",
                "nodeType": "YulTypedName",
                "src": "522:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "533:5:136",
                "nodeType": "YulTypedName",
                "src": "533:5:136",
                "type": ""
              }
            ],
            "src": "489:148:136"
          },
          {
            "body": {
              "nativeSrc": "840:951:136",
              "nodeType": "YulBlock",
              "src": "840:951:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "887:16:136",
                    "nodeType": "YulBlock",
                    "src": "887:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "896:1:136",
                              "nodeType": "YulLiteral",
                              "src": "896:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "899:1:136",
                              "nodeType": "YulLiteral",
                              "src": "899:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "889:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "889:6:136"
                          },
                          "nativeSrc": "889:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "889:12:136"
                        },
                        "nativeSrc": "889:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "889:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "861:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "861:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "870:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "870:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "857:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "857:3:136"
                        },
                        "nativeSrc": "857:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "857:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "882:3:136",
                        "nodeType": "YulLiteral",
                        "src": "882:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "853:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "853:3:136"
                    },
                    "nativeSrc": "853:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "853:33:136"
                  },
                  "nativeSrc": "850:53:136",
                  "nodeType": "YulIf",
                  "src": "850:53:136"
                },
                {
                  "nativeSrc": "912:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "912:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "939:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "939:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "926:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "926:12:136"
                    },
                    "nativeSrc": "926:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "926:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "916:6:136",
                      "nodeType": "YulTypedName",
                      "src": "916:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "992:16:136",
                    "nodeType": "YulBlock",
                    "src": "992:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1001:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1001:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1004:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1004:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "994:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "994:6:136"
                          },
                          "nativeSrc": "994:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "994:12:136"
                        },
                        "nativeSrc": "994:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "994:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "964:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "964:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "972:18:136",
                        "nodeType": "YulLiteral",
                        "src": "972:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "961:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "961:2:136"
                    },
                    "nativeSrc": "961:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "961:30:136"
                  },
                  "nativeSrc": "958:50:136",
                  "nodeType": "YulIf",
                  "src": "958:50:136"
                },
                {
                  "nativeSrc": "1017:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1017:85:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1074:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1074:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1085:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1085:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1070:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1070:3:136"
                        },
                        "nativeSrc": "1070:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1070:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1094:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "1094:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "1043:26:136",
                      "nodeType": "YulIdentifier",
                      "src": "1043:26:136"
                    },
                    "nativeSrc": "1043:59:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1043:59:136"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "1021:8:136",
                      "nodeType": "YulTypedName",
                      "src": "1021:8:136",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "1031:8:136",
                      "nodeType": "YulTypedName",
                      "src": "1031:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1111:18:136",
                  "nodeType": "YulAssignment",
                  "src": "1111:18:136",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "1121:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "1121:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1111:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1111:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1138:18:136",
                  "nodeType": "YulAssignment",
                  "src": "1138:18:136",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "1148:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "1148:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1138:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1138:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1165:45:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1165:45:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1195:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1195:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1206:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1206:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1191:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1191:3:136"
                        },
                        "nativeSrc": "1191:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1191:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1178:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1178:12:136"
                    },
                    "nativeSrc": "1178:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1178:32:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1169:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1169:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "1241:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "1241:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_int8",
                      "nativeSrc": "1219:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "1219:21:136"
                    },
                    "nativeSrc": "1219:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1219:28:136"
                  },
                  "nativeSrc": "1219:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1219:28:136"
                },
                {
                  "nativeSrc": "1256:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1256:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1266:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "1266:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "1256:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1256:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1280:53:136",
                  "nodeType": "YulAssignment",
                  "src": "1280:53:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1318:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1318:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1329:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1329:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1314:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1314:3:136"
                        },
                        "nativeSrc": "1314:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1314:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_enum_Mappers",
                      "nativeSrc": "1290:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "1290:23:136"
                    },
                    "nativeSrc": "1290:43:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1290:43:136"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "1280:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1280:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1342:48:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1342:48:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1375:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1375:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1386:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1386:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1371:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1371:3:136"
                        },
                        "nativeSrc": "1371:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1371:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1358:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1358:12:136"
                    },
                    "nativeSrc": "1358:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1358:32:136"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "1346:8:136",
                      "nodeType": "YulTypedName",
                      "src": "1346:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1435:16:136",
                    "nodeType": "YulBlock",
                    "src": "1435:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1444:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1444:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1447:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1447:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1437:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1437:6:136"
                          },
                          "nativeSrc": "1437:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1437:12:136"
                        },
                        "nativeSrc": "1437:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1437:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "1405:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "1405:8:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1415:18:136",
                        "nodeType": "YulLiteral",
                        "src": "1415:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1402:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1402:2:136"
                    },
                    "nativeSrc": "1402:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1402:32:136"
                  },
                  "nativeSrc": "1399:52:136",
                  "nodeType": "YulIf",
                  "src": "1399:52:136"
                },
                {
                  "nativeSrc": "1460:34:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1460:34:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1474:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1474:9:136"
                      },
                      {
                        "name": "offset_1",
                        "nativeSrc": "1485:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "1485:8:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1470:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1470:3:136"
                    },
                    "nativeSrc": "1470:24:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1470:24:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "1464:2:136",
                      "nodeType": "YulTypedName",
                      "src": "1464:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1542:16:136",
                    "nodeType": "YulBlock",
                    "src": "1542:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1551:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1551:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1554:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1554:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1544:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1544:6:136"
                          },
                          "nativeSrc": "1544:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1544:12:136"
                        },
                        "nativeSrc": "1544:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1544:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "1521:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "1521:2:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1525:4:136",
                                "nodeType": "YulLiteral",
                                "src": "1525:4:136",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1517:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1517:3:136"
                            },
                            "nativeSrc": "1517:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1517:13:136"
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1532:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1532:7:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "1513:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1513:3:136"
                        },
                        "nativeSrc": "1513:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1513:27:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "1506:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1506:6:136"
                    },
                    "nativeSrc": "1506:35:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1506:35:136"
                  },
                  "nativeSrc": "1503:55:136",
                  "nodeType": "YulIf",
                  "src": "1503:55:136"
                },
                {
                  "nativeSrc": "1567:30:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1567:30:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "1594:2:136",
                        "nodeType": "YulIdentifier",
                        "src": "1594:2:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1581:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1581:12:136"
                    },
                    "nativeSrc": "1581:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1581:16:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "1571:6:136",
                      "nodeType": "YulTypedName",
                      "src": "1571:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1640:16:136",
                    "nodeType": "YulBlock",
                    "src": "1640:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1649:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1649:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1652:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1652:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1642:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1642:6:136"
                          },
                          "nativeSrc": "1642:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1642:12:136"
                        },
                        "nativeSrc": "1642:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1642:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "1612:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1612:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1620:18:136",
                        "nodeType": "YulLiteral",
                        "src": "1620:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1609:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1609:2:136"
                    },
                    "nativeSrc": "1609:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1609:30:136"
                  },
                  "nativeSrc": "1606:50:136",
                  "nodeType": "YulIf",
                  "src": "1606:50:136"
                },
                {
                  "body": {
                    "nativeSrc": "1714:16:136",
                    "nodeType": "YulBlock",
                    "src": "1714:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1723:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1723:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1726:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1726:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1716:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1716:6:136"
                          },
                          "nativeSrc": "1716:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1716:12:136"
                        },
                        "nativeSrc": "1716:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1716:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "1679:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "1679:2:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1687:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "1687:1:136",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "1690:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "1690:6:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "1683:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "1683:3:136"
                                },
                                "nativeSrc": "1683:14:136",
                                "nodeType": "YulFunctionCall",
                                "src": "1683:14:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1675:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1675:3:136"
                            },
                            "nativeSrc": "1675:23:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1675:23:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1700:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1700:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1671:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1671:3:136"
                        },
                        "nativeSrc": "1671:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1671:32:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1705:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "1705:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1668:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1668:2:136"
                    },
                    "nativeSrc": "1668:45:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1668:45:136"
                  },
                  "nativeSrc": "1665:65:136",
                  "nodeType": "YulIf",
                  "src": "1665:65:136"
                },
                {
                  "nativeSrc": "1739:21:136",
                  "nodeType": "YulAssignment",
                  "src": "1739:21:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "1753:2:136",
                        "nodeType": "YulIdentifier",
                        "src": "1753:2:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1757:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1757:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1749:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1749:3:136"
                    },
                    "nativeSrc": "1749:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1749:11:136"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "1739:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1739:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1769:16:136",
                  "nodeType": "YulAssignment",
                  "src": "1769:16:136",
                  "value": {
                    "name": "length",
                    "nativeSrc": "1779:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "1779:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "1769:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1769:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_int8t_enum$_Mappers_$28087t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
            "nativeSrc": "642:1149:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "766:9:136",
                "nodeType": "YulTypedName",
                "src": "766:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "777:7:136",
                "nodeType": "YulTypedName",
                "src": "777:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "789:6:136",
                "nodeType": "YulTypedName",
                "src": "789:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "797:6:136",
                "nodeType": "YulTypedName",
                "src": "797:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "805:6:136",
                "nodeType": "YulTypedName",
                "src": "805:6:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "813:6:136",
                "nodeType": "YulTypedName",
                "src": "813:6:136",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "821:6:136",
                "nodeType": "YulTypedName",
                "src": "821:6:136",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "829:6:136",
                "nodeType": "YulTypedName",
                "src": "829:6:136",
                "type": ""
              }
            ],
            "src": "642:1149:136"
          },
          {
            "body": {
              "nativeSrc": "1903:103:136",
              "nodeType": "YulBlock",
              "src": "1903:103:136",
              "statements": [
                {
                  "nativeSrc": "1913:26:136",
                  "nodeType": "YulAssignment",
                  "src": "1913:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1925:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1925:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1936:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1936:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1921:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1921:3:136"
                    },
                    "nativeSrc": "1921:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1921:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1913:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "1913:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1955:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1955:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "1970:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1970:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1982:3:136",
                                "nodeType": "YulLiteral",
                                "src": "1982:3:136",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1987:10:136",
                                "nodeType": "YulLiteral",
                                "src": "1987:10:136",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "1978:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1978:3:136"
                            },
                            "nativeSrc": "1978:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1978:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1966:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1966:3:136"
                        },
                        "nativeSrc": "1966:33:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1966:33:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1948:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1948:6:136"
                    },
                    "nativeSrc": "1948:52:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1948:52:136"
                  },
                  "nativeSrc": "1948:52:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1948:52:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_library_reversed",
            "nativeSrc": "1796:210:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1872:9:136",
                "nodeType": "YulTypedName",
                "src": "1872:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1883:6:136",
                "nodeType": "YulTypedName",
                "src": "1883:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1894:4:136",
                "nodeType": "YulTypedName",
                "src": "1894:4:136",
                "type": ""
              }
            ],
            "src": "1796:210:136"
          },
          {
            "body": {
              "nativeSrc": "2081:86:136",
              "nodeType": "YulBlock",
              "src": "2081:86:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2145:16:136",
                    "nodeType": "YulBlock",
                    "src": "2145:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2154:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2154:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2157:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2157:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2147:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2147:6:136"
                          },
                          "nativeSrc": "2147:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2147:12:136"
                        },
                        "nativeSrc": "2147:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2147:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "2104:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "2104:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "2115:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "2115:5:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2130:3:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2130:3:136",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2135:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2135:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "2126:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "2126:3:136"
                                    },
                                    "nativeSrc": "2126:11:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2126:11:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2139:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2139:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "2122:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2122:3:136"
                                },
                                "nativeSrc": "2122:19:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2122:19:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2111:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2111:3:136"
                            },
                            "nativeSrc": "2111:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2111:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "2101:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "2101:2:136"
                        },
                        "nativeSrc": "2101:42:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2101:42:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "2094:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2094:6:136"
                    },
                    "nativeSrc": "2094:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2094:50:136"
                  },
                  "nativeSrc": "2091:70:136",
                  "nodeType": "YulIf",
                  "src": "2091:70:136"
                }
              ]
            },
            "name": "validator_revert_contract_IWitOracleRadonRegistry",
            "nativeSrc": "2011:156:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "2070:5:136",
                "nodeType": "YulTypedName",
                "src": "2070:5:136",
                "type": ""
              }
            ],
            "src": "2011:156:136"
          },
          {
            "body": {
              "nativeSrc": "2362:854:136",
              "nodeType": "YulBlock",
              "src": "2362:854:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2409:16:136",
                    "nodeType": "YulBlock",
                    "src": "2409:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2418:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2418:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2421:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2421:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2411:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2411:6:136"
                          },
                          "nativeSrc": "2411:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2411:12:136"
                        },
                        "nativeSrc": "2411:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2411:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2383:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "2383:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2392:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2392:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2379:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2379:3:136"
                        },
                        "nativeSrc": "2379:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2379:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2404:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2404:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2375:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2375:3:136"
                    },
                    "nativeSrc": "2375:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2375:33:136"
                  },
                  "nativeSrc": "2372:53:136",
                  "nodeType": "YulIf",
                  "src": "2372:53:136"
                },
                {
                  "nativeSrc": "2434:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2434:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2461:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2461:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2448:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2448:12:136"
                    },
                    "nativeSrc": "2448:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2448:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2438:6:136",
                      "nodeType": "YulTypedName",
                      "src": "2438:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2514:16:136",
                    "nodeType": "YulBlock",
                    "src": "2514:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2523:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2523:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2526:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2526:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2516:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2516:6:136"
                          },
                          "nativeSrc": "2516:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2516:12:136"
                        },
                        "nativeSrc": "2516:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2516:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "2486:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2486:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2494:18:136",
                        "nodeType": "YulLiteral",
                        "src": "2494:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2483:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "2483:2:136"
                    },
                    "nativeSrc": "2483:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2483:30:136"
                  },
                  "nativeSrc": "2480:50:136",
                  "nodeType": "YulIf",
                  "src": "2480:50:136"
                },
                {
                  "nativeSrc": "2539:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2539:85:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2596:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2596:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2607:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2607:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2592:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2592:3:136"
                        },
                        "nativeSrc": "2592:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2592:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2616:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "2616:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "2565:26:136",
                      "nodeType": "YulIdentifier",
                      "src": "2565:26:136"
                    },
                    "nativeSrc": "2565:59:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2565:59:136"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "2543:8:136",
                      "nodeType": "YulTypedName",
                      "src": "2543:8:136",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "2553:8:136",
                      "nodeType": "YulTypedName",
                      "src": "2553:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "2633:18:136",
                  "nodeType": "YulAssignment",
                  "src": "2633:18:136",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "2643:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "2643:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2633:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2633:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2660:18:136",
                  "nodeType": "YulAssignment",
                  "src": "2660:18:136",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "2670:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "2670:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2660:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2660:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2687:48:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2687:48:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2720:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2720:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2731:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2731:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2716:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2716:3:136"
                        },
                        "nativeSrc": "2716:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2716:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2703:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2703:12:136"
                    },
                    "nativeSrc": "2703:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2703:32:136"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "2691:8:136",
                      "nodeType": "YulTypedName",
                      "src": "2691:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2780:16:136",
                    "nodeType": "YulBlock",
                    "src": "2780:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2789:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2789:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2792:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2792:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2782:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2782:6:136"
                          },
                          "nativeSrc": "2782:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2782:12:136"
                        },
                        "nativeSrc": "2782:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2782:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "2750:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "2750:8:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2760:18:136",
                        "nodeType": "YulLiteral",
                        "src": "2760:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2747:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "2747:2:136"
                    },
                    "nativeSrc": "2747:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2747:32:136"
                  },
                  "nativeSrc": "2744:52:136",
                  "nodeType": "YulIf",
                  "src": "2744:52:136"
                },
                {
                  "nativeSrc": "2805:87:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2805:87:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2862:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2862:9:136"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "2873:8:136",
                            "nodeType": "YulIdentifier",
                            "src": "2873:8:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2858:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2858:3:136"
                        },
                        "nativeSrc": "2858:24:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2858:24:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2884:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "2884:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "2831:26:136",
                      "nodeType": "YulIdentifier",
                      "src": "2831:26:136"
                    },
                    "nativeSrc": "2831:61:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2831:61:136"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "2809:8:136",
                      "nodeType": "YulTypedName",
                      "src": "2809:8:136",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "2819:8:136",
                      "nodeType": "YulTypedName",
                      "src": "2819:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "2901:18:136",
                  "nodeType": "YulAssignment",
                  "src": "2901:18:136",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "2911:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "2911:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "2901:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2901:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2928:18:136",
                  "nodeType": "YulAssignment",
                  "src": "2928:18:136",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "2938:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "2938:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "2928:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2928:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2955:45:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2955:45:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2985:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2985:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2996:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2996:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2981:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2981:3:136"
                        },
                        "nativeSrc": "2981:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2981:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2968:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2968:12:136"
                    },
                    "nativeSrc": "2968:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2968:32:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "2959:5:136",
                      "nodeType": "YulTypedName",
                      "src": "2959:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "3031:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "3031:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_int8",
                      "nativeSrc": "3009:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "3009:21:136"
                    },
                    "nativeSrc": "3009:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3009:28:136"
                  },
                  "nativeSrc": "3009:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3009:28:136"
                },
                {
                  "nativeSrc": "3046:15:136",
                  "nodeType": "YulAssignment",
                  "src": "3046:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "3056:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "3056:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "3046:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3046:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "3070:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3070:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3102:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3102:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3113:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3113:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3098:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3098:3:136"
                        },
                        "nativeSrc": "3098:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3098:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3085:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "3085:12:136"
                    },
                    "nativeSrc": "3085:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3085:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "3074:7:136",
                      "nodeType": "YulTypedName",
                      "src": "3074:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "3176:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "3176:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_contract_IWitOracleRadonRegistry",
                      "nativeSrc": "3126:49:136",
                      "nodeType": "YulIdentifier",
                      "src": "3126:49:136"
                    },
                    "nativeSrc": "3126:58:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3126:58:136"
                  },
                  "nativeSrc": "3126:58:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3126:58:136"
                },
                {
                  "nativeSrc": "3193:17:136",
                  "nodeType": "YulAssignment",
                  "src": "3193:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "3203:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "3203:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "3193:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3193:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_bytes_calldata_ptrt_int8t_contract$_IWitOracleRadonRegistry_$27394",
            "nativeSrc": "2172:1044:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2288:9:136",
                "nodeType": "YulTypedName",
                "src": "2288:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2299:7:136",
                "nodeType": "YulTypedName",
                "src": "2299:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2311:6:136",
                "nodeType": "YulTypedName",
                "src": "2311:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "2319:6:136",
                "nodeType": "YulTypedName",
                "src": "2319:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "2327:6:136",
                "nodeType": "YulTypedName",
                "src": "2327:6:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "2335:6:136",
                "nodeType": "YulTypedName",
                "src": "2335:6:136",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "2343:6:136",
                "nodeType": "YulTypedName",
                "src": "2343:6:136",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "2351:6:136",
                "nodeType": "YulTypedName",
                "src": "2351:6:136",
                "type": ""
              }
            ],
            "src": "2172:1044:136"
          },
          {
            "body": {
              "nativeSrc": "3387:146:136",
              "nodeType": "YulBlock",
              "src": "3387:146:136",
              "statements": [
                {
                  "nativeSrc": "3397:26:136",
                  "nodeType": "YulAssignment",
                  "src": "3397:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3409:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3409:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3420:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3420:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3405:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3405:3:136"
                    },
                    "nativeSrc": "3405:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3405:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "3397:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "3397:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3439:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3439:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "3454:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3454:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "3466:3:136",
                                "nodeType": "YulLiteral",
                                "src": "3466:3:136",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3471:10:136",
                                "nodeType": "YulLiteral",
                                "src": "3471:10:136",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "3462:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3462:3:136"
                            },
                            "nativeSrc": "3462:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3462:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3450:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3450:3:136"
                        },
                        "nativeSrc": "3450:33:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3450:33:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3432:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3432:6:136"
                    },
                    "nativeSrc": "3432:52:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3432:52:136"
                  },
                  "nativeSrc": "3432:52:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3432:52:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3504:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3504:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3515:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3515:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3500:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3500:3:136"
                        },
                        "nativeSrc": "3500:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3500:18:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "3520:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3520:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3493:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3493:6:136"
                    },
                    "nativeSrc": "3493:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3493:34:136"
                  },
                  "nativeSrc": "3493:34:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3493:34:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4_t_userDefinedValueType$_RadonHash_$37153__to_t_bytes4_t_bytes32__fromStack_library_reversed",
            "nativeSrc": "3221:312:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3348:9:136",
                "nodeType": "YulTypedName",
                "src": "3348:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "3359:6:136",
                "nodeType": "YulTypedName",
                "src": "3359:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "3367:6:136",
                "nodeType": "YulTypedName",
                "src": "3367:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3378:4:136",
                "nodeType": "YulTypedName",
                "src": "3378:4:136",
                "type": ""
              }
            ],
            "src": "3221:312:136"
          },
          {
            "body": {
              "nativeSrc": "3592:94:136",
              "nodeType": "YulBlock",
              "src": "3592:94:136",
              "statements": [
                {
                  "nativeSrc": "3602:29:136",
                  "nodeType": "YulAssignment",
                  "src": "3602:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3624:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3624:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3611:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "3611:12:136"
                    },
                    "nativeSrc": "3611:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3611:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "3602:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3602:5:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3664:16:136",
                    "nodeType": "YulBlock",
                    "src": "3664:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3673:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3673:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3676:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3676:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3666:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3666:6:136"
                          },
                          "nativeSrc": "3666:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3666:12:136"
                        },
                        "nativeSrc": "3666:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3666:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "3653:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "3653:5:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3660:1:136",
                            "nodeType": "YulLiteral",
                            "src": "3660:1:136",
                            "type": "",
                            "value": "4"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "3650:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "3650:2:136"
                        },
                        "nativeSrc": "3650:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3650:12:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3643:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3643:6:136"
                    },
                    "nativeSrc": "3643:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3643:20:136"
                  },
                  "nativeSrc": "3640:40:136",
                  "nodeType": "YulIf",
                  "src": "3640:40:136"
                }
              ]
            },
            "name": "abi_decode_enum_Oracles",
            "nativeSrc": "3538:148:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "3571:6:136",
                "nodeType": "YulTypedName",
                "src": "3571:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "3582:5:136",
                "nodeType": "YulTypedName",
                "src": "3582:5:136",
                "type": ""
              }
            ],
            "src": "3538:148:136"
          },
          {
            "body": {
              "nativeSrc": "3774:121:136",
              "nodeType": "YulBlock",
              "src": "3774:121:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3820:16:136",
                    "nodeType": "YulBlock",
                    "src": "3820:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3829:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3829:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3832:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3832:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3822:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3822:6:136"
                          },
                          "nativeSrc": "3822:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3822:12:136"
                        },
                        "nativeSrc": "3822:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3822:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3795:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "3795:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3804:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3804:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3791:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3791:3:136"
                        },
                        "nativeSrc": "3791:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3791:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3816:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3816:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3787:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3787:3:136"
                    },
                    "nativeSrc": "3787:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3787:32:136"
                  },
                  "nativeSrc": "3784:52:136",
                  "nodeType": "YulIf",
                  "src": "3784:52:136"
                },
                {
                  "nativeSrc": "3845:44:136",
                  "nodeType": "YulAssignment",
                  "src": "3845:44:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3879:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3879:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_enum_Oracles",
                      "nativeSrc": "3855:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "3855:23:136"
                    },
                    "nativeSrc": "3855:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3855:34:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "3845:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3845:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_enum$_Oracles_$28092",
            "nativeSrc": "3691:204:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3740:9:136",
                "nodeType": "YulTypedName",
                "src": "3740:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3751:7:136",
                "nodeType": "YulTypedName",
                "src": "3751:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3763:6:136",
                "nodeType": "YulTypedName",
                "src": "3763:6:136",
                "type": ""
              }
            ],
            "src": "3691:204:136"
          },
          {
            "body": {
              "nativeSrc": "3950:239:136",
              "nodeType": "YulBlock",
              "src": "3950:239:136",
              "statements": [
                {
                  "nativeSrc": "3960:26:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3960:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "3980:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "3980:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3974:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3974:5:136"
                    },
                    "nativeSrc": "3974:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3974:12:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "3964:6:136",
                      "nodeType": "YulTypedName",
                      "src": "3964:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4002:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4002:3:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "4007:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4007:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3995:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3995:6:136"
                    },
                    "nativeSrc": "3995:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3995:19:136"
                  },
                  "nativeSrc": "3995:19:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3995:19:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4033:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4033:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4038:4:136",
                            "nodeType": "YulLiteral",
                            "src": "4038:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4029:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4029:3:136"
                        },
                        "nativeSrc": "4029:14:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4029:14:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "4049:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "4049:5:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4056:4:136",
                            "nodeType": "YulLiteral",
                            "src": "4056:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4045:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4045:3:136"
                        },
                        "nativeSrc": "4045:16:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4045:16:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "4063:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4063:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mcopy",
                      "nativeSrc": "4023:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "4023:5:136"
                    },
                    "nativeSrc": "4023:47:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4023:47:136"
                  },
                  "nativeSrc": "4023:47:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4023:47:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nativeSrc": "4094:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "4094:3:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "4099:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "4099:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "4090:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4090:3:136"
                            },
                            "nativeSrc": "4090:16:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4090:16:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4108:4:136",
                            "nodeType": "YulLiteral",
                            "src": "4108:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4086:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4086:3:136"
                        },
                        "nativeSrc": "4086:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4086:27:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4115:1:136",
                        "nodeType": "YulLiteral",
                        "src": "4115:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4079:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4079:6:136"
                    },
                    "nativeSrc": "4079:38:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4079:38:136"
                  },
                  "nativeSrc": "4079:38:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4079:38:136"
                },
                {
                  "nativeSrc": "4126:57:136",
                  "nodeType": "YulAssignment",
                  "src": "4126:57:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4141:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4141:3:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "4154:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "4154:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4162:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "4162:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "4150:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "4150:3:136"
                                },
                                "nativeSrc": "4150:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "4150:15:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4171:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "4171:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "4167:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "4167:3:136"
                                },
                                "nativeSrc": "4167:7:136",
                                "nodeType": "YulFunctionCall",
                                "src": "4167:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "4146:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4146:3:136"
                            },
                            "nativeSrc": "4146:29:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4146:29:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4137:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4137:3:136"
                        },
                        "nativeSrc": "4137:39:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4137:39:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4178:4:136",
                        "nodeType": "YulLiteral",
                        "src": "4178:4:136",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4133:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4133:3:136"
                    },
                    "nativeSrc": "4133:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4133:50:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "4126:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4126:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nativeSrc": "3900:289:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "3927:5:136",
                "nodeType": "YulTypedName",
                "src": "3927:5:136",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "3934:3:136",
                "nodeType": "YulTypedName",
                "src": "3934:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "3942:3:136",
                "nodeType": "YulTypedName",
                "src": "3942:3:136",
                "type": ""
              }
            ],
            "src": "3900:289:136"
          },
          {
            "body": {
              "nativeSrc": "4323:99:136",
              "nodeType": "YulBlock",
              "src": "4323:99:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4340:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4340:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4351:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4351:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4333:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4333:6:136"
                    },
                    "nativeSrc": "4333:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4333:21:136"
                  },
                  "nativeSrc": "4333:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4333:21:136"
                },
                {
                  "nativeSrc": "4363:53:136",
                  "nodeType": "YulAssignment",
                  "src": "4363:53:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "4389:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4389:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4401:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4401:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4412:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4412:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4397:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4397:3:136"
                        },
                        "nativeSrc": "4397:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4397:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "4371:17:136",
                      "nodeType": "YulIdentifier",
                      "src": "4371:17:136"
                    },
                    "nativeSrc": "4371:45:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4371:45:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4363:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4363:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed",
            "nativeSrc": "4194:228:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4292:9:136",
                "nodeType": "YulTypedName",
                "src": "4292:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4303:6:136",
                "nodeType": "YulTypedName",
                "src": "4303:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "4314:4:136",
                "nodeType": "YulTypedName",
                "src": "4314:4:136",
                "type": ""
              }
            ],
            "src": "4194:228:136"
          },
          {
            "body": {
              "nativeSrc": "4493:125:136",
              "nodeType": "YulBlock",
              "src": "4493:125:136",
              "statements": [
                {
                  "nativeSrc": "4503:29:136",
                  "nodeType": "YulAssignment",
                  "src": "4503:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "4525:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4525:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4512:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "4512:12:136"
                    },
                    "nativeSrc": "4512:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4512:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "4503:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "4503:5:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4596:16:136",
                    "nodeType": "YulBlock",
                    "src": "4596:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4605:1:136",
                              "nodeType": "YulLiteral",
                              "src": "4605:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4608:1:136",
                              "nodeType": "YulLiteral",
                              "src": "4608:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4598:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "4598:6:136"
                          },
                          "nativeSrc": "4598:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "4598:12:136"
                        },
                        "nativeSrc": "4598:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "4598:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "4554:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "4554:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "4565:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "4565:5:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4576:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "4576:3:136",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4581:10:136",
                                    "nodeType": "YulLiteral",
                                    "src": "4581:10:136",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "4572:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "4572:3:136"
                                },
                                "nativeSrc": "4572:20:136",
                                "nodeType": "YulFunctionCall",
                                "src": "4572:20:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "4561:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4561:3:136"
                            },
                            "nativeSrc": "4561:32:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4561:32:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "4551:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "4551:2:136"
                        },
                        "nativeSrc": "4551:43:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4551:43:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "4544:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4544:6:136"
                    },
                    "nativeSrc": "4544:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4544:51:136"
                  },
                  "nativeSrc": "4541:71:136",
                  "nodeType": "YulIf",
                  "src": "4541:71:136"
                }
              ]
            },
            "name": "abi_decode_userDefinedValueType_ID4",
            "nativeSrc": "4427:191:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "4472:6:136",
                "nodeType": "YulTypedName",
                "src": "4472:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "4483:5:136",
                "nodeType": "YulTypedName",
                "src": "4483:5:136",
                "type": ""
              }
            ],
            "src": "4427:191:136"
          },
          {
            "body": {
              "nativeSrc": "4671:113:136",
              "nodeType": "YulBlock",
              "src": "4671:113:136",
              "statements": [
                {
                  "nativeSrc": "4681:29:136",
                  "nodeType": "YulAssignment",
                  "src": "4681:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "4703:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4703:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4690:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "4690:12:136"
                    },
                    "nativeSrc": "4690:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4690:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "4681:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "4681:5:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4762:16:136",
                    "nodeType": "YulBlock",
                    "src": "4762:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4771:1:136",
                              "nodeType": "YulLiteral",
                              "src": "4771:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4774:1:136",
                              "nodeType": "YulLiteral",
                              "src": "4774:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4764:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "4764:6:136"
                          },
                          "nativeSrc": "4764:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "4764:12:136"
                        },
                        "nativeSrc": "4764:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "4764:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "4732:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "4732:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "4743:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "4743:5:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4750:8:136",
                                "nodeType": "YulLiteral",
                                "src": "4750:8:136",
                                "type": "",
                                "value": "0xffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "4739:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4739:3:136"
                            },
                            "nativeSrc": "4739:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4739:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "4729:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "4729:2:136"
                        },
                        "nativeSrc": "4729:31:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4729:31:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "4722:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4722:6:136"
                    },
                    "nativeSrc": "4722:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4722:39:136"
                  },
                  "nativeSrc": "4719:59:136",
                  "nodeType": "YulIf",
                  "src": "4719:59:136"
                }
              ]
            },
            "name": "abi_decode_uint24",
            "nativeSrc": "4623:161:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "4650:6:136",
                "nodeType": "YulTypedName",
                "src": "4650:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "4661:5:136",
                "nodeType": "YulTypedName",
                "src": "4661:5:136",
                "type": ""
              }
            ],
            "src": "4623:161:136"
          },
          {
            "body": {
              "nativeSrc": "4946:240:136",
              "nodeType": "YulBlock",
              "src": "4946:240:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "4992:16:136",
                    "nodeType": "YulBlock",
                    "src": "4992:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5001:1:136",
                              "nodeType": "YulLiteral",
                              "src": "5001:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5004:1:136",
                              "nodeType": "YulLiteral",
                              "src": "5004:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4994:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "4994:6:136"
                          },
                          "nativeSrc": "4994:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "4994:12:136"
                        },
                        "nativeSrc": "4994:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "4994:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "4967:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "4967:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "4976:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4976:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "4963:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4963:3:136"
                        },
                        "nativeSrc": "4963:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4963:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4988:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4988:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "4959:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4959:3:136"
                    },
                    "nativeSrc": "4959:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4959:32:136"
                  },
                  "nativeSrc": "4956:52:136",
                  "nodeType": "YulIf",
                  "src": "4956:52:136"
                },
                {
                  "nativeSrc": "5017:33:136",
                  "nodeType": "YulAssignment",
                  "src": "5017:33:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5040:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "5040:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5027:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "5027:12:136"
                    },
                    "nativeSrc": "5027:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5027:23:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "5017:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5017:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "5059:65:136",
                  "nodeType": "YulAssignment",
                  "src": "5059:65:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5109:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5109:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5120:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5120:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5105:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5105:3:136"
                        },
                        "nativeSrc": "5105:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5105:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_userDefinedValueType_ID4",
                      "nativeSrc": "5069:35:136",
                      "nodeType": "YulIdentifier",
                      "src": "5069:35:136"
                    },
                    "nativeSrc": "5069:55:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5069:55:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "5059:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5059:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "5133:47:136",
                  "nodeType": "YulAssignment",
                  "src": "5133:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5165:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5165:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5176:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5176:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5161:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5161:3:136"
                        },
                        "nativeSrc": "5161:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5161:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint24",
                      "nativeSrc": "5143:17:136",
                      "nodeType": "YulIdentifier",
                      "src": "5143:17:136"
                    },
                    "nativeSrc": "5143:37:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5143:37:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "5133:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5133:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_struct$_PriceFeed_$22395_storage_ptrt_userDefinedValueType$_ID4_$28155t_uint24",
            "nativeSrc": "4789:397:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4896:9:136",
                "nodeType": "YulTypedName",
                "src": "4896:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "4907:7:136",
                "nodeType": "YulTypedName",
                "src": "4907:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "4919:6:136",
                "nodeType": "YulTypedName",
                "src": "4919:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4927:6:136",
                "nodeType": "YulTypedName",
                "src": "4927:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4935:6:136",
                "nodeType": "YulTypedName",
                "src": "4935:6:136",
                "type": ""
              }
            ],
            "src": "4789:397:136"
          },
          {
            "body": {
              "nativeSrc": "5356:504:136",
              "nodeType": "YulBlock",
              "src": "5356:504:136",
              "statements": [
                {
                  "nativeSrc": "5366:27:136",
                  "nodeType": "YulAssignment",
                  "src": "5366:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5378:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "5378:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5389:3:136",
                        "nodeType": "YulLiteral",
                        "src": "5389:3:136",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5374:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "5374:3:136"
                    },
                    "nativeSrc": "5374:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5374:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "5366:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "5366:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5409:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "5409:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nativeSrc": "5430:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "5430:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "5424:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "5424:5:136"
                            },
                            "nativeSrc": "5424:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5424:13:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5439:18:136",
                            "nodeType": "YulLiteral",
                            "src": "5439:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5420:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5420:3:136"
                        },
                        "nativeSrc": "5420:38:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5420:38:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5402:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5402:6:136"
                    },
                    "nativeSrc": "5402:57:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5402:57:136"
                  },
                  "nativeSrc": "5402:57:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5402:57:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5479:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5479:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5490:4:136",
                            "nodeType": "YulLiteral",
                            "src": "5490:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5475:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5475:3:136"
                        },
                        "nativeSrc": "5475:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5475:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "5511:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "5511:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5519:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "5519:4:136",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5507:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "5507:3:136"
                                },
                                "nativeSrc": "5507:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "5507:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "5501:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "5501:5:136"
                            },
                            "nativeSrc": "5501:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5501:24:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5527:18:136",
                            "nodeType": "YulLiteral",
                            "src": "5527:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5497:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5497:3:136"
                        },
                        "nativeSrc": "5497:49:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5497:49:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5468:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5468:6:136"
                    },
                    "nativeSrc": "5468:79:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5468:79:136"
                  },
                  "nativeSrc": "5468:79:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5468:79:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5567:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5567:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5578:4:136",
                            "nodeType": "YulLiteral",
                            "src": "5578:4:136",
                            "type": "",
                            "value": "0x40"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5563:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5563:3:136"
                        },
                        "nativeSrc": "5563:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5563:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5596:1:136",
                            "nodeType": "YulLiteral",
                            "src": "5596:1:136",
                            "type": "",
                            "value": "6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "5609:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "5609:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5617:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "5617:4:136",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5605:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "5605:3:136"
                                },
                                "nativeSrc": "5605:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "5605:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "5599:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "5599:5:136"
                            },
                            "nativeSrc": "5599:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5599:24:136"
                          }
                        ],
                        "functionName": {
                          "name": "signextend",
                          "nativeSrc": "5585:10:136",
                          "nodeType": "YulIdentifier",
                          "src": "5585:10:136"
                        },
                        "nativeSrc": "5585:39:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5585:39:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5556:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5556:6:136"
                    },
                    "nativeSrc": "5556:69:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5556:69:136"
                  },
                  "nativeSrc": "5556:69:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5556:69:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5645:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5645:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5656:4:136",
                            "nodeType": "YulLiteral",
                            "src": "5656:4:136",
                            "type": "",
                            "value": "0x60"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5641:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5641:3:136"
                        },
                        "nativeSrc": "5641:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5641:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5674:1:136",
                            "nodeType": "YulLiteral",
                            "src": "5674:1:136",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "5687:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "5687:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5695:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "5695:4:136",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5683:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "5683:3:136"
                                },
                                "nativeSrc": "5683:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "5683:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "5677:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "5677:5:136"
                            },
                            "nativeSrc": "5677:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5677:24:136"
                          }
                        ],
                        "functionName": {
                          "name": "signextend",
                          "nativeSrc": "5663:10:136",
                          "nodeType": "YulIdentifier",
                          "src": "5663:10:136"
                        },
                        "nativeSrc": "5663:39:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5663:39:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5634:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5634:6:136"
                    },
                    "nativeSrc": "5634:69:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5634:69:136"
                  },
                  "nativeSrc": "5634:69:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5634:69:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5723:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5723:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5734:4:136",
                            "nodeType": "YulLiteral",
                            "src": "5734:4:136",
                            "type": "",
                            "value": "0x80"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5719:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5719:3:136"
                        },
                        "nativeSrc": "5719:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5719:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "5755:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "5755:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5763:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "5763:4:136",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5751:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "5751:3:136"
                                },
                                "nativeSrc": "5751:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "5751:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "5745:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "5745:5:136"
                            },
                            "nativeSrc": "5745:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5745:24:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5771:18:136",
                            "nodeType": "YulLiteral",
                            "src": "5771:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5741:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5741:3:136"
                        },
                        "nativeSrc": "5741:49:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5741:49:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5712:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5712:6:136"
                    },
                    "nativeSrc": "5712:79:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5712:79:136"
                  },
                  "nativeSrc": "5712:79:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5712:79:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5811:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5811:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5822:4:136",
                            "nodeType": "YulLiteral",
                            "src": "5822:4:136",
                            "type": "",
                            "value": "0xa0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5807:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5807:3:136"
                        },
                        "nativeSrc": "5807:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5807:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nativeSrc": "5839:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "5839:6:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "5847:4:136",
                                "nodeType": "YulLiteral",
                                "src": "5847:4:136",
                                "type": "",
                                "value": "0xa0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "5835:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "5835:3:136"
                            },
                            "nativeSrc": "5835:17:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5835:17:136"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nativeSrc": "5829:5:136",
                          "nodeType": "YulIdentifier",
                          "src": "5829:5:136"
                        },
                        "nativeSrc": "5829:24:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5829:24:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5800:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5800:6:136"
                    },
                    "nativeSrc": "5800:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5800:54:136"
                  },
                  "nativeSrc": "5800:54:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5800:54:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_struct$_PriceData_$22357_memory_ptr__to_t_struct$_PriceData_$22357_memory_ptr__fromStack_library_reversed",
            "nativeSrc": "5191:669:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5325:9:136",
                "nodeType": "YulTypedName",
                "src": "5325:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "5336:6:136",
                "nodeType": "YulTypedName",
                "src": "5336:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "5347:4:136",
                "nodeType": "YulTypedName",
                "src": "5347:4:136",
                "type": ""
              }
            ],
            "src": "5191:669:136"
          },
          {
            "body": {
              "nativeSrc": "5948:121:136",
              "nodeType": "YulBlock",
              "src": "5948:121:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5994:16:136",
                    "nodeType": "YulBlock",
                    "src": "5994:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6003:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6003:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6006:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6006:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5996:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "5996:6:136"
                          },
                          "nativeSrc": "5996:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "5996:12:136"
                        },
                        "nativeSrc": "5996:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "5996:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "5969:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "5969:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "5978:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5978:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "5965:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5965:3:136"
                        },
                        "nativeSrc": "5965:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5965:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5990:2:136",
                        "nodeType": "YulLiteral",
                        "src": "5990:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "5961:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "5961:3:136"
                    },
                    "nativeSrc": "5961:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5961:32:136"
                  },
                  "nativeSrc": "5958:52:136",
                  "nodeType": "YulIf",
                  "src": "5958:52:136"
                },
                {
                  "nativeSrc": "6019:44:136",
                  "nodeType": "YulAssignment",
                  "src": "6019:44:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6053:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6053:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_enum_Mappers",
                      "nativeSrc": "6029:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "6029:23:136"
                    },
                    "nativeSrc": "6029:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6029:34:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "6019:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6019:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_enum$_Mappers_$28087",
            "nativeSrc": "5865:204:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5914:9:136",
                "nodeType": "YulTypedName",
                "src": "5914:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "5925:7:136",
                "nodeType": "YulTypedName",
                "src": "5925:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "5937:6:136",
                "nodeType": "YulTypedName",
                "src": "5937:6:136",
                "type": ""
              }
            ],
            "src": "5865:204:136"
          },
          {
            "body": {
              "nativeSrc": "6116:76:136",
              "nodeType": "YulBlock",
              "src": "6116:76:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "6170:16:136",
                    "nodeType": "YulBlock",
                    "src": "6170:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6179:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6179:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6182:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6182:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6172:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "6172:6:136"
                          },
                          "nativeSrc": "6172:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "6172:12:136"
                        },
                        "nativeSrc": "6172:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "6172:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "6139:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "6139:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "6160:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "6160:5:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "6153:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "6153:6:136"
                                },
                                "nativeSrc": "6153:13:136",
                                "nodeType": "YulFunctionCall",
                                "src": "6153:13:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "6146:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "6146:6:136"
                            },
                            "nativeSrc": "6146:21:136",
                            "nodeType": "YulFunctionCall",
                            "src": "6146:21:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "6136:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "6136:2:136"
                        },
                        "nativeSrc": "6136:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6136:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "6129:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6129:6:136"
                    },
                    "nativeSrc": "6129:40:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6129:40:136"
                  },
                  "nativeSrc": "6126:60:136",
                  "nodeType": "YulIf",
                  "src": "6126:60:136"
                }
              ]
            },
            "name": "validator_revert_bool",
            "nativeSrc": "6074:118:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "6105:5:136",
                "nodeType": "YulTypedName",
                "src": "6105:5:136",
                "type": ""
              }
            ],
            "src": "6074:118:136"
          },
          {
            "body": {
              "nativeSrc": "6306:248:136",
              "nodeType": "YulBlock",
              "src": "6306:248:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "6352:16:136",
                    "nodeType": "YulBlock",
                    "src": "6352:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6361:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6361:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6364:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6364:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6354:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "6354:6:136"
                          },
                          "nativeSrc": "6354:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "6354:12:136"
                        },
                        "nativeSrc": "6354:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "6354:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "6327:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "6327:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "6336:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6336:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "6323:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6323:3:136"
                        },
                        "nativeSrc": "6323:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6323:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6348:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6348:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "6319:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6319:3:136"
                    },
                    "nativeSrc": "6319:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6319:32:136"
                  },
                  "nativeSrc": "6316:52:136",
                  "nodeType": "YulIf",
                  "src": "6316:52:136"
                },
                {
                  "nativeSrc": "6377:56:136",
                  "nodeType": "YulAssignment",
                  "src": "6377:56:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6423:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6423:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_userDefinedValueType_ID4",
                      "nativeSrc": "6387:35:136",
                      "nodeType": "YulIdentifier",
                      "src": "6387:35:136"
                    },
                    "nativeSrc": "6387:46:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6387:46:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "6377:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6377:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "6442:45:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6442:45:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6472:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6472:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6483:2:136",
                            "nodeType": "YulLiteral",
                            "src": "6483:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6468:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6468:3:136"
                        },
                        "nativeSrc": "6468:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6468:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6455:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "6455:12:136"
                    },
                    "nativeSrc": "6455:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6455:32:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "6446:5:136",
                      "nodeType": "YulTypedName",
                      "src": "6446:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "6518:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "6518:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nativeSrc": "6496:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "6496:21:136"
                    },
                    "nativeSrc": "6496:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6496:28:136"
                  },
                  "nativeSrc": "6496:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6496:28:136"
                },
                {
                  "nativeSrc": "6533:15:136",
                  "nodeType": "YulAssignment",
                  "src": "6533:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "6543:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "6543:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "6533:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6533:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_userDefinedValueType$_ID4_$28155t_bool",
            "nativeSrc": "6197:357:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6264:9:136",
                "nodeType": "YulTypedName",
                "src": "6264:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "6275:7:136",
                "nodeType": "YulTypedName",
                "src": "6275:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "6287:6:136",
                "nodeType": "YulTypedName",
                "src": "6287:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "6295:6:136",
                "nodeType": "YulTypedName",
                "src": "6295:6:136",
                "type": ""
              }
            ],
            "src": "6197:357:136"
          },
          {
            "body": {
              "nativeSrc": "6654:133:136",
              "nodeType": "YulBlock",
              "src": "6654:133:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "6700:16:136",
                    "nodeType": "YulBlock",
                    "src": "6700:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6709:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6709:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6712:1:136",
                              "nodeType": "YulLiteral",
                              "src": "6712:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6702:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "6702:6:136"
                          },
                          "nativeSrc": "6702:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "6702:12:136"
                        },
                        "nativeSrc": "6702:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "6702:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "6675:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "6675:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "6684:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6684:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "6671:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6671:3:136"
                        },
                        "nativeSrc": "6671:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6671:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6696:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6696:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "6667:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6667:3:136"
                    },
                    "nativeSrc": "6667:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6667:32:136"
                  },
                  "nativeSrc": "6664:52:136",
                  "nodeType": "YulIf",
                  "src": "6664:52:136"
                },
                {
                  "nativeSrc": "6725:56:136",
                  "nodeType": "YulAssignment",
                  "src": "6725:56:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6771:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6771:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_userDefinedValueType_ID4",
                      "nativeSrc": "6735:35:136",
                      "nodeType": "YulIdentifier",
                      "src": "6735:35:136"
                    },
                    "nativeSrc": "6735:46:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6735:46:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "6725:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6725:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_userDefinedValueType$_ID4_$28155",
            "nativeSrc": "6559:228:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6620:9:136",
                "nodeType": "YulTypedName",
                "src": "6620:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "6631:7:136",
                "nodeType": "YulTypedName",
                "src": "6631:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "6643:6:136",
                "nodeType": "YulTypedName",
                "src": "6643:6:136",
                "type": ""
              }
            ],
            "src": "6559:228:136"
          },
          {
            "body": {
              "nativeSrc": "6949:416:136",
              "nodeType": "YulBlock",
              "src": "6949:416:136",
              "statements": [
                {
                  "nativeSrc": "6959:27:136",
                  "nodeType": "YulAssignment",
                  "src": "6959:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6971:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6971:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6982:3:136",
                        "nodeType": "YulLiteral",
                        "src": "6982:3:136",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6967:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6967:3:136"
                    },
                    "nativeSrc": "6967:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6967:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "6959:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "6959:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7002:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "7002:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "7024:1:136",
                            "nodeType": "YulLiteral",
                            "src": "7024:1:136",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nativeSrc": "7033:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "7033:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "7027:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "7027:5:136"
                            },
                            "nativeSrc": "7027:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "7027:13:136"
                          }
                        ],
                        "functionName": {
                          "name": "signextend",
                          "nativeSrc": "7013:10:136",
                          "nodeType": "YulIdentifier",
                          "src": "7013:10:136"
                        },
                        "nativeSrc": "7013:28:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7013:28:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6995:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6995:6:136"
                    },
                    "nativeSrc": "6995:47:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6995:47:136"
                  },
                  "nativeSrc": "6995:47:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6995:47:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7062:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7062:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7073:4:136",
                            "nodeType": "YulLiteral",
                            "src": "7073:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7058:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7058:3:136"
                        },
                        "nativeSrc": "7058:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7058:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "7094:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "7094:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7102:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "7102:4:136",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "7090:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "7090:3:136"
                                },
                                "nativeSrc": "7090:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "7090:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "7084:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "7084:5:136"
                            },
                            "nativeSrc": "7084:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "7084:24:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7110:18:136",
                            "nodeType": "YulLiteral",
                            "src": "7110:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "7080:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7080:3:136"
                        },
                        "nativeSrc": "7080:49:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7080:49:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7051:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "7051:6:136"
                    },
                    "nativeSrc": "7051:79:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7051:79:136"
                  },
                  "nativeSrc": "7051:79:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "7051:79:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7150:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7150:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7161:4:136",
                            "nodeType": "YulLiteral",
                            "src": "7161:4:136",
                            "type": "",
                            "value": "0x40"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7146:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7146:3:136"
                        },
                        "nativeSrc": "7146:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7146:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "7179:1:136",
                            "nodeType": "YulLiteral",
                            "src": "7179:1:136",
                            "type": "",
                            "value": "6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "7192:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "7192:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7200:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "7200:4:136",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "7188:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "7188:3:136"
                                },
                                "nativeSrc": "7188:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "7188:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "7182:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "7182:5:136"
                            },
                            "nativeSrc": "7182:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "7182:24:136"
                          }
                        ],
                        "functionName": {
                          "name": "signextend",
                          "nativeSrc": "7168:10:136",
                          "nodeType": "YulIdentifier",
                          "src": "7168:10:136"
                        },
                        "nativeSrc": "7168:39:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7168:39:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7139:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "7139:6:136"
                    },
                    "nativeSrc": "7139:69:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7139:69:136"
                  },
                  "nativeSrc": "7139:69:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "7139:69:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7228:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7228:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7239:4:136",
                            "nodeType": "YulLiteral",
                            "src": "7239:4:136",
                            "type": "",
                            "value": "0x60"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7224:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7224:3:136"
                        },
                        "nativeSrc": "7224:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7224:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "7260:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "7260:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7268:4:136",
                                    "nodeType": "YulLiteral",
                                    "src": "7268:4:136",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "7256:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "7256:3:136"
                                },
                                "nativeSrc": "7256:17:136",
                                "nodeType": "YulFunctionCall",
                                "src": "7256:17:136"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nativeSrc": "7250:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "7250:5:136"
                            },
                            "nativeSrc": "7250:24:136",
                            "nodeType": "YulFunctionCall",
                            "src": "7250:24:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7276:18:136",
                            "nodeType": "YulLiteral",
                            "src": "7276:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "7246:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7246:3:136"
                        },
                        "nativeSrc": "7246:49:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7246:49:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7217:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "7217:6:136"
                    },
                    "nativeSrc": "7217:79:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7217:79:136"
                  },
                  "nativeSrc": "7217:79:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "7217:79:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7316:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7316:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7327:4:136",
                            "nodeType": "YulLiteral",
                            "src": "7327:4:136",
                            "type": "",
                            "value": "0x80"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7312:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7312:3:136"
                        },
                        "nativeSrc": "7312:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7312:20:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nativeSrc": "7344:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "7344:6:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "7352:4:136",
                                "nodeType": "YulLiteral",
                                "src": "7352:4:136",
                                "type": "",
                                "value": "0x80"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "7340:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "7340:3:136"
                            },
                            "nativeSrc": "7340:17:136",
                            "nodeType": "YulFunctionCall",
                            "src": "7340:17:136"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nativeSrc": "7334:5:136",
                          "nodeType": "YulIdentifier",
                          "src": "7334:5:136"
                        },
                        "nativeSrc": "7334:24:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7334:24:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "7305:6:136"
                    },
                    "nativeSrc": "7305:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7305:54:136"
                  },
                  "nativeSrc": "7305:54:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "7305:54:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_struct$_Price_$28105_memory_ptr__to_t_struct$_Price_$28105_memory_ptr__fromStack_library_reversed",
            "nativeSrc": "6792:573:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6918:9:136",
                "nodeType": "YulTypedName",
                "src": "6918:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "6929:6:136",
                "nodeType": "YulTypedName",
                "src": "6929:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "6940:4:136",
                "nodeType": "YulTypedName",
                "src": "6940:4:136",
                "type": ""
              }
            ],
            "src": "6792:573:136"
          },
          {
            "body": {
              "nativeSrc": "7481:189:136",
              "nodeType": "YulBlock",
              "src": "7481:189:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "7527:16:136",
                    "nodeType": "YulBlock",
                    "src": "7527:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "7536:1:136",
                              "nodeType": "YulLiteral",
                              "src": "7536:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "7539:1:136",
                              "nodeType": "YulLiteral",
                              "src": "7539:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "7529:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "7529:6:136"
                          },
                          "nativeSrc": "7529:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "7529:12:136"
                        },
                        "nativeSrc": "7529:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "7529:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "7502:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "7502:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "7511:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7511:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "7498:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7498:3:136"
                        },
                        "nativeSrc": "7498:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7498:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7523:2:136",
                        "nodeType": "YulLiteral",
                        "src": "7523:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "7494:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "7494:3:136"
                    },
                    "nativeSrc": "7494:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7494:32:136"
                  },
                  "nativeSrc": "7491:52:136",
                  "nodeType": "YulIf",
                  "src": "7491:52:136"
                },
                {
                  "nativeSrc": "7552:56:136",
                  "nodeType": "YulAssignment",
                  "src": "7552:56:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7598:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "7598:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_userDefinedValueType_ID4",
                      "nativeSrc": "7562:35:136",
                      "nodeType": "YulIdentifier",
                      "src": "7562:35:136"
                    },
                    "nativeSrc": "7562:46:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7562:46:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "7552:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "7552:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "7617:47:136",
                  "nodeType": "YulAssignment",
                  "src": "7617:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7649:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7649:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7660:2:136",
                            "nodeType": "YulLiteral",
                            "src": "7660:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7645:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7645:3:136"
                        },
                        "nativeSrc": "7645:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7645:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint24",
                      "nativeSrc": "7627:17:136",
                      "nodeType": "YulIdentifier",
                      "src": "7627:17:136"
                    },
                    "nativeSrc": "7627:37:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7627:37:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "7617:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "7617:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_userDefinedValueType$_ID4_$28155t_uint24",
            "nativeSrc": "7370:300:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "7439:9:136",
                "nodeType": "YulTypedName",
                "src": "7439:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "7450:7:136",
                "nodeType": "YulTypedName",
                "src": "7450:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "7462:6:136",
                "nodeType": "YulTypedName",
                "src": "7462:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "7470:6:136",
                "nodeType": "YulTypedName",
                "src": "7470:6:136",
                "type": ""
              }
            ],
            "src": "7370:300:136"
          },
          {
            "body": {
              "nativeSrc": "7877:689:136",
              "nodeType": "YulBlock",
              "src": "7877:689:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "7924:16:136",
                    "nodeType": "YulBlock",
                    "src": "7924:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "7933:1:136",
                              "nodeType": "YulLiteral",
                              "src": "7933:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "7936:1:136",
                              "nodeType": "YulLiteral",
                              "src": "7936:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "7926:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "7926:6:136"
                          },
                          "nativeSrc": "7926:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "7926:12:136"
                        },
                        "nativeSrc": "7926:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "7926:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "7898:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "7898:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "7907:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "7907:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "7894:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "7894:3:136"
                        },
                        "nativeSrc": "7894:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "7894:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7919:3:136",
                        "nodeType": "YulLiteral",
                        "src": "7919:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "7890:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "7890:3:136"
                    },
                    "nativeSrc": "7890:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7890:33:136"
                  },
                  "nativeSrc": "7887:53:136",
                  "nodeType": "YulIf",
                  "src": "7887:53:136"
                },
                {
                  "nativeSrc": "7949:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "7949:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7976:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "7976:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "7963:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "7963:12:136"
                    },
                    "nativeSrc": "7963:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7963:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "7953:6:136",
                      "nodeType": "YulTypedName",
                      "src": "7953:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "8029:16:136",
                    "nodeType": "YulBlock",
                    "src": "8029:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8038:1:136",
                              "nodeType": "YulLiteral",
                              "src": "8038:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8041:1:136",
                              "nodeType": "YulLiteral",
                              "src": "8041:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8031:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "8031:6:136"
                          },
                          "nativeSrc": "8031:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "8031:12:136"
                        },
                        "nativeSrc": "8031:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "8031:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "8001:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "8001:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8009:18:136",
                        "nodeType": "YulLiteral",
                        "src": "8009:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "7998:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "7998:2:136"
                    },
                    "nativeSrc": "7998:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7998:30:136"
                  },
                  "nativeSrc": "7995:50:136",
                  "nodeType": "YulIf",
                  "src": "7995:50:136"
                },
                {
                  "nativeSrc": "8054:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8054:85:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8111:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "8111:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "8122:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "8122:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8107:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "8107:3:136"
                        },
                        "nativeSrc": "8107:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "8107:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "8131:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "8131:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "8080:26:136",
                      "nodeType": "YulIdentifier",
                      "src": "8080:26:136"
                    },
                    "nativeSrc": "8080:59:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8080:59:136"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "8058:8:136",
                      "nodeType": "YulTypedName",
                      "src": "8058:8:136",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "8068:8:136",
                      "nodeType": "YulTypedName",
                      "src": "8068:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "8148:18:136",
                  "nodeType": "YulAssignment",
                  "src": "8148:18:136",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "8158:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "8158:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "8148:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "8148:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "8175:18:136",
                  "nodeType": "YulAssignment",
                  "src": "8175:18:136",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "8185:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "8185:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "8175:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "8175:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "8202:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8202:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "8215:1:136",
                    "nodeType": "YulLiteral",
                    "src": "8215:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "8206:5:136",
                      "nodeType": "YulTypedName",
                      "src": "8206:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "8225:41:136",
                  "nodeType": "YulAssignment",
                  "src": "8225:41:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8251:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "8251:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8262:2:136",
                            "nodeType": "YulLiteral",
                            "src": "8262:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8247:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "8247:3:136"
                        },
                        "nativeSrc": "8247:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "8247:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8234:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "8234:12:136"
                    },
                    "nativeSrc": "8234:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8234:32:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "8225:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "8225:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "8275:15:136",
                  "nodeType": "YulAssignment",
                  "src": "8275:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "8285:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "8285:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "8275:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "8275:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "8299:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8299:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8331:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "8331:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8342:2:136",
                            "nodeType": "YulLiteral",
                            "src": "8342:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8327:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "8327:3:136"
                        },
                        "nativeSrc": "8327:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "8327:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8314:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "8314:12:136"
                    },
                    "nativeSrc": "8314:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8314:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "8303:7:136",
                      "nodeType": "YulTypedName",
                      "src": "8303:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "8377:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "8377:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_int8",
                      "nativeSrc": "8355:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "8355:21:136"
                    },
                    "nativeSrc": "8355:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8355:30:136"
                  },
                  "nativeSrc": "8355:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "8355:30:136"
                },
                {
                  "nativeSrc": "8394:17:136",
                  "nodeType": "YulAssignment",
                  "src": "8394:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "8404:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "8404:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "8394:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "8394:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "8420:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8420:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8452:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "8452:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8463:2:136",
                            "nodeType": "YulLiteral",
                            "src": "8463:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8448:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "8448:3:136"
                        },
                        "nativeSrc": "8448:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "8448:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8435:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "8435:12:136"
                    },
                    "nativeSrc": "8435:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8435:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "8424:7:136",
                      "nodeType": "YulTypedName",
                      "src": "8424:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_2",
                        "nativeSrc": "8526:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "8526:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_contract_IWitOracleRadonRegistry",
                      "nativeSrc": "8476:49:136",
                      "nodeType": "YulIdentifier",
                      "src": "8476:49:136"
                    },
                    "nativeSrc": "8476:58:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8476:58:136"
                  },
                  "nativeSrc": "8476:58:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "8476:58:136"
                },
                {
                  "nativeSrc": "8543:17:136",
                  "nodeType": "YulAssignment",
                  "src": "8543:17:136",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "8553:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "8553:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "8543:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "8543:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_userDefinedValueType$_RadonHash_$37153t_int8t_contract$_IWitOracleRadonRegistry_$27394",
            "nativeSrc": "7675:891:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "7811:9:136",
                "nodeType": "YulTypedName",
                "src": "7811:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "7822:7:136",
                "nodeType": "YulTypedName",
                "src": "7822:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "7834:6:136",
                "nodeType": "YulTypedName",
                "src": "7834:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "7842:6:136",
                "nodeType": "YulTypedName",
                "src": "7842:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "7850:6:136",
                "nodeType": "YulTypedName",
                "src": "7850:6:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "7858:6:136",
                "nodeType": "YulTypedName",
                "src": "7858:6:136",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "7866:6:136",
                "nodeType": "YulTypedName",
                "src": "7866:6:136",
                "type": ""
              }
            ],
            "src": "7675:891:136"
          },
          {
            "body": {
              "nativeSrc": "8739:752:136",
              "nodeType": "YulBlock",
              "src": "8739:752:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "8786:16:136",
                    "nodeType": "YulBlock",
                    "src": "8786:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8795:1:136",
                              "nodeType": "YulLiteral",
                              "src": "8795:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8798:1:136",
                              "nodeType": "YulLiteral",
                              "src": "8798:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8788:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "8788:6:136"
                          },
                          "nativeSrc": "8788:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "8788:12:136"
                        },
                        "nativeSrc": "8788:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "8788:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "8760:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "8760:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "8769:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "8769:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "8756:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "8756:3:136"
                        },
                        "nativeSrc": "8756:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "8756:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8781:3:136",
                        "nodeType": "YulLiteral",
                        "src": "8781:3:136",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "8752:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "8752:3:136"
                    },
                    "nativeSrc": "8752:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8752:33:136"
                  },
                  "nativeSrc": "8749:53:136",
                  "nodeType": "YulIf",
                  "src": "8749:53:136"
                },
                {
                  "nativeSrc": "8811:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8811:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "8838:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "8838:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8825:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "8825:12:136"
                    },
                    "nativeSrc": "8825:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8825:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "8815:6:136",
                      "nodeType": "YulTypedName",
                      "src": "8815:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "8891:16:136",
                    "nodeType": "YulBlock",
                    "src": "8891:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8900:1:136",
                              "nodeType": "YulLiteral",
                              "src": "8900:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8903:1:136",
                              "nodeType": "YulLiteral",
                              "src": "8903:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8893:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "8893:6:136"
                          },
                          "nativeSrc": "8893:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "8893:12:136"
                        },
                        "nativeSrc": "8893:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "8893:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "8863:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "8863:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8871:18:136",
                        "nodeType": "YulLiteral",
                        "src": "8871:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "8860:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "8860:2:136"
                    },
                    "nativeSrc": "8860:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8860:30:136"
                  },
                  "nativeSrc": "8857:50:136",
                  "nodeType": "YulIf",
                  "src": "8857:50:136"
                },
                {
                  "nativeSrc": "8916:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8916:85:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8973:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "8973:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "8984:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "8984:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8969:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "8969:3:136"
                        },
                        "nativeSrc": "8969:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "8969:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "8993:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "8993:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "8942:26:136",
                      "nodeType": "YulIdentifier",
                      "src": "8942:26:136"
                    },
                    "nativeSrc": "8942:59:136",
                    "nodeType": "YulFunctionCall",
                    "src": "8942:59:136"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "8920:8:136",
                      "nodeType": "YulTypedName",
                      "src": "8920:8:136",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "8930:8:136",
                      "nodeType": "YulTypedName",
                      "src": "8930:8:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "9010:18:136",
                  "nodeType": "YulAssignment",
                  "src": "9010:18:136",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "9020:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "9020:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "9010:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9010:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "9037:18:136",
                  "nodeType": "YulAssignment",
                  "src": "9037:18:136",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "9047:8:136",
                    "nodeType": "YulIdentifier",
                    "src": "9047:8:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "9037:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9037:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "9064:45:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9064:45:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9094:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "9094:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9105:2:136",
                            "nodeType": "YulLiteral",
                            "src": "9105:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9090:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9090:3:136"
                        },
                        "nativeSrc": "9090:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9090:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9077:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "9077:12:136"
                    },
                    "nativeSrc": "9077:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9077:32:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "9068:5:136",
                      "nodeType": "YulTypedName",
                      "src": "9068:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "9140:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "9140:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_int8",
                      "nativeSrc": "9118:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "9118:21:136"
                    },
                    "nativeSrc": "9118:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9118:28:136"
                  },
                  "nativeSrc": "9118:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9118:28:136"
                },
                {
                  "nativeSrc": "9155:15:136",
                  "nodeType": "YulAssignment",
                  "src": "9155:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "9165:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "9165:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "9155:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9155:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "9179:53:136",
                  "nodeType": "YulAssignment",
                  "src": "9179:53:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9217:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "9217:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9228:2:136",
                            "nodeType": "YulLiteral",
                            "src": "9228:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9213:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9213:3:136"
                        },
                        "nativeSrc": "9213:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9213:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_enum_Oracles",
                      "nativeSrc": "9189:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "9189:23:136"
                    },
                    "nativeSrc": "9189:43:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9189:43:136"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "9179:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9179:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "9241:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9241:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9273:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "9273:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9284:2:136",
                            "nodeType": "YulLiteral",
                            "src": "9284:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9269:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9269:3:136"
                        },
                        "nativeSrc": "9269:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9269:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9256:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "9256:12:136"
                    },
                    "nativeSrc": "9256:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9256:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "9245:7:136",
                      "nodeType": "YulTypedName",
                      "src": "9245:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "9347:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "9347:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_contract_IWitOracleRadonRegistry",
                      "nativeSrc": "9297:49:136",
                      "nodeType": "YulIdentifier",
                      "src": "9297:49:136"
                    },
                    "nativeSrc": "9297:58:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9297:58:136"
                  },
                  "nativeSrc": "9297:58:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9297:58:136"
                },
                {
                  "nativeSrc": "9364:17:136",
                  "nodeType": "YulAssignment",
                  "src": "9364:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "9374:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "9374:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "9364:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9364:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "9390:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9390:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "9405:1:136",
                    "nodeType": "YulLiteral",
                    "src": "9405:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "9394:7:136",
                      "nodeType": "YulTypedName",
                      "src": "9394:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "9415:44:136",
                  "nodeType": "YulAssignment",
                  "src": "9415:44:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9443:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "9443:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9454:3:136",
                            "nodeType": "YulLiteral",
                            "src": "9454:3:136",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9439:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9439:3:136"
                        },
                        "nativeSrc": "9439:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9439:19:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9426:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "9426:12:136"
                    },
                    "nativeSrc": "9426:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9426:33:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "9415:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "9415:7:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "9468:17:136",
                  "nodeType": "YulAssignment",
                  "src": "9468:17:136",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "9478:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "9478:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "9468:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9468:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_int8t_enum$_Oracles_$28092t_addresst_bytes32",
            "nativeSrc": "8571:920:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "8665:9:136",
                "nodeType": "YulTypedName",
                "src": "8665:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "8676:7:136",
                "nodeType": "YulTypedName",
                "src": "8676:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "8688:6:136",
                "nodeType": "YulTypedName",
                "src": "8688:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "8696:6:136",
                "nodeType": "YulTypedName",
                "src": "8696:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "8704:6:136",
                "nodeType": "YulTypedName",
                "src": "8704:6:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "8712:6:136",
                "nodeType": "YulTypedName",
                "src": "8712:6:136",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "8720:6:136",
                "nodeType": "YulTypedName",
                "src": "8720:6:136",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "8728:6:136",
                "nodeType": "YulTypedName",
                "src": "8728:6:136",
                "type": ""
              }
            ],
            "src": "8571:920:136"
          },
          {
            "body": {
              "nativeSrc": "9528:95:136",
              "nodeType": "YulBlock",
              "src": "9528:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "9545:1:136",
                        "nodeType": "YulLiteral",
                        "src": "9545:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "9552:3:136",
                            "nodeType": "YulLiteral",
                            "src": "9552:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9557:10:136",
                            "nodeType": "YulLiteral",
                            "src": "9557:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "9548:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9548:3:136"
                        },
                        "nativeSrc": "9548:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9548:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9538:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9538:6:136"
                    },
                    "nativeSrc": "9538:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9538:31:136"
                  },
                  "nativeSrc": "9538:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9538:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "9585:1:136",
                        "nodeType": "YulLiteral",
                        "src": "9585:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9588:4:136",
                        "nodeType": "YulLiteral",
                        "src": "9588:4:136",
                        "type": "",
                        "value": "0x21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9578:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9578:6:136"
                    },
                    "nativeSrc": "9578:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9578:15:136"
                  },
                  "nativeSrc": "9578:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9578:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "9609:1:136",
                        "nodeType": "YulLiteral",
                        "src": "9609:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9612:4:136",
                        "nodeType": "YulLiteral",
                        "src": "9612:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "9602:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9602:6:136"
                    },
                    "nativeSrc": "9602:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9602:15:136"
                  },
                  "nativeSrc": "9602:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9602:15:136"
                }
              ]
            },
            "name": "panic_error_0x21",
            "nativeSrc": "9496:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "9496:127:136"
          },
          {
            "body": {
              "nativeSrc": "9802:164:136",
              "nodeType": "YulBlock",
              "src": "9802:164:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9819:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "9819:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9830:2:136",
                        "nodeType": "YulLiteral",
                        "src": "9830:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9812:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9812:6:136"
                    },
                    "nativeSrc": "9812:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9812:21:136"
                  },
                  "nativeSrc": "9812:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9812:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9853:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "9853:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9864:2:136",
                            "nodeType": "YulLiteral",
                            "src": "9864:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9849:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9849:3:136"
                        },
                        "nativeSrc": "9849:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9849:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9869:2:136",
                        "nodeType": "YulLiteral",
                        "src": "9869:2:136",
                        "type": "",
                        "value": "14"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9842:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9842:6:136"
                    },
                    "nativeSrc": "9842:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9842:30:136"
                  },
                  "nativeSrc": "9842:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9842:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9892:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "9892:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9903:2:136",
                            "nodeType": "YulLiteral",
                            "src": "9903:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9888:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "9888:3:136"
                        },
                        "nativeSrc": "9888:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "9888:18:136"
                      },
                      {
                        "hexValue": "696e76616c6964206d6170706572",
                        "kind": "string",
                        "nativeSrc": "9908:16:136",
                        "nodeType": "YulLiteral",
                        "src": "9908:16:136",
                        "type": "",
                        "value": "invalid mapper"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9881:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "9881:6:136"
                    },
                    "nativeSrc": "9881:44:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9881:44:136"
                  },
                  "nativeSrc": "9881:44:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "9881:44:136"
                },
                {
                  "nativeSrc": "9934:26:136",
                  "nodeType": "YulAssignment",
                  "src": "9934:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9946:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "9946:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9957:2:136",
                        "nodeType": "YulLiteral",
                        "src": "9957:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "9942:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "9942:3:136"
                    },
                    "nativeSrc": "9942:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "9942:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "9934:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "9934:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_809f0e155c7b29b202426e1a99435b32cc84b804ff533457331b170a97f09736__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "9628:338:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "9779:9:136",
                "nodeType": "YulTypedName",
                "src": "9779:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "9793:4:136",
                "nodeType": "YulTypedName",
                "src": "9793:4:136",
                "type": ""
              }
            ],
            "src": "9628:338:136"
          },
          {
            "body": {
              "nativeSrc": "10145:165:136",
              "nodeType": "YulBlock",
              "src": "10145:165:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10162:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "10162:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10173:2:136",
                        "nodeType": "YulLiteral",
                        "src": "10173:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10155:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10155:6:136"
                    },
                    "nativeSrc": "10155:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10155:21:136"
                  },
                  "nativeSrc": "10155:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "10155:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10196:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "10196:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10207:2:136",
                            "nodeType": "YulLiteral",
                            "src": "10207:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10192:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "10192:3:136"
                        },
                        "nativeSrc": "10192:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "10192:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10212:2:136",
                        "nodeType": "YulLiteral",
                        "src": "10212:2:136",
                        "type": "",
                        "value": "15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10185:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10185:6:136"
                    },
                    "nativeSrc": "10185:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10185:30:136"
                  },
                  "nativeSrc": "10185:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "10185:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10235:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "10235:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10246:2:136",
                            "nodeType": "YulLiteral",
                            "src": "10246:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10231:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "10231:3:136"
                        },
                        "nativeSrc": "10231:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "10231:18:136"
                      },
                      {
                        "hexValue": "616c726561647920736574746c6564",
                        "kind": "string",
                        "nativeSrc": "10251:17:136",
                        "nodeType": "YulLiteral",
                        "src": "10251:17:136",
                        "type": "",
                        "value": "already settled"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10224:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10224:6:136"
                    },
                    "nativeSrc": "10224:45:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10224:45:136"
                  },
                  "nativeSrc": "10224:45:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "10224:45:136"
                },
                {
                  "nativeSrc": "10278:26:136",
                  "nodeType": "YulAssignment",
                  "src": "10278:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10290:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "10290:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10301:2:136",
                        "nodeType": "YulLiteral",
                        "src": "10301:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "10286:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "10286:3:136"
                    },
                    "nativeSrc": "10286:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10286:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "10278:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "10278:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "9971:339:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "10122:9:136",
                "nodeType": "YulTypedName",
                "src": "10122:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "10136:4:136",
                "nodeType": "YulTypedName",
                "src": "10136:4:136",
                "type": ""
              }
            ],
            "src": "9971:339:136"
          },
          {
            "body": {
              "nativeSrc": "10347:95:136",
              "nodeType": "YulBlock",
              "src": "10347:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10364:1:136",
                        "nodeType": "YulLiteral",
                        "src": "10364:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "10371:3:136",
                            "nodeType": "YulLiteral",
                            "src": "10371:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10376:10:136",
                            "nodeType": "YulLiteral",
                            "src": "10376:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "10367:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "10367:3:136"
                        },
                        "nativeSrc": "10367:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "10367:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10357:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10357:6:136"
                    },
                    "nativeSrc": "10357:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10357:31:136"
                  },
                  "nativeSrc": "10357:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "10357:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10404:1:136",
                        "nodeType": "YulLiteral",
                        "src": "10404:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10407:4:136",
                        "nodeType": "YulLiteral",
                        "src": "10407:4:136",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10397:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10397:6:136"
                    },
                    "nativeSrc": "10397:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10397:15:136"
                  },
                  "nativeSrc": "10397:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "10397:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10428:1:136",
                        "nodeType": "YulLiteral",
                        "src": "10428:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10431:4:136",
                        "nodeType": "YulLiteral",
                        "src": "10431:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "10421:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10421:6:136"
                    },
                    "nativeSrc": "10421:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10421:15:136"
                  },
                  "nativeSrc": "10421:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "10421:15:136"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nativeSrc": "10315:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "10315:127:136"
          },
          {
            "body": {
              "nativeSrc": "10542:427:136",
              "nodeType": "YulBlock",
              "src": "10542:427:136",
              "statements": [
                {
                  "nativeSrc": "10552:51:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10552:51:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "10591:11:136",
                        "nodeType": "YulIdentifier",
                        "src": "10591:11:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10578:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "10578:12:136"
                    },
                    "nativeSrc": "10578:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10578:25:136"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "10556:18:136",
                      "nodeType": "YulTypedName",
                      "src": "10556:18:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10692:16:136",
                    "nodeType": "YulBlock",
                    "src": "10692:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10701:1:136",
                              "nodeType": "YulLiteral",
                              "src": "10701:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10704:1:136",
                              "nodeType": "YulLiteral",
                              "src": "10704:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10694:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "10694:6:136"
                          },
                          "nativeSrc": "10694:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "10694:12:136"
                        },
                        "nativeSrc": "10694:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "10694:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "10626:18:136",
                            "nodeType": "YulIdentifier",
                            "src": "10626:18:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "10654:12:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "10654:12:136"
                                    },
                                    "nativeSrc": "10654:14:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10654:14:136"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "10670:8:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "10670:8:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "10650:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "10650:3:136"
                                },
                                "nativeSrc": "10650:29:136",
                                "nodeType": "YulFunctionCall",
                                "src": "10650:29:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "10685:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "10685:2:136",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "10681:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "10681:3:136"
                                },
                                "nativeSrc": "10681:7:136",
                                "nodeType": "YulFunctionCall",
                                "src": "10681:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "10646:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "10646:3:136"
                            },
                            "nativeSrc": "10646:43:136",
                            "nodeType": "YulFunctionCall",
                            "src": "10646:43:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "10622:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "10622:3:136"
                        },
                        "nativeSrc": "10622:68:136",
                        "nodeType": "YulFunctionCall",
                        "src": "10622:68:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "10615:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10615:6:136"
                    },
                    "nativeSrc": "10615:76:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10615:76:136"
                  },
                  "nativeSrc": "10612:96:136",
                  "nodeType": "YulIf",
                  "src": "10612:96:136"
                },
                {
                  "nativeSrc": "10717:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10717:47:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "10735:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "10735:8:136"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "10745:18:136",
                        "nodeType": "YulIdentifier",
                        "src": "10745:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "10731:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "10731:3:136"
                    },
                    "nativeSrc": "10731:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10731:33:136"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "10721:6:136",
                      "nodeType": "YulTypedName",
                      "src": "10721:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "10773:30:136",
                  "nodeType": "YulAssignment",
                  "src": "10773:30:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "10796:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "10796:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10783:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "10783:12:136"
                    },
                    "nativeSrc": "10783:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10783:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "10773:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "10773:6:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10846:16:136",
                    "nodeType": "YulBlock",
                    "src": "10846:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10855:1:136",
                              "nodeType": "YulLiteral",
                              "src": "10855:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10858:1:136",
                              "nodeType": "YulLiteral",
                              "src": "10858:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10848:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "10848:6:136"
                          },
                          "nativeSrc": "10848:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "10848:12:136"
                        },
                        "nativeSrc": "10848:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "10848:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "10818:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "10818:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10826:18:136",
                        "nodeType": "YulLiteral",
                        "src": "10826:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "10815:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "10815:2:136"
                    },
                    "nativeSrc": "10815:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10815:30:136"
                  },
                  "nativeSrc": "10812:50:136",
                  "nodeType": "YulIf",
                  "src": "10812:50:136"
                },
                {
                  "nativeSrc": "10871:25:136",
                  "nodeType": "YulAssignment",
                  "src": "10871:25:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "10883:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "10883:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10891:4:136",
                        "nodeType": "YulLiteral",
                        "src": "10891:4:136",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "10879:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "10879:3:136"
                    },
                    "nativeSrc": "10879:17:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10879:17:136"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "10871:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "10871:4:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10947:16:136",
                    "nodeType": "YulBlock",
                    "src": "10947:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10956:1:136",
                              "nodeType": "YulLiteral",
                              "src": "10956:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10959:1:136",
                              "nodeType": "YulLiteral",
                              "src": "10959:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10949:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "10949:6:136"
                          },
                          "nativeSrc": "10949:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "10949:12:136"
                        },
                        "nativeSrc": "10949:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "10949:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "10912:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "10912:4:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "10922:12:136",
                              "nodeType": "YulIdentifier",
                              "src": "10922:12:136"
                            },
                            "nativeSrc": "10922:14:136",
                            "nodeType": "YulFunctionCall",
                            "src": "10922:14:136"
                          },
                          {
                            "name": "length",
                            "nativeSrc": "10938:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "10938:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "10918:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "10918:3:136"
                        },
                        "nativeSrc": "10918:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "10918:27:136"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "10908:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "10908:3:136"
                    },
                    "nativeSrc": "10908:38:136",
                    "nodeType": "YulFunctionCall",
                    "src": "10908:38:136"
                  },
                  "nativeSrc": "10905:58:136",
                  "nodeType": "YulIf",
                  "src": "10905:58:136"
                }
              ]
            },
            "name": "access_calldata_tail_t_string_calldata_ptr",
            "nativeSrc": "10447:522:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "10499:8:136",
                "nodeType": "YulTypedName",
                "src": "10499:8:136",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "10509:11:136",
                "nodeType": "YulTypedName",
                "src": "10509:11:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "10525:4:136",
                "nodeType": "YulTypedName",
                "src": "10525:4:136",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "10531:6:136",
                "nodeType": "YulTypedName",
                "src": "10531:6:136",
                "type": ""
              }
            ],
            "src": "10447:522:136"
          },
          {
            "body": {
              "nativeSrc": "11224:190:136",
              "nodeType": "YulBlock",
              "src": "11224:190:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "11241:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "11241:3:136"
                      },
                      {
                        "hexValue": "756e737570706f7274656420646570656e64656e63793a20",
                        "kind": "string",
                        "nativeSrc": "11246:26:136",
                        "nodeType": "YulLiteral",
                        "src": "11246:26:136",
                        "type": "",
                        "value": "unsupported dependency: "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11234:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11234:6:136"
                    },
                    "nativeSrc": "11234:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11234:39:136"
                  },
                  "nativeSrc": "11234:39:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11234:39:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "11299:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "11299:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11304:2:136",
                            "nodeType": "YulLiteral",
                            "src": "11304:2:136",
                            "type": "",
                            "value": "24"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11295:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "11295:3:136"
                        },
                        "nativeSrc": "11295:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "11295:12:136"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "11309:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "11309:6:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "11317:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "11317:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "11282:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "11282:12:136"
                    },
                    "nativeSrc": "11282:42:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11282:42:136"
                  },
                  "nativeSrc": "11282:42:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11282:42:136"
                },
                {
                  "nativeSrc": "11333:35:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11333:35:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "11351:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "11351:3:136"
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "11356:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "11356:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11347:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "11347:3:136"
                        },
                        "nativeSrc": "11347:16:136",
                        "nodeType": "YulFunctionCall",
                        "src": "11347:16:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11365:2:136",
                        "nodeType": "YulLiteral",
                        "src": "11365:2:136",
                        "type": "",
                        "value": "24"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "11343:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "11343:3:136"
                    },
                    "nativeSrc": "11343:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11343:25:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "11337:2:136",
                      "nodeType": "YulTypedName",
                      "src": "11337:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "11384:2:136",
                        "nodeType": "YulIdentifier",
                        "src": "11384:2:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11388:1:136",
                        "nodeType": "YulLiteral",
                        "src": "11388:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11377:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11377:6:136"
                    },
                    "nativeSrc": "11377:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11377:13:136"
                  },
                  "nativeSrc": "11377:13:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11377:13:136"
                },
                {
                  "nativeSrc": "11399:9:136",
                  "nodeType": "YulAssignment",
                  "src": "11399:9:136",
                  "value": {
                    "name": "_1",
                    "nativeSrc": "11406:2:136",
                    "nodeType": "YulIdentifier",
                    "src": "11406:2:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "11399:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "11399:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_c4817b49b492749dc4c5d87e718385ac4b07031a6786852243ff5d14be9ce7b1_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "10974:440:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "11192:3:136",
                "nodeType": "YulTypedName",
                "src": "11192:3:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "11197:6:136",
                "nodeType": "YulTypedName",
                "src": "11197:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "11205:6:136",
                "nodeType": "YulTypedName",
                "src": "11205:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "11216:3:136",
                "nodeType": "YulTypedName",
                "src": "11216:3:136",
                "type": ""
              }
            ],
            "src": "10974:440:136"
          },
          {
            "body": {
              "nativeSrc": "11540:99:136",
              "nodeType": "YulBlock",
              "src": "11540:99:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "11557:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "11557:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11568:2:136",
                        "nodeType": "YulLiteral",
                        "src": "11568:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11550:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11550:6:136"
                    },
                    "nativeSrc": "11550:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11550:21:136"
                  },
                  "nativeSrc": "11550:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11550:21:136"
                },
                {
                  "nativeSrc": "11580:53:136",
                  "nodeType": "YulAssignment",
                  "src": "11580:53:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "11606:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "11606:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "11618:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "11618:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11629:2:136",
                            "nodeType": "YulLiteral",
                            "src": "11629:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11614:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "11614:3:136"
                        },
                        "nativeSrc": "11614:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "11614:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "11588:17:136",
                      "nodeType": "YulIdentifier",
                      "src": "11588:17:136"
                    },
                    "nativeSrc": "11588:45:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11588:45:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "11580:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "11580:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "11419:220:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "11509:9:136",
                "nodeType": "YulTypedName",
                "src": "11509:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "11520:6:136",
                "nodeType": "YulTypedName",
                "src": "11520:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "11531:4:136",
                "nodeType": "YulTypedName",
                "src": "11531:4:136",
                "type": ""
              }
            ],
            "src": "11419:220:136"
          },
          {
            "body": {
              "nativeSrc": "11676:95:136",
              "nodeType": "YulBlock",
              "src": "11676:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "11693:1:136",
                        "nodeType": "YulLiteral",
                        "src": "11693:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "11700:3:136",
                            "nodeType": "YulLiteral",
                            "src": "11700:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11705:10:136",
                            "nodeType": "YulLiteral",
                            "src": "11705:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "11696:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "11696:3:136"
                        },
                        "nativeSrc": "11696:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "11696:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11686:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11686:6:136"
                    },
                    "nativeSrc": "11686:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11686:31:136"
                  },
                  "nativeSrc": "11686:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11686:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "11733:1:136",
                        "nodeType": "YulLiteral",
                        "src": "11733:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11736:4:136",
                        "nodeType": "YulLiteral",
                        "src": "11736:4:136",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11726:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11726:6:136"
                    },
                    "nativeSrc": "11726:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11726:15:136"
                  },
                  "nativeSrc": "11726:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11726:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "11757:1:136",
                        "nodeType": "YulLiteral",
                        "src": "11757:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11760:4:136",
                        "nodeType": "YulLiteral",
                        "src": "11760:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "11750:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11750:6:136"
                    },
                    "nativeSrc": "11750:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11750:15:136"
                  },
                  "nativeSrc": "11750:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "11750:15:136"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nativeSrc": "11644:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "11644:127:136"
          },
          {
            "body": {
              "nativeSrc": "11828:116:136",
              "nodeType": "YulBlock",
              "src": "11828:116:136",
              "statements": [
                {
                  "nativeSrc": "11838:20:136",
                  "nodeType": "YulAssignment",
                  "src": "11838:20:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "11853:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "11853:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "11856:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "11856:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "11849:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "11849:3:136"
                    },
                    "nativeSrc": "11849:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11849:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nativeSrc": "11838:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "11838:7:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "11916:22:136",
                    "nodeType": "YulBlock",
                    "src": "11916:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "11918:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "11918:16:136"
                          },
                          "nativeSrc": "11918:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "11918:18:136"
                        },
                        "nativeSrc": "11918:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "11918:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "11887:1:136",
                                "nodeType": "YulIdentifier",
                                "src": "11887:1:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "11880:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "11880:6:136"
                            },
                            "nativeSrc": "11880:9:136",
                            "nodeType": "YulFunctionCall",
                            "src": "11880:9:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nativeSrc": "11894:1:136",
                                "nodeType": "YulIdentifier",
                                "src": "11894:1:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nativeSrc": "11901:7:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "11901:7:136"
                                  },
                                  {
                                    "name": "x",
                                    "nativeSrc": "11910:1:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "11910:1:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "11897:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "11897:3:136"
                                },
                                "nativeSrc": "11897:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "11897:15:136"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nativeSrc": "11891:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "11891:2:136"
                            },
                            "nativeSrc": "11891:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "11891:22:136"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "11877:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "11877:2:136"
                        },
                        "nativeSrc": "11877:37:136",
                        "nodeType": "YulFunctionCall",
                        "src": "11877:37:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "11870:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "11870:6:136"
                    },
                    "nativeSrc": "11870:45:136",
                    "nodeType": "YulFunctionCall",
                    "src": "11870:45:136"
                  },
                  "nativeSrc": "11867:71:136",
                  "nodeType": "YulIf",
                  "src": "11867:71:136"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nativeSrc": "11776:168:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "11807:1:136",
                "nodeType": "YulTypedName",
                "src": "11807:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "11810:1:136",
                "nodeType": "YulTypedName",
                "src": "11810:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nativeSrc": "11816:7:136",
                "nodeType": "YulTypedName",
                "src": "11816:7:136",
                "type": ""
              }
            ],
            "src": "11776:168:136"
          },
          {
            "body": {
              "nativeSrc": "12123:167:136",
              "nodeType": "YulBlock",
              "src": "12123:167:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "12140:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "12140:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12151:2:136",
                        "nodeType": "YulLiteral",
                        "src": "12151:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "12133:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "12133:6:136"
                    },
                    "nativeSrc": "12133:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12133:21:136"
                  },
                  "nativeSrc": "12133:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12133:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12174:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "12174:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12185:2:136",
                            "nodeType": "YulLiteral",
                            "src": "12185:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12170:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12170:3:136"
                        },
                        "nativeSrc": "12170:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12170:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12190:2:136",
                        "nodeType": "YulLiteral",
                        "src": "12190:2:136",
                        "type": "",
                        "value": "17"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "12163:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "12163:6:136"
                    },
                    "nativeSrc": "12163:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12163:30:136"
                  },
                  "nativeSrc": "12163:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12163:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12213:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "12213:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12224:2:136",
                            "nodeType": "YulLiteral",
                            "src": "12224:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12209:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12209:3:136"
                        },
                        "nativeSrc": "12209:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12209:18:136"
                      },
                      {
                        "hexValue": "6e6f207261646f6e207265676973747279",
                        "kind": "string",
                        "nativeSrc": "12229:19:136",
                        "nodeType": "YulLiteral",
                        "src": "12229:19:136",
                        "type": "",
                        "value": "no radon registry"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "12202:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "12202:6:136"
                    },
                    "nativeSrc": "12202:47:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12202:47:136"
                  },
                  "nativeSrc": "12202:47:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12202:47:136"
                },
                {
                  "nativeSrc": "12258:26:136",
                  "nodeType": "YulAssignment",
                  "src": "12258:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "12270:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "12270:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12281:2:136",
                        "nodeType": "YulLiteral",
                        "src": "12281:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "12266:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "12266:3:136"
                    },
                    "nativeSrc": "12266:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12266:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "12258:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "12258:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_18e60ef26cca66661097989f5663d0ff1ec5851de7f73febcc41138e594a33bb__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "11949:341:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "12100:9:136",
                "nodeType": "YulTypedName",
                "src": "12100:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "12114:4:136",
                "nodeType": "YulTypedName",
                "src": "12114:4:136",
                "type": ""
              }
            ],
            "src": "11949:341:136"
          },
          {
            "body": {
              "nativeSrc": "12361:200:136",
              "nodeType": "YulBlock",
              "src": "12361:200:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "12378:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "12378:3:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "12383:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "12383:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "12371:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "12371:6:136"
                    },
                    "nativeSrc": "12371:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12371:19:136"
                  },
                  "nativeSrc": "12371:19:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12371:19:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "12416:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "12416:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12421:4:136",
                            "nodeType": "YulLiteral",
                            "src": "12421:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12412:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12412:3:136"
                        },
                        "nativeSrc": "12412:14:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12412:14:136"
                      },
                      {
                        "name": "start",
                        "nativeSrc": "12428:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "12428:5:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "12435:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "12435:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "12399:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "12399:12:136"
                    },
                    "nativeSrc": "12399:43:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12399:43:136"
                  },
                  "nativeSrc": "12399:43:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12399:43:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nativeSrc": "12466:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "12466:3:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "12471:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "12471:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "12462:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "12462:3:136"
                            },
                            "nativeSrc": "12462:16:136",
                            "nodeType": "YulFunctionCall",
                            "src": "12462:16:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12480:4:136",
                            "nodeType": "YulLiteral",
                            "src": "12480:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12458:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12458:3:136"
                        },
                        "nativeSrc": "12458:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12458:27:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12487:1:136",
                        "nodeType": "YulLiteral",
                        "src": "12487:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "12451:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "12451:6:136"
                    },
                    "nativeSrc": "12451:38:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12451:38:136"
                  },
                  "nativeSrc": "12451:38:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12451:38:136"
                },
                {
                  "nativeSrc": "12498:57:136",
                  "nodeType": "YulAssignment",
                  "src": "12498:57:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "12513:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "12513:3:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "12526:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "12526:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "12534:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "12534:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "12522:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "12522:3:136"
                                },
                                "nativeSrc": "12522:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "12522:15:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "12543:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "12543:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "12539:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "12539:3:136"
                                },
                                "nativeSrc": "12539:7:136",
                                "nodeType": "YulFunctionCall",
                                "src": "12539:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "12518:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "12518:3:136"
                            },
                            "nativeSrc": "12518:29:136",
                            "nodeType": "YulFunctionCall",
                            "src": "12518:29:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12509:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12509:3:136"
                        },
                        "nativeSrc": "12509:39:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12509:39:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12550:4:136",
                        "nodeType": "YulLiteral",
                        "src": "12550:4:136",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "12505:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "12505:3:136"
                    },
                    "nativeSrc": "12505:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12505:50:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "12498:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "12498:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes_calldata",
            "nativeSrc": "12295:266:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "start",
                "nativeSrc": "12330:5:136",
                "nodeType": "YulTypedName",
                "src": "12330:5:136",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "12337:6:136",
                "nodeType": "YulTypedName",
                "src": "12337:6:136",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "12345:3:136",
                "nodeType": "YulTypedName",
                "src": "12345:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "12353:3:136",
                "nodeType": "YulTypedName",
                "src": "12353:3:136",
                "type": ""
              }
            ],
            "src": "12295:266:136"
          },
          {
            "body": {
              "nativeSrc": "12695:115:136",
              "nodeType": "YulBlock",
              "src": "12695:115:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "12712:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "12712:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12723:2:136",
                        "nodeType": "YulLiteral",
                        "src": "12723:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "12705:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "12705:6:136"
                    },
                    "nativeSrc": "12705:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12705:21:136"
                  },
                  "nativeSrc": "12705:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "12705:21:136"
                },
                {
                  "nativeSrc": "12735:69:136",
                  "nodeType": "YulAssignment",
                  "src": "12735:69:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "12769:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "12769:6:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "12777:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "12777:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12789:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "12789:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12800:2:136",
                            "nodeType": "YulLiteral",
                            "src": "12800:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12785:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12785:3:136"
                        },
                        "nativeSrc": "12785:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12785:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_calldata",
                      "nativeSrc": "12743:25:136",
                      "nodeType": "YulIdentifier",
                      "src": "12743:25:136"
                    },
                    "nativeSrc": "12743:61:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12743:61:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "12735:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "12735:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
            "nativeSrc": "12566:244:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "12656:9:136",
                "nodeType": "YulTypedName",
                "src": "12656:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "12667:6:136",
                "nodeType": "YulTypedName",
                "src": "12667:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "12675:6:136",
                "nodeType": "YulTypedName",
                "src": "12675:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "12686:4:136",
                "nodeType": "YulTypedName",
                "src": "12686:4:136",
                "type": ""
              }
            ],
            "src": "12566:244:136"
          },
          {
            "body": {
              "nativeSrc": "12927:149:136",
              "nodeType": "YulBlock",
              "src": "12927:149:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "12973:16:136",
                    "nodeType": "YulBlock",
                    "src": "12973:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12982:1:136",
                              "nodeType": "YulLiteral",
                              "src": "12982:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12985:1:136",
                              "nodeType": "YulLiteral",
                              "src": "12985:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12975:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "12975:6:136"
                          },
                          "nativeSrc": "12975:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "12975:12:136"
                        },
                        "nativeSrc": "12975:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "12975:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "12948:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "12948:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "12957:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "12957:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "12944:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "12944:3:136"
                        },
                        "nativeSrc": "12944:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "12944:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12969:2:136",
                        "nodeType": "YulLiteral",
                        "src": "12969:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "12940:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "12940:3:136"
                    },
                    "nativeSrc": "12940:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "12940:32:136"
                  },
                  "nativeSrc": "12937:52:136",
                  "nodeType": "YulIf",
                  "src": "12937:52:136"
                },
                {
                  "nativeSrc": "12998:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12998:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "13011:1:136",
                    "nodeType": "YulLiteral",
                    "src": "13011:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "13002:5:136",
                      "nodeType": "YulTypedName",
                      "src": "13002:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "13021:25:136",
                  "nodeType": "YulAssignment",
                  "src": "13021:25:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13036:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "13036:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "13030:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "13030:5:136"
                    },
                    "nativeSrc": "13030:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13030:16:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "13021:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "13021:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "13055:15:136",
                  "nodeType": "YulAssignment",
                  "src": "13055:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "13065:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "13065:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "13055:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13055:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_userDefinedValueType$_RadonHash_$37153_fromMemory",
            "nativeSrc": "12815:261:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "12893:9:136",
                "nodeType": "YulTypedName",
                "src": "12893:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "12904:7:136",
                "nodeType": "YulTypedName",
                "src": "12904:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "12916:6:136",
                "nodeType": "YulTypedName",
                "src": "12916:6:136",
                "type": ""
              }
            ],
            "src": "12815:261:136"
          },
          {
            "body": {
              "nativeSrc": "13255:168:136",
              "nodeType": "YulBlock",
              "src": "13255:168:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13272:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "13272:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13283:2:136",
                        "nodeType": "YulLiteral",
                        "src": "13283:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13265:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13265:6:136"
                    },
                    "nativeSrc": "13265:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13265:21:136"
                  },
                  "nativeSrc": "13265:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13265:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13306:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "13306:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13317:2:136",
                            "nodeType": "YulLiteral",
                            "src": "13317:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13302:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "13302:3:136"
                        },
                        "nativeSrc": "13302:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13302:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13322:2:136",
                        "nodeType": "YulLiteral",
                        "src": "13322:2:136",
                        "type": "",
                        "value": "18"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13295:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13295:6:136"
                    },
                    "nativeSrc": "13295:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13295:30:136"
                  },
                  "nativeSrc": "13295:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13295:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13345:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "13345:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13356:2:136",
                            "nodeType": "YulLiteral",
                            "src": "13356:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13341:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "13341:3:136"
                        },
                        "nativeSrc": "13341:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13341:18:136"
                      },
                      {
                        "hexValue": "756e737570706f72746564206f7261636c65",
                        "kind": "string",
                        "nativeSrc": "13361:20:136",
                        "nodeType": "YulLiteral",
                        "src": "13361:20:136",
                        "type": "",
                        "value": "unsupported oracle"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13334:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13334:6:136"
                    },
                    "nativeSrc": "13334:48:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13334:48:136"
                  },
                  "nativeSrc": "13334:48:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13334:48:136"
                },
                {
                  "nativeSrc": "13391:26:136",
                  "nodeType": "YulAssignment",
                  "src": "13391:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13403:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "13403:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13414:2:136",
                        "nodeType": "YulLiteral",
                        "src": "13414:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "13399:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "13399:3:136"
                    },
                    "nativeSrc": "13399:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13399:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "13391:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "13391:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f30ababf750e10f193dd18fcf701efc6a2350e853cd574d27cf4488fa0a72c5a__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "13081:342:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "13232:9:136",
                "nodeType": "YulTypedName",
                "src": "13232:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "13246:4:136",
                "nodeType": "YulTypedName",
                "src": "13246:4:136",
                "type": ""
              }
            ],
            "src": "13081:342:136"
          },
          {
            "body": {
              "nativeSrc": "13579:161:136",
              "nodeType": "YulBlock",
              "src": "13579:161:136",
              "statements": [
                {
                  "nativeSrc": "13589:26:136",
                  "nodeType": "YulAssignment",
                  "src": "13589:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13601:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "13601:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13612:2:136",
                        "nodeType": "YulLiteral",
                        "src": "13612:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "13597:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "13597:3:136"
                    },
                    "nativeSrc": "13597:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13597:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "13589:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "13589:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13631:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "13631:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "13646:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "13646:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13658:3:136",
                                "nodeType": "YulLiteral",
                                "src": "13658:3:136",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "13663:10:136",
                                "nodeType": "YulLiteral",
                                "src": "13663:10:136",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13654:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "13654:3:136"
                            },
                            "nativeSrc": "13654:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "13654:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "13642:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "13642:3:136"
                        },
                        "nativeSrc": "13642:33:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13642:33:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13624:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13624:6:136"
                    },
                    "nativeSrc": "13624:52:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13624:52:136"
                  },
                  "nativeSrc": "13624:52:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13624:52:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13696:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "13696:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13707:2:136",
                            "nodeType": "YulLiteral",
                            "src": "13707:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13692:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "13692:3:136"
                        },
                        "nativeSrc": "13692:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13692:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "13716:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "13716:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13724:8:136",
                            "nodeType": "YulLiteral",
                            "src": "13724:8:136",
                            "type": "",
                            "value": "0xffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "13712:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "13712:3:136"
                        },
                        "nativeSrc": "13712:21:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13712:21:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13685:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13685:6:136"
                    },
                    "nativeSrc": "13685:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13685:49:136"
                  },
                  "nativeSrc": "13685:49:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13685:49:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_userDefinedValueType$_ID4_$28155_t_uint24__to_t_bytes4_t_uint24__fromStack_reversed",
            "nativeSrc": "13428:312:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "13540:9:136",
                "nodeType": "YulTypedName",
                "src": "13540:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "13551:6:136",
                "nodeType": "YulTypedName",
                "src": "13551:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "13559:6:136",
                "nodeType": "YulTypedName",
                "src": "13559:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "13570:4:136",
                "nodeType": "YulTypedName",
                "src": "13570:4:136",
                "type": ""
              }
            ],
            "src": "13428:312:136"
          },
          {
            "body": {
              "nativeSrc": "13777:95:136",
              "nodeType": "YulBlock",
              "src": "13777:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "13794:1:136",
                        "nodeType": "YulLiteral",
                        "src": "13794:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "13801:3:136",
                            "nodeType": "YulLiteral",
                            "src": "13801:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13806:10:136",
                            "nodeType": "YulLiteral",
                            "src": "13806:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "13797:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "13797:3:136"
                        },
                        "nativeSrc": "13797:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13797:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13787:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13787:6:136"
                    },
                    "nativeSrc": "13787:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13787:31:136"
                  },
                  "nativeSrc": "13787:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13787:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "13834:1:136",
                        "nodeType": "YulLiteral",
                        "src": "13834:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13837:4:136",
                        "nodeType": "YulLiteral",
                        "src": "13837:4:136",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13827:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13827:6:136"
                    },
                    "nativeSrc": "13827:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13827:15:136"
                  },
                  "nativeSrc": "13827:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13827:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "13858:1:136",
                        "nodeType": "YulLiteral",
                        "src": "13858:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13861:4:136",
                        "nodeType": "YulLiteral",
                        "src": "13861:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "13851:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13851:6:136"
                    },
                    "nativeSrc": "13851:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13851:15:136"
                  },
                  "nativeSrc": "13851:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "13851:15:136"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "13745:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "13745:127:136"
          },
          {
            "body": {
              "nativeSrc": "13921:85:136",
              "nodeType": "YulBlock",
              "src": "13921:85:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "13984:16:136",
                    "nodeType": "YulBlock",
                    "src": "13984:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "13993:1:136",
                              "nodeType": "YulLiteral",
                              "src": "13993:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "13996:1:136",
                              "nodeType": "YulLiteral",
                              "src": "13996:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "13986:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "13986:6:136"
                          },
                          "nativeSrc": "13986:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "13986:12:136"
                        },
                        "nativeSrc": "13986:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "13986:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "13944:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "13944:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "13955:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "13955:5:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "13962:18:136",
                                "nodeType": "YulLiteral",
                                "src": "13962:18:136",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "13951:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "13951:3:136"
                            },
                            "nativeSrc": "13951:30:136",
                            "nodeType": "YulFunctionCall",
                            "src": "13951:30:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "13941:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "13941:2:136"
                        },
                        "nativeSrc": "13941:41:136",
                        "nodeType": "YulFunctionCall",
                        "src": "13941:41:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "13934:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "13934:6:136"
                    },
                    "nativeSrc": "13934:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "13934:49:136"
                  },
                  "nativeSrc": "13931:69:136",
                  "nodeType": "YulIf",
                  "src": "13931:69:136"
                }
              ]
            },
            "name": "validator_revert_uint64",
            "nativeSrc": "13877:129:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "13910:5:136",
                "nodeType": "YulTypedName",
                "src": "13910:5:136",
                "type": ""
              }
            ],
            "src": "13877:129:136"
          },
          {
            "body": {
              "nativeSrc": "14116:996:136",
              "nodeType": "YulBlock",
              "src": "14116:996:136",
              "statements": [
                {
                  "nativeSrc": "14126:43:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14126:43:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "14144:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "14144:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "14153:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "14153:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "14140:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14140:3:136"
                        },
                        "nativeSrc": "14140:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14140:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14165:3:136",
                        "nodeType": "YulLiteral",
                        "src": "14165:3:136",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "14136:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "14136:3:136"
                    },
                    "nativeSrc": "14136:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14136:33:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "14130:2:136",
                      "nodeType": "YulTypedName",
                      "src": "14130:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "14184:16:136",
                    "nodeType": "YulBlock",
                    "src": "14184:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "14193:1:136",
                              "nodeType": "YulLiteral",
                              "src": "14193:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "14196:1:136",
                              "nodeType": "YulLiteral",
                              "src": "14196:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "14186:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "14186:6:136"
                          },
                          "nativeSrc": "14186:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "14186:12:136"
                        },
                        "nativeSrc": "14186:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "14186:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "name": "_1",
                    "nativeSrc": "14181:2:136",
                    "nodeType": "YulIdentifier",
                    "src": "14181:2:136"
                  },
                  "nativeSrc": "14178:22:136",
                  "nodeType": "YulIf",
                  "src": "14178:22:136"
                },
                {
                  "nativeSrc": "14209:7:136",
                  "nodeType": "YulAssignment",
                  "src": "14209:7:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "14215:1:136",
                    "nodeType": "YulLiteral",
                    "src": "14215:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variableNames": [
                    {
                      "name": "_1",
                      "nativeSrc": "14209:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "14209:2:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "14225:15:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14225:15:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "14239:1:136",
                    "nodeType": "YulLiteral",
                    "src": "14239:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "14229:6:136",
                      "nodeType": "YulTypedName",
                      "src": "14229:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "14249:19:136",
                  "nodeType": "YulAssignment",
                  "src": "14249:19:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "14265:2:136",
                        "nodeType": "YulLiteral",
                        "src": "14265:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "14259:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "14259:5:136"
                    },
                    "nativeSrc": "14259:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14259:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "14249:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14249:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "14277:34:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14277:34:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "14299:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "14299:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14307:3:136",
                        "nodeType": "YulLiteral",
                        "src": "14307:3:136",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "14295:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "14295:3:136"
                    },
                    "nativeSrc": "14295:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14295:16:136"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "14281:10:136",
                      "nodeType": "YulTypedName",
                      "src": "14281:10:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "14386:22:136",
                    "nodeType": "YulBlock",
                    "src": "14386:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "14388:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "14388:16:136"
                          },
                          "nativeSrc": "14388:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "14388:18:136"
                        },
                        "nativeSrc": "14388:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "14388:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "14329:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "14329:10:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14341:18:136",
                            "nodeType": "YulLiteral",
                            "src": "14341:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "14326:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "14326:2:136"
                        },
                        "nativeSrc": "14326:34:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14326:34:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "14365:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "14365:10:136"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "14377:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "14377:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "14362:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "14362:2:136"
                        },
                        "nativeSrc": "14362:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14362:22:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "14323:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "14323:2:136"
                    },
                    "nativeSrc": "14323:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14323:62:136"
                  },
                  "nativeSrc": "14320:88:136",
                  "nodeType": "YulIf",
                  "src": "14320:88:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "14424:2:136",
                        "nodeType": "YulLiteral",
                        "src": "14424:2:136",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "14428:10:136",
                        "nodeType": "YulIdentifier",
                        "src": "14428:10:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14417:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14417:6:136"
                    },
                    "nativeSrc": "14417:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14417:22:136"
                  },
                  "nativeSrc": "14417:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14417:22:136"
                },
                {
                  "nativeSrc": "14448:29:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14448:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "14467:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "14467:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "14461:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "14461:5:136"
                    },
                    "nativeSrc": "14461:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14461:16:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "14452:5:136",
                      "nodeType": "YulTypedName",
                      "src": "14452:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "14508:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "14508:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_int8",
                      "nativeSrc": "14486:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "14486:21:136"
                    },
                    "nativeSrc": "14486:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14486:28:136"
                  },
                  "nativeSrc": "14486:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14486:28:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "14530:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "14530:6:136"
                      },
                      {
                        "name": "value",
                        "nativeSrc": "14538:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "14538:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14523:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14523:6:136"
                    },
                    "nativeSrc": "14523:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14523:21:136"
                  },
                  "nativeSrc": "14523:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14523:21:136"
                },
                {
                  "nativeSrc": "14553:40:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14553:40:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14578:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "14578:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14589:2:136",
                            "nodeType": "YulLiteral",
                            "src": "14589:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14574:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14574:3:136"
                        },
                        "nativeSrc": "14574:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14574:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "14568:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "14568:5:136"
                    },
                    "nativeSrc": "14568:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14568:25:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "14557:7:136",
                      "nodeType": "YulTypedName",
                      "src": "14557:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "14626:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "14626:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint64",
                      "nativeSrc": "14602:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "14602:23:136"
                    },
                    "nativeSrc": "14602:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14602:32:136"
                  },
                  "nativeSrc": "14602:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14602:32:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "14654:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "14654:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14662:2:136",
                            "nodeType": "YulLiteral",
                            "src": "14662:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14650:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14650:3:136"
                        },
                        "nativeSrc": "14650:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14650:15:136"
                      },
                      {
                        "name": "value_1",
                        "nativeSrc": "14667:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "14667:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14643:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14643:6:136"
                    },
                    "nativeSrc": "14643:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14643:32:136"
                  },
                  "nativeSrc": "14643:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14643:32:136"
                },
                {
                  "nativeSrc": "14684:40:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14684:40:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14709:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "14709:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14720:2:136",
                            "nodeType": "YulLiteral",
                            "src": "14720:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14705:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14705:3:136"
                        },
                        "nativeSrc": "14705:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14705:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "14699:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "14699:5:136"
                    },
                    "nativeSrc": "14699:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14699:25:136"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "14688:7:136",
                      "nodeType": "YulTypedName",
                      "src": "14688:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "14780:16:136",
                    "nodeType": "YulBlock",
                    "src": "14780:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "14789:1:136",
                              "nodeType": "YulLiteral",
                              "src": "14789:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "14792:1:136",
                              "nodeType": "YulLiteral",
                              "src": "14792:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "14782:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "14782:6:136"
                          },
                          "nativeSrc": "14782:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "14782:12:136"
                        },
                        "nativeSrc": "14782:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "14782:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_2",
                            "nativeSrc": "14746:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "14746:7:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "14766:1:136",
                                "nodeType": "YulLiteral",
                                "src": "14766:1:136",
                                "type": "",
                                "value": "6"
                              },
                              {
                                "name": "value_2",
                                "nativeSrc": "14769:7:136",
                                "nodeType": "YulIdentifier",
                                "src": "14769:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "signextend",
                              "nativeSrc": "14755:10:136",
                              "nodeType": "YulIdentifier",
                              "src": "14755:10:136"
                            },
                            "nativeSrc": "14755:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "14755:22:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "14743:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "14743:2:136"
                        },
                        "nativeSrc": "14743:35:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14743:35:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "14736:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14736:6:136"
                    },
                    "nativeSrc": "14736:43:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14736:43:136"
                  },
                  "nativeSrc": "14733:63:136",
                  "nodeType": "YulIf",
                  "src": "14733:63:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "14816:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "14816:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14824:2:136",
                            "nodeType": "YulLiteral",
                            "src": "14824:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14812:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14812:3:136"
                        },
                        "nativeSrc": "14812:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14812:15:136"
                      },
                      {
                        "name": "value_2",
                        "nativeSrc": "14829:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "14829:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14805:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14805:6:136"
                    },
                    "nativeSrc": "14805:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14805:32:136"
                  },
                  "nativeSrc": "14805:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14805:32:136"
                },
                {
                  "nativeSrc": "14846:40:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14846:40:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14871:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "14871:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14882:2:136",
                            "nodeType": "YulLiteral",
                            "src": "14882:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14867:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14867:3:136"
                        },
                        "nativeSrc": "14867:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14867:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "14861:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "14861:5:136"
                    },
                    "nativeSrc": "14861:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14861:25:136"
                  },
                  "variables": [
                    {
                      "name": "value_3",
                      "nativeSrc": "14850:7:136",
                      "nodeType": "YulTypedName",
                      "src": "14850:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_3",
                        "nativeSrc": "14919:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "14919:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint64",
                      "nativeSrc": "14895:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "14895:23:136"
                    },
                    "nativeSrc": "14895:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14895:32:136"
                  },
                  "nativeSrc": "14895:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14895:32:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "14947:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "14947:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14955:2:136",
                            "nodeType": "YulLiteral",
                            "src": "14955:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14943:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "14943:3:136"
                        },
                        "nativeSrc": "14943:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "14943:15:136"
                      },
                      {
                        "name": "value_3",
                        "nativeSrc": "14960:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "14960:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14936:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "14936:6:136"
                    },
                    "nativeSrc": "14936:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "14936:32:136"
                  },
                  "nativeSrc": "14936:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "14936:32:136"
                },
                {
                  "nativeSrc": "14977:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14977:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "14992:1:136",
                    "nodeType": "YulLiteral",
                    "src": "14992:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_4",
                      "nativeSrc": "14981:7:136",
                      "nodeType": "YulTypedName",
                      "src": "14981:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "15002:37:136",
                  "nodeType": "YulAssignment",
                  "src": "15002:37:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15023:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "15023:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15034:3:136",
                            "nodeType": "YulLiteral",
                            "src": "15034:3:136",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15019:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "15019:3:136"
                        },
                        "nativeSrc": "15019:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "15019:19:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "15013:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15013:5:136"
                    },
                    "nativeSrc": "15013:26:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15013:26:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_4",
                      "nativeSrc": "15002:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "15002:7:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "15059:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "15059:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15067:3:136",
                            "nodeType": "YulLiteral",
                            "src": "15067:3:136",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15055:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "15055:3:136"
                        },
                        "nativeSrc": "15055:16:136",
                        "nodeType": "YulFunctionCall",
                        "src": "15055:16:136"
                      },
                      {
                        "name": "value_4",
                        "nativeSrc": "15073:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "15073:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15048:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15048:6:136"
                    },
                    "nativeSrc": "15048:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15048:33:136"
                  },
                  "nativeSrc": "15048:33:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "15048:33:136"
                },
                {
                  "nativeSrc": "15090:16:136",
                  "nodeType": "YulAssignment",
                  "src": "15090:16:136",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "15100:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "15100:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "15090:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15090:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_struct$_Price_$28105_memory_ptr_fromMemory",
            "nativeSrc": "14011:1101:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "14082:9:136",
                "nodeType": "YulTypedName",
                "src": "14082:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "14093:7:136",
                "nodeType": "YulTypedName",
                "src": "14093:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "14105:6:136",
                "nodeType": "YulTypedName",
                "src": "14105:6:136",
                "type": ""
              }
            ],
            "src": "14011:1101:136"
          },
          {
            "body": {
              "nativeSrc": "15218:76:136",
              "nodeType": "YulBlock",
              "src": "15218:76:136",
              "statements": [
                {
                  "nativeSrc": "15228:26:136",
                  "nodeType": "YulAssignment",
                  "src": "15228:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "15240:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "15240:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15251:2:136",
                        "nodeType": "YulLiteral",
                        "src": "15251:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "15236:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "15236:3:136"
                    },
                    "nativeSrc": "15236:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15236:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "15228:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "15228:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "15270:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "15270:9:136"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "15281:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "15281:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15263:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15263:6:136"
                    },
                    "nativeSrc": "15263:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15263:25:136"
                  },
                  "nativeSrc": "15263:25:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "15263:25:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nativeSrc": "15117:177:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "15187:9:136",
                "nodeType": "YulTypedName",
                "src": "15187:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "15198:6:136",
                "nodeType": "YulTypedName",
                "src": "15198:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "15209:4:136",
                "nodeType": "YulTypedName",
                "src": "15209:4:136",
                "type": ""
              }
            ],
            "src": "15117:177:136"
          },
          {
            "body": {
              "nativeSrc": "15413:341:136",
              "nodeType": "YulBlock",
              "src": "15413:341:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "15459:16:136",
                    "nodeType": "YulBlock",
                    "src": "15459:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15468:1:136",
                              "nodeType": "YulLiteral",
                              "src": "15468:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15471:1:136",
                              "nodeType": "YulLiteral",
                              "src": "15471:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "15461:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "15461:6:136"
                          },
                          "nativeSrc": "15461:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "15461:12:136"
                        },
                        "nativeSrc": "15461:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "15461:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "15434:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "15434:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "15443:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "15443:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "15430:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "15430:3:136"
                        },
                        "nativeSrc": "15430:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "15430:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15455:2:136",
                        "nodeType": "YulLiteral",
                        "src": "15455:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "15426:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "15426:3:136"
                    },
                    "nativeSrc": "15426:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15426:32:136"
                  },
                  "nativeSrc": "15423:52:136",
                  "nodeType": "YulIf",
                  "src": "15423:52:136"
                },
                {
                  "nativeSrc": "15484:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15484:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "15497:1:136",
                    "nodeType": "YulLiteral",
                    "src": "15497:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "15488:5:136",
                      "nodeType": "YulTypedName",
                      "src": "15488:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "15507:25:136",
                  "nodeType": "YulAssignment",
                  "src": "15507:25:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "15522:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "15522:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "15516:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15516:5:136"
                    },
                    "nativeSrc": "15516:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15516:16:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "15507:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15507:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "15541:15:136",
                  "nodeType": "YulAssignment",
                  "src": "15541:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "15551:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "15551:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "15541:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15541:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "15565:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15565:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "15580:1:136",
                    "nodeType": "YulLiteral",
                    "src": "15580:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "15569:7:136",
                      "nodeType": "YulTypedName",
                      "src": "15569:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "15590:36:136",
                  "nodeType": "YulAssignment",
                  "src": "15590:36:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15611:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "15611:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15622:2:136",
                            "nodeType": "YulLiteral",
                            "src": "15622:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15607:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "15607:3:136"
                        },
                        "nativeSrc": "15607:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "15607:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "15601:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15601:5:136"
                    },
                    "nativeSrc": "15601:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15601:25:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "15590:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "15590:7:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "15635:17:136",
                  "nodeType": "YulAssignment",
                  "src": "15635:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "15645:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "15645:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "15635:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15635:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "15661:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15661:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "15676:1:136",
                    "nodeType": "YulLiteral",
                    "src": "15676:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "15665:7:136",
                      "nodeType": "YulTypedName",
                      "src": "15665:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "15686:36:136",
                  "nodeType": "YulAssignment",
                  "src": "15686:36:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15707:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "15707:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15718:2:136",
                            "nodeType": "YulLiteral",
                            "src": "15718:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15703:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "15703:3:136"
                        },
                        "nativeSrc": "15703:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "15703:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "15697:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15697:5:136"
                    },
                    "nativeSrc": "15697:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15697:25:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "15686:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "15686:7:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "15731:17:136",
                  "nodeType": "YulAssignment",
                  "src": "15731:17:136",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "15741:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "15741:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "15731:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15731:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_int256t_uint256t_uint256_fromMemory",
            "nativeSrc": "15299:455:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "15363:9:136",
                "nodeType": "YulTypedName",
                "src": "15363:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "15374:7:136",
                "nodeType": "YulTypedName",
                "src": "15374:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "15386:6:136",
                "nodeType": "YulTypedName",
                "src": "15386:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "15394:6:136",
                "nodeType": "YulTypedName",
                "src": "15394:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "15402:6:136",
                "nodeType": "YulTypedName",
                "src": "15402:6:136",
                "type": ""
              }
            ],
            "src": "15299:455:136"
          },
          {
            "body": {
              "nativeSrc": "15818:120:136",
              "nodeType": "YulBlock",
              "src": "15818:120:136",
              "statements": [
                {
                  "nativeSrc": "15828:22:136",
                  "nodeType": "YulAssignment",
                  "src": "15828:22:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "15843:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "15843:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "15837:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15837:5:136"
                    },
                    "nativeSrc": "15837:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15837:13:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "15828:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "15828:5:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "15916:16:136",
                    "nodeType": "YulBlock",
                    "src": "15916:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15925:1:136",
                              "nodeType": "YulLiteral",
                              "src": "15925:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15928:1:136",
                              "nodeType": "YulLiteral",
                              "src": "15928:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "15918:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "15918:6:136"
                          },
                          "nativeSrc": "15918:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "15918:12:136"
                        },
                        "nativeSrc": "15918:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "15918:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "15872:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "15872:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "15883:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "15883:5:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "15890:22:136",
                                "nodeType": "YulLiteral",
                                "src": "15890:22:136",
                                "type": "",
                                "value": "0xffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "15879:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "15879:3:136"
                            },
                            "nativeSrc": "15879:34:136",
                            "nodeType": "YulFunctionCall",
                            "src": "15879:34:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "15869:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "15869:2:136"
                        },
                        "nativeSrc": "15869:45:136",
                        "nodeType": "YulFunctionCall",
                        "src": "15869:45:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "15862:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "15862:6:136"
                    },
                    "nativeSrc": "15862:53:136",
                    "nodeType": "YulFunctionCall",
                    "src": "15862:53:136"
                  },
                  "nativeSrc": "15859:73:136",
                  "nodeType": "YulIf",
                  "src": "15859:73:136"
                }
              ]
            },
            "name": "abi_decode_uint80_fromMemory",
            "nativeSrc": "15759:179:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "15797:6:136",
                "nodeType": "YulTypedName",
                "src": "15797:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "15808:5:136",
                "nodeType": "YulTypedName",
                "src": "15808:5:136",
                "type": ""
              }
            ],
            "src": "15759:179:136"
          },
          {
            "body": {
              "nativeSrc": "16089:477:136",
              "nodeType": "YulBlock",
              "src": "16089:477:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "16136:16:136",
                    "nodeType": "YulBlock",
                    "src": "16136:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "16145:1:136",
                              "nodeType": "YulLiteral",
                              "src": "16145:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "16148:1:136",
                              "nodeType": "YulLiteral",
                              "src": "16148:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "16138:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "16138:6:136"
                          },
                          "nativeSrc": "16138:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "16138:12:136"
                        },
                        "nativeSrc": "16138:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "16138:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "16110:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "16110:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "16119:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "16119:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "16106:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "16106:3:136"
                        },
                        "nativeSrc": "16106:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "16106:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16131:3:136",
                        "nodeType": "YulLiteral",
                        "src": "16131:3:136",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "16102:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "16102:3:136"
                    },
                    "nativeSrc": "16102:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16102:33:136"
                  },
                  "nativeSrc": "16099:53:136",
                  "nodeType": "YulIf",
                  "src": "16099:53:136"
                },
                {
                  "nativeSrc": "16161:49:136",
                  "nodeType": "YulAssignment",
                  "src": "16161:49:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "16200:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "16200:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint80_fromMemory",
                      "nativeSrc": "16171:28:136",
                      "nodeType": "YulIdentifier",
                      "src": "16171:28:136"
                    },
                    "nativeSrc": "16171:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16171:39:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "16161:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "16161:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16219:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16219:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "16232:1:136",
                    "nodeType": "YulLiteral",
                    "src": "16232:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "16223:5:136",
                      "nodeType": "YulTypedName",
                      "src": "16223:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "16242:34:136",
                  "nodeType": "YulAssignment",
                  "src": "16242:34:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16261:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "16261:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16272:2:136",
                            "nodeType": "YulLiteral",
                            "src": "16272:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16257:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "16257:3:136"
                        },
                        "nativeSrc": "16257:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "16257:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "16251:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "16251:5:136"
                    },
                    "nativeSrc": "16251:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16251:25:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "16242:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "16242:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16285:15:136",
                  "nodeType": "YulAssignment",
                  "src": "16285:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "16295:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "16295:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "16285:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "16285:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16309:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16309:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "16324:1:136",
                    "nodeType": "YulLiteral",
                    "src": "16324:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "16313:7:136",
                      "nodeType": "YulTypedName",
                      "src": "16313:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "16334:36:136",
                  "nodeType": "YulAssignment",
                  "src": "16334:36:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16355:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "16355:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16366:2:136",
                            "nodeType": "YulLiteral",
                            "src": "16366:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16351:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "16351:3:136"
                        },
                        "nativeSrc": "16351:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "16351:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "16345:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "16345:5:136"
                    },
                    "nativeSrc": "16345:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16345:25:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "16334:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "16334:7:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16379:17:136",
                  "nodeType": "YulAssignment",
                  "src": "16379:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "16389:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "16389:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "16379:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "16379:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16405:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16405:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "16420:1:136",
                    "nodeType": "YulLiteral",
                    "src": "16420:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "16409:7:136",
                      "nodeType": "YulTypedName",
                      "src": "16409:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "16430:36:136",
                  "nodeType": "YulAssignment",
                  "src": "16430:36:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16451:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "16451:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16462:2:136",
                            "nodeType": "YulLiteral",
                            "src": "16462:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16447:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "16447:3:136"
                        },
                        "nativeSrc": "16447:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "16447:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "16441:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "16441:5:136"
                    },
                    "nativeSrc": "16441:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16441:25:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "16430:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "16430:7:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16475:17:136",
                  "nodeType": "YulAssignment",
                  "src": "16475:17:136",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "16485:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "16485:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "16475:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "16475:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16501:59:136",
                  "nodeType": "YulAssignment",
                  "src": "16501:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16544:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "16544:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16555:3:136",
                            "nodeType": "YulLiteral",
                            "src": "16555:3:136",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16540:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "16540:3:136"
                        },
                        "nativeSrc": "16540:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "16540:19:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint80_fromMemory",
                      "nativeSrc": "16511:28:136",
                      "nodeType": "YulIdentifier",
                      "src": "16511:28:136"
                    },
                    "nativeSrc": "16511:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16511:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "16501:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "16501:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory",
            "nativeSrc": "15943:623:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "16023:9:136",
                "nodeType": "YulTypedName",
                "src": "16023:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "16034:7:136",
                "nodeType": "YulTypedName",
                "src": "16034:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "16046:6:136",
                "nodeType": "YulTypedName",
                "src": "16046:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "16054:6:136",
                "nodeType": "YulTypedName",
                "src": "16054:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "16062:6:136",
                "nodeType": "YulTypedName",
                "src": "16062:6:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "16070:6:136",
                "nodeType": "YulTypedName",
                "src": "16070:6:136",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "16078:6:136",
                "nodeType": "YulTypedName",
                "src": "16078:6:136",
                "type": ""
              }
            ],
            "src": "15943:623:136"
          },
          {
            "body": {
              "nativeSrc": "16696:76:136",
              "nodeType": "YulBlock",
              "src": "16696:76:136",
              "statements": [
                {
                  "nativeSrc": "16706:26:136",
                  "nodeType": "YulAssignment",
                  "src": "16706:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "16718:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "16718:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16729:2:136",
                        "nodeType": "YulLiteral",
                        "src": "16729:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "16714:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "16714:3:136"
                    },
                    "nativeSrc": "16714:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16714:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "16706:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "16706:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "16748:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "16748:9:136"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "16759:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "16759:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "16741:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "16741:6:136"
                    },
                    "nativeSrc": "16741:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16741:25:136"
                  },
                  "nativeSrc": "16741:25:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "16741:25:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_userDefinedValueType$_ID_$29561__to_t_bytes32__fromStack_reversed",
            "nativeSrc": "16571:201:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "16665:9:136",
                "nodeType": "YulTypedName",
                "src": "16665:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "16676:6:136",
                "nodeType": "YulTypedName",
                "src": "16676:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "16687:4:136",
                "nodeType": "YulTypedName",
                "src": "16687:4:136",
                "type": ""
              }
            ],
            "src": "16571:201:136"
          },
          {
            "body": {
              "nativeSrc": "16886:894:136",
              "nodeType": "YulBlock",
              "src": "16886:894:136",
              "statements": [
                {
                  "nativeSrc": "16896:43:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16896:43:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "16914:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "16914:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "16923:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "16923:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "16910:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "16910:3:136"
                        },
                        "nativeSrc": "16910:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "16910:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16935:3:136",
                        "nodeType": "YulLiteral",
                        "src": "16935:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "16906:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "16906:3:136"
                    },
                    "nativeSrc": "16906:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "16906:33:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "16900:2:136",
                      "nodeType": "YulTypedName",
                      "src": "16900:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "16954:16:136",
                    "nodeType": "YulBlock",
                    "src": "16954:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "16963:1:136",
                              "nodeType": "YulLiteral",
                              "src": "16963:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "16966:1:136",
                              "nodeType": "YulLiteral",
                              "src": "16966:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "16956:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "16956:6:136"
                          },
                          "nativeSrc": "16956:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "16956:12:136"
                        },
                        "nativeSrc": "16956:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "16956:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "name": "_1",
                    "nativeSrc": "16951:2:136",
                    "nodeType": "YulIdentifier",
                    "src": "16951:2:136"
                  },
                  "nativeSrc": "16948:22:136",
                  "nodeType": "YulIf",
                  "src": "16948:22:136"
                },
                {
                  "nativeSrc": "16979:7:136",
                  "nodeType": "YulAssignment",
                  "src": "16979:7:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "16985:1:136",
                    "nodeType": "YulLiteral",
                    "src": "16985:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variableNames": [
                    {
                      "name": "_1",
                      "nativeSrc": "16979:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "16979:2:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "16995:15:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16995:15:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "17009:1:136",
                    "nodeType": "YulLiteral",
                    "src": "17009:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "16999:6:136",
                      "nodeType": "YulTypedName",
                      "src": "16999:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "17019:19:136",
                  "nodeType": "YulAssignment",
                  "src": "17019:19:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "17035:2:136",
                        "nodeType": "YulLiteral",
                        "src": "17035:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "17029:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "17029:5:136"
                    },
                    "nativeSrc": "17029:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17029:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "17019:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17019:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "17047:34:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17047:34:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "17069:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "17069:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17077:3:136",
                        "nodeType": "YulLiteral",
                        "src": "17077:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "17065:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "17065:3:136"
                    },
                    "nativeSrc": "17065:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17065:16:136"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "17051:10:136",
                      "nodeType": "YulTypedName",
                      "src": "17051:10:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "17156:22:136",
                    "nodeType": "YulBlock",
                    "src": "17156:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "17158:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "17158:16:136"
                          },
                          "nativeSrc": "17158:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "17158:18:136"
                        },
                        "nativeSrc": "17158:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "17158:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "17099:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "17099:10:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17111:18:136",
                            "nodeType": "YulLiteral",
                            "src": "17111:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "17096:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "17096:2:136"
                        },
                        "nativeSrc": "17096:34:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17096:34:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "17135:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "17135:10:136"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "17147:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "17147:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "17132:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "17132:2:136"
                        },
                        "nativeSrc": "17132:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17132:22:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "17093:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "17093:2:136"
                    },
                    "nativeSrc": "17093:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17093:62:136"
                  },
                  "nativeSrc": "17090:88:136",
                  "nodeType": "YulIf",
                  "src": "17090:88:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "17194:2:136",
                        "nodeType": "YulLiteral",
                        "src": "17194:2:136",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "17198:10:136",
                        "nodeType": "YulIdentifier",
                        "src": "17198:10:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17187:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17187:6:136"
                    },
                    "nativeSrc": "17187:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17187:22:136"
                  },
                  "nativeSrc": "17187:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17187:22:136"
                },
                {
                  "nativeSrc": "17218:29:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17218:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "17237:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "17237:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "17231:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "17231:5:136"
                    },
                    "nativeSrc": "17231:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17231:16:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "17222:5:136",
                      "nodeType": "YulTypedName",
                      "src": "17222:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "17299:16:136",
                    "nodeType": "YulBlock",
                    "src": "17299:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17308:1:136",
                              "nodeType": "YulLiteral",
                              "src": "17308:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17311:1:136",
                              "nodeType": "YulLiteral",
                              "src": "17311:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "17301:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "17301:6:136"
                          },
                          "nativeSrc": "17301:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "17301:12:136"
                        },
                        "nativeSrc": "17301:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "17301:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "17269:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "17269:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "17287:1:136",
                                "nodeType": "YulLiteral",
                                "src": "17287:1:136",
                                "type": "",
                                "value": "7"
                              },
                              {
                                "name": "value",
                                "nativeSrc": "17290:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "17290:5:136"
                              }
                            ],
                            "functionName": {
                              "name": "signextend",
                              "nativeSrc": "17276:10:136",
                              "nodeType": "YulIdentifier",
                              "src": "17276:10:136"
                            },
                            "nativeSrc": "17276:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "17276:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "17266:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "17266:2:136"
                        },
                        "nativeSrc": "17266:31:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17266:31:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "17259:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17259:6:136"
                    },
                    "nativeSrc": "17259:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17259:39:136"
                  },
                  "nativeSrc": "17256:59:136",
                  "nodeType": "YulIf",
                  "src": "17256:59:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "17331:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "17331:6:136"
                      },
                      {
                        "name": "value",
                        "nativeSrc": "17339:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "17339:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17324:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17324:6:136"
                    },
                    "nativeSrc": "17324:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17324:21:136"
                  },
                  "nativeSrc": "17324:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17324:21:136"
                },
                {
                  "nativeSrc": "17354:40:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17354:40:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "17379:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "17379:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17390:2:136",
                            "nodeType": "YulLiteral",
                            "src": "17390:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17375:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "17375:3:136"
                        },
                        "nativeSrc": "17375:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17375:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "17369:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "17369:5:136"
                    },
                    "nativeSrc": "17369:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17369:25:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "17358:7:136",
                      "nodeType": "YulTypedName",
                      "src": "17358:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "17427:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "17427:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint64",
                      "nativeSrc": "17403:23:136",
                      "nodeType": "YulIdentifier",
                      "src": "17403:23:136"
                    },
                    "nativeSrc": "17403:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17403:32:136"
                  },
                  "nativeSrc": "17403:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17403:32:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "17455:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "17455:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17463:2:136",
                            "nodeType": "YulLiteral",
                            "src": "17463:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17451:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "17451:3:136"
                        },
                        "nativeSrc": "17451:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17451:15:136"
                      },
                      {
                        "name": "value_1",
                        "nativeSrc": "17468:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "17468:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17444:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17444:6:136"
                    },
                    "nativeSrc": "17444:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17444:32:136"
                  },
                  "nativeSrc": "17444:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17444:32:136"
                },
                {
                  "nativeSrc": "17485:40:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17485:40:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "17510:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "17510:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17521:2:136",
                            "nodeType": "YulLiteral",
                            "src": "17521:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17506:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "17506:3:136"
                        },
                        "nativeSrc": "17506:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17506:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "17500:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "17500:5:136"
                    },
                    "nativeSrc": "17500:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17500:25:136"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "17489:7:136",
                      "nodeType": "YulTypedName",
                      "src": "17489:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "17581:16:136",
                    "nodeType": "YulBlock",
                    "src": "17581:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17590:1:136",
                              "nodeType": "YulLiteral",
                              "src": "17590:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17593:1:136",
                              "nodeType": "YulLiteral",
                              "src": "17593:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "17583:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "17583:6:136"
                          },
                          "nativeSrc": "17583:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "17583:12:136"
                        },
                        "nativeSrc": "17583:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "17583:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_2",
                            "nativeSrc": "17547:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "17547:7:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "17567:1:136",
                                "nodeType": "YulLiteral",
                                "src": "17567:1:136",
                                "type": "",
                                "value": "3"
                              },
                              {
                                "name": "value_2",
                                "nativeSrc": "17570:7:136",
                                "nodeType": "YulIdentifier",
                                "src": "17570:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "signextend",
                              "nativeSrc": "17556:10:136",
                              "nodeType": "YulIdentifier",
                              "src": "17556:10:136"
                            },
                            "nativeSrc": "17556:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "17556:22:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "17544:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "17544:2:136"
                        },
                        "nativeSrc": "17544:35:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17544:35:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "17537:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17537:6:136"
                    },
                    "nativeSrc": "17537:43:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17537:43:136"
                  },
                  "nativeSrc": "17534:63:136",
                  "nodeType": "YulIf",
                  "src": "17534:63:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "17617:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "17617:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17625:2:136",
                            "nodeType": "YulLiteral",
                            "src": "17625:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17613:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "17613:3:136"
                        },
                        "nativeSrc": "17613:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17613:15:136"
                      },
                      {
                        "name": "value_2",
                        "nativeSrc": "17630:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "17630:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17606:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17606:6:136"
                    },
                    "nativeSrc": "17606:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17606:32:136"
                  },
                  "nativeSrc": "17606:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17606:32:136"
                },
                {
                  "nativeSrc": "17647:16:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17647:16:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "17662:1:136",
                    "nodeType": "YulLiteral",
                    "src": "17662:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_3",
                      "nativeSrc": "17651:7:136",
                      "nodeType": "YulTypedName",
                      "src": "17651:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "17672:36:136",
                  "nodeType": "YulAssignment",
                  "src": "17672:36:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "17693:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "17693:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17704:2:136",
                            "nodeType": "YulLiteral",
                            "src": "17704:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17689:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "17689:3:136"
                        },
                        "nativeSrc": "17689:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17689:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "17683:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "17683:5:136"
                    },
                    "nativeSrc": "17683:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17683:25:136"
                  },
                  "variableNames": [
                    {
                      "name": "value_3",
                      "nativeSrc": "17672:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "17672:7:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "17728:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "17728:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17736:2:136",
                            "nodeType": "YulLiteral",
                            "src": "17736:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17724:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "17724:3:136"
                        },
                        "nativeSrc": "17724:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "17724:15:136"
                      },
                      {
                        "name": "value_3",
                        "nativeSrc": "17741:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "17741:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17717:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17717:6:136"
                    },
                    "nativeSrc": "17717:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17717:32:136"
                  },
                  "nativeSrc": "17717:32:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17717:32:136"
                },
                {
                  "nativeSrc": "17758:16:136",
                  "nodeType": "YulAssignment",
                  "src": "17758:16:136",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "17768:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "17768:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "17758:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17758:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_struct$_PythPrice_$29570_memory_ptr_fromMemory",
            "nativeSrc": "16777:1003:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "16852:9:136",
                "nodeType": "YulTypedName",
                "src": "16852:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "16863:7:136",
                "nodeType": "YulTypedName",
                "src": "16863:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "16875:6:136",
                "nodeType": "YulTypedName",
                "src": "16875:6:136",
                "type": ""
              }
            ],
            "src": "16777:1003:136"
          },
          {
            "body": {
              "nativeSrc": "17959:168:136",
              "nodeType": "YulBlock",
              "src": "17959:168:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "17976:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "17976:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17987:2:136",
                        "nodeType": "YulLiteral",
                        "src": "17987:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17969:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17969:6:136"
                    },
                    "nativeSrc": "17969:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17969:21:136"
                  },
                  "nativeSrc": "17969:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17969:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "18010:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "18010:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18021:2:136",
                            "nodeType": "YulLiteral",
                            "src": "18021:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "18006:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18006:3:136"
                        },
                        "nativeSrc": "18006:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18006:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18026:2:136",
                        "nodeType": "YulLiteral",
                        "src": "18026:2:136",
                        "type": "",
                        "value": "18"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17999:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "17999:6:136"
                    },
                    "nativeSrc": "17999:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "17999:30:136"
                  },
                  "nativeSrc": "17999:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "17999:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "18049:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "18049:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18060:2:136",
                            "nodeType": "YulLiteral",
                            "src": "18060:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "18045:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18045:3:136"
                        },
                        "nativeSrc": "18045:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18045:18:136"
                      },
                      {
                        "hexValue": "756e737570706f72746564206d6170706572",
                        "kind": "string",
                        "nativeSrc": "18065:20:136",
                        "nodeType": "YulLiteral",
                        "src": "18065:20:136",
                        "type": "",
                        "value": "unsupported mapper"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18038:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18038:6:136"
                    },
                    "nativeSrc": "18038:48:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18038:48:136"
                  },
                  "nativeSrc": "18038:48:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18038:48:136"
                },
                {
                  "nativeSrc": "18095:26:136",
                  "nodeType": "YulAssignment",
                  "src": "18095:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "18107:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "18107:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18118:2:136",
                        "nodeType": "YulLiteral",
                        "src": "18118:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "18103:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "18103:3:136"
                    },
                    "nativeSrc": "18103:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18103:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "18095:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "18095:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1caff6482b63152caefd54878b217104d88adfadcad6fcc48a323fbc0ee4e270__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "17785:342:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "17936:9:136",
                "nodeType": "YulTypedName",
                "src": "17936:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "17950:4:136",
                "nodeType": "YulTypedName",
                "src": "17950:4:136",
                "type": ""
              }
            ],
            "src": "17785:342:136"
          },
          {
            "body": {
              "nativeSrc": "18306:225:136",
              "nodeType": "YulBlock",
              "src": "18306:225:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "18323:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "18323:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18334:2:136",
                        "nodeType": "YulLiteral",
                        "src": "18334:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18316:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18316:6:136"
                    },
                    "nativeSrc": "18316:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18316:21:136"
                  },
                  "nativeSrc": "18316:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18316:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "18357:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "18357:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18368:2:136",
                            "nodeType": "YulLiteral",
                            "src": "18368:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "18353:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18353:3:136"
                        },
                        "nativeSrc": "18353:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18353:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18373:2:136",
                        "nodeType": "YulLiteral",
                        "src": "18373:2:136",
                        "type": "",
                        "value": "35"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18346:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18346:6:136"
                    },
                    "nativeSrc": "18346:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18346:30:136"
                  },
                  "nativeSrc": "18346:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18346:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "18396:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "18396:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18407:2:136",
                            "nodeType": "YulLiteral",
                            "src": "18407:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "18392:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18392:3:136"
                        },
                        "nativeSrc": "18392:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18392:18:136"
                      },
                      {
                        "hexValue": "63616e6e6f742072656d6f7665206966206d61707065642066726f6d206f7468",
                        "kind": "string",
                        "nativeSrc": "18412:34:136",
                        "nodeType": "YulLiteral",
                        "src": "18412:34:136",
                        "type": "",
                        "value": "cannot remove if mapped from oth"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18385:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18385:6:136"
                    },
                    "nativeSrc": "18385:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18385:62:136"
                  },
                  "nativeSrc": "18385:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18385:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "18467:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "18467:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18478:2:136",
                            "nodeType": "YulLiteral",
                            "src": "18478:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "18463:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18463:3:136"
                        },
                        "nativeSrc": "18463:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18463:18:136"
                      },
                      {
                        "hexValue": "657273",
                        "kind": "string",
                        "nativeSrc": "18483:5:136",
                        "nodeType": "YulLiteral",
                        "src": "18483:5:136",
                        "type": "",
                        "value": "ers"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18456:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18456:6:136"
                    },
                    "nativeSrc": "18456:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18456:33:136"
                  },
                  "nativeSrc": "18456:33:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18456:33:136"
                },
                {
                  "nativeSrc": "18498:27:136",
                  "nodeType": "YulAssignment",
                  "src": "18498:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "18510:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "18510:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18521:3:136",
                        "nodeType": "YulLiteral",
                        "src": "18521:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "18506:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "18506:3:136"
                    },
                    "nativeSrc": "18506:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18506:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "18498:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "18498:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8683073bfad07e37004708ce422468c67b639f53369d0f23b110a4d64d7e46c7__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "18132:399:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "18283:9:136",
                "nodeType": "YulTypedName",
                "src": "18283:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "18297:4:136",
                "nodeType": "YulTypedName",
                "src": "18297:4:136",
                "type": ""
              }
            ],
            "src": "18132:399:136"
          },
          {
            "body": {
              "nativeSrc": "18585:79:136",
              "nodeType": "YulBlock",
              "src": "18585:79:136",
              "statements": [
                {
                  "nativeSrc": "18595:17:136",
                  "nodeType": "YulAssignment",
                  "src": "18595:17:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "18607:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "18607:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "18610:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "18610:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "18603:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "18603:3:136"
                    },
                    "nativeSrc": "18603:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18603:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "18595:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "18595:4:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "18636:22:136",
                    "nodeType": "YulBlock",
                    "src": "18636:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "18638:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "18638:16:136"
                          },
                          "nativeSrc": "18638:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "18638:18:136"
                        },
                        "nativeSrc": "18638:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "18638:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "18627:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "18627:4:136"
                      },
                      {
                        "name": "x",
                        "nativeSrc": "18633:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "18633:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "18624:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "18624:2:136"
                    },
                    "nativeSrc": "18624:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18624:11:136"
                  },
                  "nativeSrc": "18621:37:136",
                  "nodeType": "YulIf",
                  "src": "18621:37:136"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nativeSrc": "18536:128:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "18567:1:136",
                "nodeType": "YulTypedName",
                "src": "18567:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "18570:1:136",
                "nodeType": "YulTypedName",
                "src": "18570:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "18576:4:136",
                "nodeType": "YulTypedName",
                "src": "18576:4:136",
                "type": ""
              }
            ],
            "src": "18536:128:136"
          },
          {
            "body": {
              "nativeSrc": "18701:95:136",
              "nodeType": "YulBlock",
              "src": "18701:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "18718:1:136",
                        "nodeType": "YulLiteral",
                        "src": "18718:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "18725:3:136",
                            "nodeType": "YulLiteral",
                            "src": "18725:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18730:10:136",
                            "nodeType": "YulLiteral",
                            "src": "18730:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "18721:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18721:3:136"
                        },
                        "nativeSrc": "18721:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18721:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18711:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18711:6:136"
                    },
                    "nativeSrc": "18711:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18711:31:136"
                  },
                  "nativeSrc": "18711:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18711:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "18758:1:136",
                        "nodeType": "YulLiteral",
                        "src": "18758:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18761:4:136",
                        "nodeType": "YulLiteral",
                        "src": "18761:4:136",
                        "type": "",
                        "value": "0x31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18751:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18751:6:136"
                    },
                    "nativeSrc": "18751:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18751:15:136"
                  },
                  "nativeSrc": "18751:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18751:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "18782:1:136",
                        "nodeType": "YulLiteral",
                        "src": "18782:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18785:4:136",
                        "nodeType": "YulLiteral",
                        "src": "18785:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "18775:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "18775:6:136"
                    },
                    "nativeSrc": "18775:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18775:15:136"
                  },
                  "nativeSrc": "18775:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "18775:15:136"
                }
              ]
            },
            "name": "panic_error_0x31",
            "nativeSrc": "18669:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "18669:127:136"
          },
          {
            "body": {
              "nativeSrc": "18848:144:136",
              "nodeType": "YulBlock",
              "src": "18848:144:136",
              "statements": [
                {
                  "nativeSrc": "18858:66:136",
                  "nodeType": "YulAssignment",
                  "src": "18858:66:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nativeSrc": "18873:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "18873:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18876:18:136",
                            "nodeType": "YulLiteral",
                            "src": "18876:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "18869:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18869:3:136"
                        },
                        "nativeSrc": "18869:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18869:26:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nativeSrc": "18901:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "18901:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18904:18:136",
                            "nodeType": "YulLiteral",
                            "src": "18904:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "18897:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "18897:3:136"
                        },
                        "nativeSrc": "18897:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "18897:26:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "18865:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "18865:3:136"
                    },
                    "nativeSrc": "18865:59:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18865:59:136"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "18858:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "18858:3:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "18964:22:136",
                    "nodeType": "YulBlock",
                    "src": "18964:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "18966:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "18966:16:136"
                          },
                          "nativeSrc": "18966:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "18966:18:136"
                        },
                        "nativeSrc": "18966:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "18966:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "sum",
                        "nativeSrc": "18939:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "18939:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18944:18:136",
                        "nodeType": "YulLiteral",
                        "src": "18944:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "18936:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "18936:2:136"
                    },
                    "nativeSrc": "18936:27:136",
                    "nodeType": "YulFunctionCall",
                    "src": "18936:27:136"
                  },
                  "nativeSrc": "18933:53:136",
                  "nodeType": "YulIf",
                  "src": "18933:53:136"
                }
              ]
            },
            "name": "checked_add_t_uint64",
            "nativeSrc": "18801:191:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "18831:1:136",
                "nodeType": "YulTypedName",
                "src": "18831:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "18834:1:136",
                "nodeType": "YulTypedName",
                "src": "18834:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "18840:3:136",
                "nodeType": "YulTypedName",
                "src": "18840:3:136",
                "type": ""
              }
            ],
            "src": "18801:191:136"
          },
          {
            "body": {
              "nativeSrc": "19129:76:136",
              "nodeType": "YulBlock",
              "src": "19129:76:136",
              "statements": [
                {
                  "nativeSrc": "19139:26:136",
                  "nodeType": "YulAssignment",
                  "src": "19139:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "19151:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "19151:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19162:2:136",
                        "nodeType": "YulLiteral",
                        "src": "19162:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "19147:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "19147:3:136"
                    },
                    "nativeSrc": "19147:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19147:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "19139:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "19139:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "19181:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "19181:9:136"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "19192:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "19192:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "19174:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "19174:6:136"
                    },
                    "nativeSrc": "19174:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19174:25:136"
                  },
                  "nativeSrc": "19174:25:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "19174:25:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_userDefinedValueType$_RadonHash_$37153__to_t_bytes32__fromStack_reversed",
            "nativeSrc": "18997:208:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "19098:9:136",
                "nodeType": "YulTypedName",
                "src": "19098:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "19109:6:136",
                "nodeType": "YulTypedName",
                "src": "19109:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "19120:4:136",
                "nodeType": "YulTypedName",
                "src": "19120:4:136",
                "type": ""
              }
            ],
            "src": "18997:208:136"
          },
          {
            "body": {
              "nativeSrc": "19288:167:136",
              "nodeType": "YulBlock",
              "src": "19288:167:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "19334:16:136",
                    "nodeType": "YulBlock",
                    "src": "19334:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "19343:1:136",
                              "nodeType": "YulLiteral",
                              "src": "19343:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "19346:1:136",
                              "nodeType": "YulLiteral",
                              "src": "19346:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "19336:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "19336:6:136"
                          },
                          "nativeSrc": "19336:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "19336:12:136"
                        },
                        "nativeSrc": "19336:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "19336:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "19309:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "19309:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "19318:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "19318:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "19305:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "19305:3:136"
                        },
                        "nativeSrc": "19305:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "19305:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19330:2:136",
                        "nodeType": "YulLiteral",
                        "src": "19330:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "19301:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "19301:3:136"
                    },
                    "nativeSrc": "19301:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19301:32:136"
                  },
                  "nativeSrc": "19298:52:136",
                  "nodeType": "YulIf",
                  "src": "19298:52:136"
                },
                {
                  "nativeSrc": "19359:29:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "19359:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "19378:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "19378:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "19372:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "19372:5:136"
                    },
                    "nativeSrc": "19372:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19372:16:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "19363:5:136",
                      "nodeType": "YulTypedName",
                      "src": "19363:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "19419:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "19419:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nativeSrc": "19397:21:136",
                      "nodeType": "YulIdentifier",
                      "src": "19397:21:136"
                    },
                    "nativeSrc": "19397:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19397:28:136"
                  },
                  "nativeSrc": "19397:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "19397:28:136"
                },
                {
                  "nativeSrc": "19434:15:136",
                  "nodeType": "YulAssignment",
                  "src": "19434:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "19444:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "19444:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "19434:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "19434:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nativeSrc": "19210:245:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "19254:9:136",
                "nodeType": "YulTypedName",
                "src": "19254:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "19265:7:136",
                "nodeType": "YulTypedName",
                "src": "19265:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "19277:6:136",
                "nodeType": "YulTypedName",
                "src": "19277:6:136",
                "type": ""
              }
            ],
            "src": "19210:245:136"
          },
          {
            "body": {
              "nativeSrc": "19634:168:136",
              "nodeType": "YulBlock",
              "src": "19634:168:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "19651:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "19651:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19662:2:136",
                        "nodeType": "YulLiteral",
                        "src": "19662:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "19644:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "19644:6:136"
                    },
                    "nativeSrc": "19644:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19644:21:136"
                  },
                  "nativeSrc": "19644:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "19644:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "19685:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "19685:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "19696:2:136",
                            "nodeType": "YulLiteral",
                            "src": "19696:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "19681:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "19681:3:136"
                        },
                        "nativeSrc": "19681:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "19681:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19701:2:136",
                        "nodeType": "YulLiteral",
                        "src": "19701:2:136",
                        "type": "",
                        "value": "18"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "19674:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "19674:6:136"
                    },
                    "nativeSrc": "19674:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19674:30:136"
                  },
                  "nativeSrc": "19674:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "19674:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "19724:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "19724:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "19735:2:136",
                            "nodeType": "YulLiteral",
                            "src": "19735:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "19720:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "19720:3:136"
                        },
                        "nativeSrc": "19720:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "19720:18:136"
                      },
                      {
                        "hexValue": "756e766572696669656420736f7572636573",
                        "kind": "string",
                        "nativeSrc": "19740:20:136",
                        "nodeType": "YulLiteral",
                        "src": "19740:20:136",
                        "type": "",
                        "value": "unverified sources"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "19713:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "19713:6:136"
                    },
                    "nativeSrc": "19713:48:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19713:48:136"
                  },
                  "nativeSrc": "19713:48:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "19713:48:136"
                },
                {
                  "nativeSrc": "19770:26:136",
                  "nodeType": "YulAssignment",
                  "src": "19770:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "19782:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "19782:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19793:2:136",
                        "nodeType": "YulLiteral",
                        "src": "19793:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "19778:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "19778:3:136"
                    },
                    "nativeSrc": "19778:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19778:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "19770:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "19770:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b9418adec3fa89f842fd7f5eb0cf657b751f377eea010103b105c79d396fe8aa__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "19460:342:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "19611:9:136",
                "nodeType": "YulTypedName",
                "src": "19611:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "19625:4:136",
                "nodeType": "YulTypedName",
                "src": "19625:4:136",
                "type": ""
              }
            ],
            "src": "19460:342:136"
          },
          {
            "body": {
              "nativeSrc": "19981:164:136",
              "nodeType": "YulBlock",
              "src": "19981:164:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "19998:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "19998:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20009:2:136",
                        "nodeType": "YulLiteral",
                        "src": "20009:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "19991:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "19991:6:136"
                    },
                    "nativeSrc": "19991:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "19991:21:136"
                  },
                  "nativeSrc": "19991:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "19991:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "20032:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "20032:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20043:2:136",
                            "nodeType": "YulLiteral",
                            "src": "20043:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "20028:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "20028:3:136"
                        },
                        "nativeSrc": "20028:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "20028:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20048:2:136",
                        "nodeType": "YulLiteral",
                        "src": "20048:2:136",
                        "type": "",
                        "value": "14"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20021:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20021:6:136"
                    },
                    "nativeSrc": "20021:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20021:30:136"
                  },
                  "nativeSrc": "20021:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "20021:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "20071:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "20071:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20082:2:136",
                            "nodeType": "YulLiteral",
                            "src": "20082:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "20067:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "20067:3:136"
                        },
                        "nativeSrc": "20067:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "20067:18:136"
                      },
                      {
                        "hexValue": "696e76616c6964206f7261636c65",
                        "kind": "string",
                        "nativeSrc": "20087:16:136",
                        "nodeType": "YulLiteral",
                        "src": "20087:16:136",
                        "type": "",
                        "value": "invalid oracle"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20060:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20060:6:136"
                    },
                    "nativeSrc": "20060:44:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20060:44:136"
                  },
                  "nativeSrc": "20060:44:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "20060:44:136"
                },
                {
                  "nativeSrc": "20113:26:136",
                  "nodeType": "YulAssignment",
                  "src": "20113:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "20125:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "20125:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20136:2:136",
                        "nodeType": "YulLiteral",
                        "src": "20136:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "20121:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "20121:3:136"
                    },
                    "nativeSrc": "20121:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20121:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "20113:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "20113:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_cb2d1e9dfd97eaf95f99d74a04eb502b6404ea235ae0f509d4ba6dee55f4818b__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "19807:338:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "19958:9:136",
                "nodeType": "YulTypedName",
                "src": "19958:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "19972:4:136",
                "nodeType": "YulTypedName",
                "src": "19972:4:136",
                "type": ""
              }
            ],
            "src": "19807:338:136"
          },
          {
            "body": {
              "nativeSrc": "20324:167:136",
              "nodeType": "YulBlock",
              "src": "20324:167:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "20341:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "20341:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20352:2:136",
                        "nodeType": "YulLiteral",
                        "src": "20352:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20334:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20334:6:136"
                    },
                    "nativeSrc": "20334:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20334:21:136"
                  },
                  "nativeSrc": "20334:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "20334:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "20375:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "20375:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20386:2:136",
                            "nodeType": "YulLiteral",
                            "src": "20386:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "20371:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "20371:3:136"
                        },
                        "nativeSrc": "20371:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "20371:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20391:2:136",
                        "nodeType": "YulLiteral",
                        "src": "20391:2:136",
                        "type": "",
                        "value": "17"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20364:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20364:6:136"
                    },
                    "nativeSrc": "20364:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20364:30:136"
                  },
                  "nativeSrc": "20364:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "20364:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "20414:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "20414:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20425:2:136",
                            "nodeType": "YulLiteral",
                            "src": "20425:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "20410:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "20410:3:136"
                        },
                        "nativeSrc": "20410:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "20410:18:136"
                      },
                      {
                        "hexValue": "696e6578697374656e74206f7261636c65",
                        "kind": "string",
                        "nativeSrc": "20430:19:136",
                        "nodeType": "YulLiteral",
                        "src": "20430:19:136",
                        "type": "",
                        "value": "inexistent oracle"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20403:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20403:6:136"
                    },
                    "nativeSrc": "20403:47:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20403:47:136"
                  },
                  "nativeSrc": "20403:47:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "20403:47:136"
                },
                {
                  "nativeSrc": "20459:26:136",
                  "nodeType": "YulAssignment",
                  "src": "20459:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "20471:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "20471:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20482:2:136",
                        "nodeType": "YulLiteral",
                        "src": "20482:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "20467:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "20467:3:136"
                    },
                    "nativeSrc": "20467:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20467:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "20459:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "20459:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_d97ee9cf70a0496c37c6020840166f28209ce380fdefd014c0b530be764538a6__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "20150:341:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "20301:9:136",
                "nodeType": "YulTypedName",
                "src": "20301:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "20315:4:136",
                "nodeType": "YulTypedName",
                "src": "20315:4:136",
                "type": ""
              }
            ],
            "src": "20150:341:136"
          },
          {
            "body": {
              "nativeSrc": "20551:325:136",
              "nodeType": "YulBlock",
              "src": "20551:325:136",
              "statements": [
                {
                  "nativeSrc": "20561:22:136",
                  "nodeType": "YulAssignment",
                  "src": "20561:22:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "20575:1:136",
                        "nodeType": "YulLiteral",
                        "src": "20575:1:136",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nativeSrc": "20578:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "20578:4:136"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nativeSrc": "20571:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "20571:3:136"
                    },
                    "nativeSrc": "20571:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20571:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "20561:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20561:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "20592:38:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "20592:38:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nativeSrc": "20622:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "20622:4:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20628:1:136",
                        "nodeType": "YulLiteral",
                        "src": "20628:1:136",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "20618:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "20618:3:136"
                    },
                    "nativeSrc": "20618:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20618:12:136"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nativeSrc": "20596:18:136",
                      "nodeType": "YulTypedName",
                      "src": "20596:18:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "20669:31:136",
                    "nodeType": "YulBlock",
                    "src": "20669:31:136",
                    "statements": [
                      {
                        "nativeSrc": "20671:27:136",
                        "nodeType": "YulAssignment",
                        "src": "20671:27:136",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "20685:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "20685:6:136"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "20693:4:136",
                              "nodeType": "YulLiteral",
                              "src": "20693:4:136",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "20681:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "20681:3:136"
                          },
                          "nativeSrc": "20681:17:136",
                          "nodeType": "YulFunctionCall",
                          "src": "20681:17:136"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nativeSrc": "20671:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "20671:6:136"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "20649:18:136",
                        "nodeType": "YulIdentifier",
                        "src": "20649:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "20642:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20642:6:136"
                    },
                    "nativeSrc": "20642:26:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20642:26:136"
                  },
                  "nativeSrc": "20639:61:136",
                  "nodeType": "YulIf",
                  "src": "20639:61:136"
                },
                {
                  "body": {
                    "nativeSrc": "20759:111:136",
                    "nodeType": "YulBlock",
                    "src": "20759:111:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "20780:1:136",
                              "nodeType": "YulLiteral",
                              "src": "20780:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "20787:3:136",
                                  "nodeType": "YulLiteral",
                                  "src": "20787:3:136",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "20792:10:136",
                                  "nodeType": "YulLiteral",
                                  "src": "20792:10:136",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "20783:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "20783:3:136"
                              },
                              "nativeSrc": "20783:20:136",
                              "nodeType": "YulFunctionCall",
                              "src": "20783:20:136"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "20773:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "20773:6:136"
                          },
                          "nativeSrc": "20773:31:136",
                          "nodeType": "YulFunctionCall",
                          "src": "20773:31:136"
                        },
                        "nativeSrc": "20773:31:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "20773:31:136"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "20824:1:136",
                              "nodeType": "YulLiteral",
                              "src": "20824:1:136",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "20827:4:136",
                              "nodeType": "YulLiteral",
                              "src": "20827:4:136",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "20817:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "20817:6:136"
                          },
                          "nativeSrc": "20817:15:136",
                          "nodeType": "YulFunctionCall",
                          "src": "20817:15:136"
                        },
                        "nativeSrc": "20817:15:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "20817:15:136"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "20852:1:136",
                              "nodeType": "YulLiteral",
                              "src": "20852:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "20855:4:136",
                              "nodeType": "YulLiteral",
                              "src": "20855:4:136",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "20845:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "20845:6:136"
                          },
                          "nativeSrc": "20845:15:136",
                          "nodeType": "YulFunctionCall",
                          "src": "20845:15:136"
                        },
                        "nativeSrc": "20845:15:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "20845:15:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "20715:18:136",
                        "nodeType": "YulIdentifier",
                        "src": "20715:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nativeSrc": "20738:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "20738:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20746:2:136",
                            "nodeType": "YulLiteral",
                            "src": "20746:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "20735:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "20735:2:136"
                        },
                        "nativeSrc": "20735:14:136",
                        "nodeType": "YulFunctionCall",
                        "src": "20735:14:136"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "20712:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "20712:2:136"
                    },
                    "nativeSrc": "20712:38:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20712:38:136"
                  },
                  "nativeSrc": "20709:161:136",
                  "nodeType": "YulIf",
                  "src": "20709:161:136"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nativeSrc": "20496:380:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "20531:4:136",
                "nodeType": "YulTypedName",
                "src": "20531:4:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nativeSrc": "20540:6:136",
                "nodeType": "YulTypedName",
                "src": "20540:6:136",
                "type": ""
              }
            ],
            "src": "20496:380:136"
          },
          {
            "body": {
              "nativeSrc": "20937:65:136",
              "nodeType": "YulBlock",
              "src": "20937:65:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "20954:1:136",
                        "nodeType": "YulLiteral",
                        "src": "20954:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nativeSrc": "20957:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "20957:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20947:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "20947:6:136"
                    },
                    "nativeSrc": "20947:14:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20947:14:136"
                  },
                  "nativeSrc": "20947:14:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "20947:14:136"
                },
                {
                  "nativeSrc": "20970:26:136",
                  "nodeType": "YulAssignment",
                  "src": "20970:26:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "20988:1:136",
                        "nodeType": "YulLiteral",
                        "src": "20988:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20991:4:136",
                        "nodeType": "YulLiteral",
                        "src": "20991:4:136",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nativeSrc": "20978:9:136",
                      "nodeType": "YulIdentifier",
                      "src": "20978:9:136"
                    },
                    "nativeSrc": "20978:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "20978:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nativeSrc": "20970:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "20970:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nativeSrc": "20881:121:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "20920:3:136",
                "nodeType": "YulTypedName",
                "src": "20920:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nativeSrc": "20928:4:136",
                "nodeType": "YulTypedName",
                "src": "20928:4:136",
                "type": ""
              }
            ],
            "src": "20881:121:136"
          },
          {
            "body": {
              "nativeSrc": "21125:781:136",
              "nodeType": "YulBlock",
              "src": "21125:781:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "21142:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "21142:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "21153:2:136",
                        "nodeType": "YulLiteral",
                        "src": "21153:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21135:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "21135:6:136"
                    },
                    "nativeSrc": "21135:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "21135:21:136"
                  },
                  "nativeSrc": "21135:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "21135:21:136"
                },
                {
                  "nativeSrc": "21165:12:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "21165:12:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "21176:1:136",
                    "nodeType": "YulLiteral",
                    "src": "21176:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "ret",
                      "nativeSrc": "21169:3:136",
                      "nodeType": "YulTypedName",
                      "src": "21169:3:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "21186:30:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "21186:30:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "21209:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "21209:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nativeSrc": "21203:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "21203:5:136"
                    },
                    "nativeSrc": "21203:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "21203:13:136"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nativeSrc": "21190:9:136",
                      "nodeType": "YulTypedName",
                      "src": "21190:9:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "21225:50:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "21225:50:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nativeSrc": "21265:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "21265:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nativeSrc": "21239:25:136",
                      "nodeType": "YulIdentifier",
                      "src": "21239:25:136"
                    },
                    "nativeSrc": "21239:36:136",
                    "nodeType": "YulFunctionCall",
                    "src": "21239:36:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "21229:6:136",
                      "nodeType": "YulTypedName",
                      "src": "21229:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21295:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "21295:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21306:2:136",
                            "nodeType": "YulLiteral",
                            "src": "21306:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21291:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "21291:3:136"
                        },
                        "nativeSrc": "21291:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "21291:18:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "21311:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "21311:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21284:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "21284:6:136"
                    },
                    "nativeSrc": "21284:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "21284:34:136"
                  },
                  "nativeSrc": "21284:34:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "21284:34:136"
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "21367:151:136",
                        "nodeType": "YulBlock",
                        "src": "21367:151:136",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nativeSrc": "21392:9:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21392:9:136"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "21403:2:136",
                                      "nodeType": "YulLiteral",
                                      "src": "21403:2:136",
                                      "type": "",
                                      "value": "64"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "21388:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "21388:3:136"
                                  },
                                  "nativeSrc": "21388:18:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "21388:18:136"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nativeSrc": "21412:9:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21412:9:136"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "21427:3:136",
                                          "nodeType": "YulLiteral",
                                          "src": "21427:3:136",
                                          "type": "",
                                          "value": "255"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nativeSrc": "21423:3:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "21423:3:136"
                                      },
                                      "nativeSrc": "21423:8:136",
                                      "nodeType": "YulFunctionCall",
                                      "src": "21423:8:136"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nativeSrc": "21408:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "21408:3:136"
                                  },
                                  "nativeSrc": "21408:24:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "21408:24:136"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "21381:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "21381:6:136"
                              },
                              "nativeSrc": "21381:52:136",
                              "nodeType": "YulFunctionCall",
                              "src": "21381:52:136"
                            },
                            "nativeSrc": "21381:52:136",
                            "nodeType": "YulExpressionStatement",
                            "src": "21381:52:136"
                          },
                          {
                            "nativeSrc": "21446:62:136",
                            "nodeType": "YulAssignment",
                            "src": "21446:62:136",
                            "value": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nativeSrc": "21461:9:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21461:9:136"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "21476:1:136",
                                          "nodeType": "YulLiteral",
                                          "src": "21476:1:136",
                                          "type": "",
                                          "value": "5"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "length",
                                                  "nativeSrc": "21493:6:136",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "21493:6:136"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nativeSrc": "21486:6:136",
                                                "nodeType": "YulIdentifier",
                                                "src": "21486:6:136"
                                              },
                                              "nativeSrc": "21486:14:136",
                                              "nodeType": "YulFunctionCall",
                                              "src": "21486:14:136"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nativeSrc": "21479:6:136",
                                            "nodeType": "YulIdentifier",
                                            "src": "21479:6:136"
                                          },
                                          "nativeSrc": "21479:22:136",
                                          "nodeType": "YulFunctionCall",
                                          "src": "21479:22:136"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "21472:3:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "21472:3:136"
                                      },
                                      "nativeSrc": "21472:30:136",
                                      "nodeType": "YulFunctionCall",
                                      "src": "21472:30:136"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "21457:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "21457:3:136"
                                  },
                                  "nativeSrc": "21457:46:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "21457:46:136"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "21505:2:136",
                                  "nodeType": "YulLiteral",
                                  "src": "21505:2:136",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "21453:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "21453:3:136"
                              },
                              "nativeSrc": "21453:55:136",
                              "nodeType": "YulFunctionCall",
                              "src": "21453:55:136"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nativeSrc": "21446:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "21446:3:136"
                              }
                            ]
                          }
                        ]
                      },
                      "nativeSrc": "21360:158:136",
                      "nodeType": "YulCase",
                      "src": "21360:158:136",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "21365:1:136",
                        "nodeType": "YulLiteral",
                        "src": "21365:1:136",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "21534:346:136",
                        "nodeType": "YulBlock",
                        "src": "21534:346:136",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "21555:1:136",
                                  "nodeType": "YulLiteral",
                                  "src": "21555:1:136",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "value0",
                                  "nativeSrc": "21558:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "21558:6:136"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "21548:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "21548:6:136"
                              },
                              "nativeSrc": "21548:17:136",
                              "nodeType": "YulFunctionCall",
                              "src": "21548:17:136"
                            },
                            "nativeSrc": "21548:17:136",
                            "nodeType": "YulExpressionStatement",
                            "src": "21548:17:136"
                          },
                          {
                            "nativeSrc": "21578:31:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "21578:31:136",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "21603:1:136",
                                  "nodeType": "YulLiteral",
                                  "src": "21603:1:136",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "21606:2:136",
                                  "nodeType": "YulLiteral",
                                  "src": "21606:2:136",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nativeSrc": "21593:9:136",
                                "nodeType": "YulIdentifier",
                                "src": "21593:9:136"
                              },
                              "nativeSrc": "21593:16:136",
                              "nodeType": "YulFunctionCall",
                              "src": "21593:16:136"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nativeSrc": "21582:7:136",
                                "nodeType": "YulTypedName",
                                "src": "21582:7:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "21622:10:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "21622:10:136",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "21631:1:136",
                              "nodeType": "YulLiteral",
                              "src": "21631:1:136",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "21626:1:136",
                                "nodeType": "YulTypedName",
                                "src": "21626:1:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "21699:125:136",
                              "nodeType": "YulBlock",
                              "src": "21699:125:136",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "headStart",
                                                "nativeSrc": "21732:9:136",
                                                "nodeType": "YulIdentifier",
                                                "src": "21732:9:136"
                                              },
                                              {
                                                "name": "i",
                                                "nativeSrc": "21743:1:136",
                                                "nodeType": "YulIdentifier",
                                                "src": "21743:1:136"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "21728:3:136",
                                              "nodeType": "YulIdentifier",
                                              "src": "21728:3:136"
                                            },
                                            "nativeSrc": "21728:17:136",
                                            "nodeType": "YulFunctionCall",
                                            "src": "21728:17:136"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "21747:2:136",
                                            "nodeType": "YulLiteral",
                                            "src": "21747:2:136",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "21724:3:136",
                                          "nodeType": "YulIdentifier",
                                          "src": "21724:3:136"
                                        },
                                        "nativeSrc": "21724:26:136",
                                        "nodeType": "YulFunctionCall",
                                        "src": "21724:26:136"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nativeSrc": "21758:7:136",
                                            "nodeType": "YulIdentifier",
                                            "src": "21758:7:136"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nativeSrc": "21752:5:136",
                                          "nodeType": "YulIdentifier",
                                          "src": "21752:5:136"
                                        },
                                        "nativeSrc": "21752:14:136",
                                        "nodeType": "YulFunctionCall",
                                        "src": "21752:14:136"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nativeSrc": "21717:6:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21717:6:136"
                                    },
                                    "nativeSrc": "21717:50:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21717:50:136"
                                  },
                                  "nativeSrc": "21717:50:136",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21717:50:136"
                                },
                                {
                                  "nativeSrc": "21784:26:136",
                                  "nodeType": "YulAssignment",
                                  "src": "21784:26:136",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nativeSrc": "21799:7:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "21799:7:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "21808:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "21808:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "21795:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21795:3:136"
                                    },
                                    "nativeSrc": "21795:15:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21795:15:136"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nativeSrc": "21784:7:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21784:7:136"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "21656:1:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "21656:1:136"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "21659:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "21659:6:136"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "21653:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "21653:2:136"
                              },
                              "nativeSrc": "21653:13:136",
                              "nodeType": "YulFunctionCall",
                              "src": "21653:13:136"
                            },
                            "nativeSrc": "21645:179:136",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "21667:19:136",
                              "nodeType": "YulBlock",
                              "src": "21667:19:136",
                              "statements": [
                                {
                                  "nativeSrc": "21669:15:136",
                                  "nodeType": "YulAssignment",
                                  "src": "21669:15:136",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "21678:1:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "21678:1:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "21681:2:136",
                                        "nodeType": "YulLiteral",
                                        "src": "21681:2:136",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "21674:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21674:3:136"
                                    },
                                    "nativeSrc": "21674:10:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21674:10:136"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "21669:1:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21669:1:136"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "21649:3:136",
                              "nodeType": "YulBlock",
                              "src": "21649:3:136",
                              "statements": []
                            },
                            "src": "21645:179:136"
                          },
                          {
                            "nativeSrc": "21837:33:136",
                            "nodeType": "YulAssignment",
                            "src": "21837:33:136",
                            "value": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nativeSrc": "21852:9:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21852:9:136"
                                    },
                                    {
                                      "name": "i",
                                      "nativeSrc": "21863:1:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "21863:1:136"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "21848:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "21848:3:136"
                                  },
                                  "nativeSrc": "21848:17:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "21848:17:136"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "21867:2:136",
                                  "nodeType": "YulLiteral",
                                  "src": "21867:2:136",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "21844:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "21844:3:136"
                              },
                              "nativeSrc": "21844:26:136",
                              "nodeType": "YulFunctionCall",
                              "src": "21844:26:136"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nativeSrc": "21837:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "21837:3:136"
                              }
                            ]
                          }
                        ]
                      },
                      "nativeSrc": "21527:353:136",
                      "nodeType": "YulCase",
                      "src": "21527:353:136",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "21532:1:136",
                        "nodeType": "YulLiteral",
                        "src": "21532:1:136",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nativeSrc": "21338:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "21338:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "21349:1:136",
                        "nodeType": "YulLiteral",
                        "src": "21349:1:136",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "21334:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "21334:3:136"
                    },
                    "nativeSrc": "21334:17:136",
                    "nodeType": "YulFunctionCall",
                    "src": "21334:17:136"
                  },
                  "nativeSrc": "21327:553:136",
                  "nodeType": "YulSwitch",
                  "src": "21327:553:136"
                },
                {
                  "nativeSrc": "21889:11:136",
                  "nodeType": "YulAssignment",
                  "src": "21889:11:136",
                  "value": {
                    "name": "ret",
                    "nativeSrc": "21897:3:136",
                    "nodeType": "YulIdentifier",
                    "src": "21897:3:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "21889:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "21889:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_storage__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "21007:899:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "21094:9:136",
                "nodeType": "YulTypedName",
                "src": "21094:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "21105:6:136",
                "nodeType": "YulTypedName",
                "src": "21105:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "21116:4:136",
                "nodeType": "YulTypedName",
                "src": "21116:4:136",
                "type": ""
              }
            ],
            "src": "21007:899:136"
          },
          {
            "body": {
              "nativeSrc": "22042:115:136",
              "nodeType": "YulBlock",
              "src": "22042:115:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22059:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "22059:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22070:2:136",
                        "nodeType": "YulLiteral",
                        "src": "22070:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22052:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "22052:6:136"
                    },
                    "nativeSrc": "22052:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22052:21:136"
                  },
                  "nativeSrc": "22052:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "22052:21:136"
                },
                {
                  "nativeSrc": "22082:69:136",
                  "nodeType": "YulAssignment",
                  "src": "22082:69:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "22116:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "22116:6:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "22124:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "22124:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22136:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "22136:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22147:2:136",
                            "nodeType": "YulLiteral",
                            "src": "22147:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22132:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "22132:3:136"
                        },
                        "nativeSrc": "22132:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "22132:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_calldata",
                      "nativeSrc": "22090:25:136",
                      "nodeType": "YulIdentifier",
                      "src": "22090:25:136"
                    },
                    "nativeSrc": "22090:61:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22090:61:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "22082:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "22082:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "21911:246:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "22003:9:136",
                "nodeType": "YulTypedName",
                "src": "22003:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "22014:6:136",
                "nodeType": "YulTypedName",
                "src": "22014:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "22022:6:136",
                "nodeType": "YulTypedName",
                "src": "22022:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "22033:4:136",
                "nodeType": "YulTypedName",
                "src": "22033:4:136",
                "type": ""
              }
            ],
            "src": "21911:246:136"
          },
          {
            "body": {
              "nativeSrc": "22336:241:136",
              "nodeType": "YulBlock",
              "src": "22336:241:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22353:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "22353:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22364:2:136",
                        "nodeType": "YulLiteral",
                        "src": "22364:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22346:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "22346:6:136"
                    },
                    "nativeSrc": "22346:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22346:21:136"
                  },
                  "nativeSrc": "22346:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "22346:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22387:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "22387:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22398:2:136",
                            "nodeType": "YulLiteral",
                            "src": "22398:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22383:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "22383:3:136"
                        },
                        "nativeSrc": "22383:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "22383:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22403:2:136",
                        "nodeType": "YulLiteral",
                        "src": "22403:2:136",
                        "type": "",
                        "value": "51"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22376:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "22376:6:136"
                    },
                    "nativeSrc": "22376:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22376:30:136"
                  },
                  "nativeSrc": "22376:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "22376:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22426:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "22426:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22437:2:136",
                            "nodeType": "YulLiteral",
                            "src": "22437:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22422:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "22422:3:136"
                        },
                        "nativeSrc": "22422:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "22422:18:136"
                      },
                      {
                        "hexValue": "63616e6e6f74207265666163746f72206578697369746e672073796d626f6c20",
                        "kind": "string",
                        "nativeSrc": "22442:34:136",
                        "nodeType": "YulLiteral",
                        "src": "22442:34:136",
                        "type": "",
                        "value": "cannot refactor exisitng symbol "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22415:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "22415:6:136"
                    },
                    "nativeSrc": "22415:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22415:62:136"
                  },
                  "nativeSrc": "22415:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "22415:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22497:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "22497:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22508:2:136",
                            "nodeType": "YulLiteral",
                            "src": "22508:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22493:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "22493:3:136"
                        },
                        "nativeSrc": "22493:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "22493:18:136"
                      },
                      {
                        "hexValue": "6966206d6170706564206279206f7468657273",
                        "kind": "string",
                        "nativeSrc": "22513:21:136",
                        "nodeType": "YulLiteral",
                        "src": "22513:21:136",
                        "type": "",
                        "value": "if mapped by others"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22486:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "22486:6:136"
                    },
                    "nativeSrc": "22486:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22486:49:136"
                  },
                  "nativeSrc": "22486:49:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "22486:49:136"
                },
                {
                  "nativeSrc": "22544:27:136",
                  "nodeType": "YulAssignment",
                  "src": "22544:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22556:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "22556:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22567:3:136",
                        "nodeType": "YulLiteral",
                        "src": "22567:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "22552:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "22552:3:136"
                    },
                    "nativeSrc": "22552:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22552:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "22544:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "22544:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5d61cd11ae3989756f34b547e8030531ec22ae7f78845e3c2df1ed1a1a0bef68__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "22162:415:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "22313:9:136",
                "nodeType": "YulTypedName",
                "src": "22313:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "22327:4:136",
                "nodeType": "YulTypedName",
                "src": "22327:4:136",
                "type": ""
              }
            ],
            "src": "22162:415:136"
          },
          {
            "body": {
              "nativeSrc": "22663:437:136",
              "nodeType": "YulBlock",
              "src": "22663:437:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "22696:398:136",
                    "nodeType": "YulBlock",
                    "src": "22696:398:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "22717:1:136",
                              "nodeType": "YulLiteral",
                              "src": "22717:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "name": "array",
                              "nativeSrc": "22720:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "22720:5:136"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "22710:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "22710:6:136"
                          },
                          "nativeSrc": "22710:16:136",
                          "nodeType": "YulFunctionCall",
                          "src": "22710:16:136"
                        },
                        "nativeSrc": "22710:16:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "22710:16:136"
                      },
                      {
                        "nativeSrc": "22739:30:136",
                        "nodeType": "YulVariableDeclaration",
                        "src": "22739:30:136",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "22761:1:136",
                              "nodeType": "YulLiteral",
                              "src": "22761:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "22764:4:136",
                              "nodeType": "YulLiteral",
                              "src": "22764:4:136",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nativeSrc": "22751:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "22751:9:136"
                          },
                          "nativeSrc": "22751:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "22751:18:136"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nativeSrc": "22743:4:136",
                            "nodeType": "YulTypedName",
                            "src": "22743:4:136",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "22782:57:136",
                        "nodeType": "YulVariableDeclaration",
                        "src": "22782:57:136",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "22805:4:136",
                              "nodeType": "YulIdentifier",
                              "src": "22805:4:136"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "22815:1:136",
                                  "nodeType": "YulLiteral",
                                  "src": "22815:1:136",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nativeSrc": "22822:10:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "22822:10:136"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "22834:2:136",
                                      "nodeType": "YulLiteral",
                                      "src": "22834:2:136",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "22818:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "22818:3:136"
                                  },
                                  "nativeSrc": "22818:19:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "22818:19:136"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "22811:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "22811:3:136"
                              },
                              "nativeSrc": "22811:27:136",
                              "nodeType": "YulFunctionCall",
                              "src": "22811:27:136"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "22801:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "22801:3:136"
                          },
                          "nativeSrc": "22801:38:136",
                          "nodeType": "YulFunctionCall",
                          "src": "22801:38:136"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nativeSrc": "22786:11:136",
                            "nodeType": "YulTypedName",
                            "src": "22786:11:136",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "22876:23:136",
                          "nodeType": "YulBlock",
                          "src": "22876:23:136",
                          "statements": [
                            {
                              "nativeSrc": "22878:19:136",
                              "nodeType": "YulAssignment",
                              "src": "22878:19:136",
                              "value": {
                                "name": "data",
                                "nativeSrc": "22893:4:136",
                                "nodeType": "YulIdentifier",
                                "src": "22893:4:136"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nativeSrc": "22878:11:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "22878:11:136"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nativeSrc": "22858:10:136",
                              "nodeType": "YulIdentifier",
                              "src": "22858:10:136"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "22870:4:136",
                              "nodeType": "YulLiteral",
                              "src": "22870:4:136",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "22855:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "22855:2:136"
                          },
                          "nativeSrc": "22855:20:136",
                          "nodeType": "YulFunctionCall",
                          "src": "22855:20:136"
                        },
                        "nativeSrc": "22852:47:136",
                        "nodeType": "YulIf",
                        "src": "22852:47:136"
                      },
                      {
                        "nativeSrc": "22912:41:136",
                        "nodeType": "YulVariableDeclaration",
                        "src": "22912:41:136",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "22926:4:136",
                              "nodeType": "YulIdentifier",
                              "src": "22926:4:136"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "22936:1:136",
                                  "nodeType": "YulLiteral",
                                  "src": "22936:1:136",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nativeSrc": "22943:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "22943:3:136"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "22948:2:136",
                                      "nodeType": "YulLiteral",
                                      "src": "22948:2:136",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "22939:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "22939:3:136"
                                  },
                                  "nativeSrc": "22939:12:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "22939:12:136"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "22932:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "22932:3:136"
                              },
                              "nativeSrc": "22932:20:136",
                              "nodeType": "YulFunctionCall",
                              "src": "22932:20:136"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "22922:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "22922:3:136"
                          },
                          "nativeSrc": "22922:31:136",
                          "nodeType": "YulFunctionCall",
                          "src": "22922:31:136"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nativeSrc": "22916:2:136",
                            "nodeType": "YulTypedName",
                            "src": "22916:2:136",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "22966:24:136",
                        "nodeType": "YulVariableDeclaration",
                        "src": "22966:24:136",
                        "value": {
                          "name": "deleteStart",
                          "nativeSrc": "22979:11:136",
                          "nodeType": "YulIdentifier",
                          "src": "22979:11:136"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nativeSrc": "22970:5:136",
                            "nodeType": "YulTypedName",
                            "src": "22970:5:136",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "23064:20:136",
                          "nodeType": "YulBlock",
                          "src": "23064:20:136",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "23073:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "23073:5:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "23080:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "23080:1:136",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nativeSrc": "23066:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23066:6:136"
                                },
                                "nativeSrc": "23066:16:136",
                                "nodeType": "YulFunctionCall",
                                "src": "23066:16:136"
                              },
                              "nativeSrc": "23066:16:136",
                              "nodeType": "YulExpressionStatement",
                              "src": "23066:16:136"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nativeSrc": "23014:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "23014:5:136"
                            },
                            {
                              "name": "_1",
                              "nativeSrc": "23021:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "23021:2:136"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "23011:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "23011:2:136"
                          },
                          "nativeSrc": "23011:13:136",
                          "nodeType": "YulFunctionCall",
                          "src": "23011:13:136"
                        },
                        "nativeSrc": "23003:81:136",
                        "nodeType": "YulForLoop",
                        "post": {
                          "nativeSrc": "23025:26:136",
                          "nodeType": "YulBlock",
                          "src": "23025:26:136",
                          "statements": [
                            {
                              "nativeSrc": "23027:22:136",
                              "nodeType": "YulAssignment",
                              "src": "23027:22:136",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "23040:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "23040:5:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "23047:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "23047:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "23036:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23036:3:136"
                                },
                                "nativeSrc": "23036:13:136",
                                "nodeType": "YulFunctionCall",
                                "src": "23036:13:136"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nativeSrc": "23027:5:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23027:5:136"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nativeSrc": "23007:3:136",
                          "nodeType": "YulBlock",
                          "src": "23007:3:136",
                          "statements": []
                        },
                        "src": "23003:81:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "22679:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "22679:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22684:2:136",
                        "nodeType": "YulLiteral",
                        "src": "22684:2:136",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "22676:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "22676:2:136"
                    },
                    "nativeSrc": "22676:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "22676:11:136"
                  },
                  "nativeSrc": "22673:421:136",
                  "nodeType": "YulIf",
                  "src": "22673:421:136"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nativeSrc": "22582:518:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nativeSrc": "22635:5:136",
                "nodeType": "YulTypedName",
                "src": "22635:5:136",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "22642:3:136",
                "nodeType": "YulTypedName",
                "src": "22642:3:136",
                "type": ""
              },
              {
                "name": "startIndex",
                "nativeSrc": "22647:10:136",
                "nodeType": "YulTypedName",
                "src": "22647:10:136",
                "type": ""
              }
            ],
            "src": "22582:518:136"
          },
          {
            "body": {
              "nativeSrc": "23190:81:136",
              "nodeType": "YulBlock",
              "src": "23190:81:136",
              "statements": [
                {
                  "nativeSrc": "23200:65:136",
                  "nodeType": "YulAssignment",
                  "src": "23200:65:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nativeSrc": "23215:4:136",
                            "nodeType": "YulIdentifier",
                            "src": "23215:4:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "23233:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "23233:1:136",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nativeSrc": "23236:3:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "23236:3:136"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "23229:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23229:3:136"
                                    },
                                    "nativeSrc": "23229:11:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23229:11:136"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "23246:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "23246:1:136",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "23242:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23242:3:136"
                                    },
                                    "nativeSrc": "23242:6:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23242:6:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "23225:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23225:3:136"
                                },
                                "nativeSrc": "23225:24:136",
                                "nodeType": "YulFunctionCall",
                                "src": "23225:24:136"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "23221:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "23221:3:136"
                            },
                            "nativeSrc": "23221:29:136",
                            "nodeType": "YulFunctionCall",
                            "src": "23221:29:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "23211:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "23211:3:136"
                        },
                        "nativeSrc": "23211:40:136",
                        "nodeType": "YulFunctionCall",
                        "src": "23211:40:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "23257:1:136",
                            "nodeType": "YulLiteral",
                            "src": "23257:1:136",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nativeSrc": "23260:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "23260:3:136"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "23253:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "23253:3:136"
                        },
                        "nativeSrc": "23253:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "23253:11:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "23208:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "23208:2:136"
                    },
                    "nativeSrc": "23208:57:136",
                    "nodeType": "YulFunctionCall",
                    "src": "23208:57:136"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nativeSrc": "23200:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "23200:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nativeSrc": "23105:166:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "23167:4:136",
                "nodeType": "YulTypedName",
                "src": "23167:4:136",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "23173:3:136",
                "nodeType": "YulTypedName",
                "src": "23173:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nativeSrc": "23181:4:136",
                "nodeType": "YulTypedName",
                "src": "23181:4:136",
                "type": ""
              }
            ],
            "src": "23105:166:136"
          },
          {
            "body": {
              "nativeSrc": "23379:1095:136",
              "nodeType": "YulBlock",
              "src": "23379:1095:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "23420:22:136",
                    "nodeType": "YulBlock",
                    "src": "23420:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "23422:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "23422:16:136"
                          },
                          "nativeSrc": "23422:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "23422:18:136"
                        },
                        "nativeSrc": "23422:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "23422:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "23395:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "23395:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "23400:18:136",
                        "nodeType": "YulLiteral",
                        "src": "23400:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "23392:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "23392:2:136"
                    },
                    "nativeSrc": "23392:27:136",
                    "nodeType": "YulFunctionCall",
                    "src": "23392:27:136"
                  },
                  "nativeSrc": "23389:53:136",
                  "nodeType": "YulIf",
                  "src": "23389:53:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "23495:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "23495:4:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "23533:4:136",
                                "nodeType": "YulIdentifier",
                                "src": "23533:4:136"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "23527:5:136",
                              "nodeType": "YulIdentifier",
                              "src": "23527:5:136"
                            },
                            "nativeSrc": "23527:11:136",
                            "nodeType": "YulFunctionCall",
                            "src": "23527:11:136"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "23501:25:136",
                          "nodeType": "YulIdentifier",
                          "src": "23501:25:136"
                        },
                        "nativeSrc": "23501:38:136",
                        "nodeType": "YulFunctionCall",
                        "src": "23501:38:136"
                      },
                      {
                        "name": "len",
                        "nativeSrc": "23541:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "23541:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "23451:43:136",
                      "nodeType": "YulIdentifier",
                      "src": "23451:43:136"
                    },
                    "nativeSrc": "23451:94:136",
                    "nodeType": "YulFunctionCall",
                    "src": "23451:94:136"
                  },
                  "nativeSrc": "23451:94:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "23451:94:136"
                },
                {
                  "nativeSrc": "23554:18:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23554:18:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "23571:1:136",
                    "nodeType": "YulLiteral",
                    "src": "23571:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "23558:9:136",
                      "nodeType": "YulTypedName",
                      "src": "23558:9:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "23615:601:136",
                        "nodeType": "YulBlock",
                        "src": "23615:601:136",
                        "statements": [
                          {
                            "nativeSrc": "23629:32:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "23629:32:136",
                            "value": {
                              "arguments": [
                                {
                                  "name": "len",
                                  "nativeSrc": "23648:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23648:3:136"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "23657:2:136",
                                      "nodeType": "YulLiteral",
                                      "src": "23657:2:136",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "23653:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "23653:3:136"
                                  },
                                  "nativeSrc": "23653:7:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "23653:7:136"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "23644:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "23644:3:136"
                              },
                              "nativeSrc": "23644:17:136",
                              "nodeType": "YulFunctionCall",
                              "src": "23644:17:136"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "23633:7:136",
                                "nodeType": "YulTypedName",
                                "src": "23633:7:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "23674:49:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "23674:49:136",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "23718:4:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23718:4:136"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "23688:29:136",
                                "nodeType": "YulIdentifier",
                                "src": "23688:29:136"
                              },
                              "nativeSrc": "23688:35:136",
                              "nodeType": "YulFunctionCall",
                              "src": "23688:35:136"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "23678:6:136",
                                "nodeType": "YulTypedName",
                                "src": "23678:6:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "23736:10:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "23736:10:136",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "23745:1:136",
                              "nodeType": "YulLiteral",
                              "src": "23745:1:136",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "23740:1:136",
                                "nodeType": "YulTypedName",
                                "src": "23740:1:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "23816:172:136",
                              "nodeType": "YulBlock",
                              "src": "23816:172:136",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "23841:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "23841:6:136"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nativeSrc": "23866:3:136",
                                                "nodeType": "YulIdentifier",
                                                "src": "23866:3:136"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "23871:9:136",
                                                "nodeType": "YulIdentifier",
                                                "src": "23871:9:136"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "23862:3:136",
                                              "nodeType": "YulIdentifier",
                                              "src": "23862:3:136"
                                            },
                                            "nativeSrc": "23862:19:136",
                                            "nodeType": "YulFunctionCall",
                                            "src": "23862:19:136"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nativeSrc": "23849:12:136",
                                          "nodeType": "YulIdentifier",
                                          "src": "23849:12:136"
                                        },
                                        "nativeSrc": "23849:33:136",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23849:33:136"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "23834:6:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23834:6:136"
                                    },
                                    "nativeSrc": "23834:49:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23834:49:136"
                                  },
                                  "nativeSrc": "23834:49:136",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "23834:49:136"
                                },
                                {
                                  "nativeSrc": "23900:24:136",
                                  "nodeType": "YulAssignment",
                                  "src": "23900:24:136",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "23914:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "23914:6:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "23922:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "23922:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "23910:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23910:3:136"
                                    },
                                    "nativeSrc": "23910:14:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23910:14:136"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "23900:6:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23900:6:136"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "23941:33:136",
                                  "nodeType": "YulAssignment",
                                  "src": "23941:33:136",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "23958:9:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "23958:9:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "23969:4:136",
                                        "nodeType": "YulLiteral",
                                        "src": "23969:4:136",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "23954:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23954:3:136"
                                    },
                                    "nativeSrc": "23954:20:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23954:20:136"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "23941:9:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23941:9:136"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "23770:1:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23770:1:136"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "23773:7:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "23773:7:136"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "23767:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "23767:2:136"
                              },
                              "nativeSrc": "23767:14:136",
                              "nodeType": "YulFunctionCall",
                              "src": "23767:14:136"
                            },
                            "nativeSrc": "23759:229:136",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "23782:21:136",
                              "nodeType": "YulBlock",
                              "src": "23782:21:136",
                              "statements": [
                                {
                                  "nativeSrc": "23784:17:136",
                                  "nodeType": "YulAssignment",
                                  "src": "23784:17:136",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "23793:1:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "23793:1:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "23796:4:136",
                                        "nodeType": "YulLiteral",
                                        "src": "23796:4:136",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "23789:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23789:3:136"
                                    },
                                    "nativeSrc": "23789:12:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23789:12:136"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "23784:1:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "23784:1:136"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "23763:3:136",
                              "nodeType": "YulBlock",
                              "src": "23763:3:136",
                              "statements": []
                            },
                            "src": "23759:229:136"
                          },
                          {
                            "body": {
                              "nativeSrc": "24033:127:136",
                              "nodeType": "YulBlock",
                              "src": "24033:127:136",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "24058:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "24058:6:136"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src",
                                                    "nativeSrc": "24087:3:136",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24087:3:136"
                                                  },
                                                  {
                                                    "name": "srcOffset",
                                                    "nativeSrc": "24092:9:136",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24092:9:136"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "24083:3:136",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24083:3:136"
                                                },
                                                "nativeSrc": "24083:19:136",
                                                "nodeType": "YulFunctionCall",
                                                "src": "24083:19:136"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nativeSrc": "24070:12:136",
                                              "nodeType": "YulIdentifier",
                                              "src": "24070:12:136"
                                            },
                                            "nativeSrc": "24070:33:136",
                                            "nodeType": "YulFunctionCall",
                                            "src": "24070:33:136"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "24121:1:136",
                                                            "nodeType": "YulLiteral",
                                                            "src": "24121:1:136",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "len",
                                                            "nativeSrc": "24124:3:136",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "24124:3:136"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "24117:3:136",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "24117:3:136"
                                                        },
                                                        "nativeSrc": "24117:11:136",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "24117:11:136"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "24130:3:136",
                                                        "nodeType": "YulLiteral",
                                                        "src": "24130:3:136",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "24113:3:136",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "24113:3:136"
                                                    },
                                                    "nativeSrc": "24113:21:136",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "24113:21:136"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "24140:1:136",
                                                        "nodeType": "YulLiteral",
                                                        "src": "24140:1:136",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "24136:3:136",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "24136:3:136"
                                                    },
                                                    "nativeSrc": "24136:6:136",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "24136:6:136"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "24109:3:136",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24109:3:136"
                                                },
                                                "nativeSrc": "24109:34:136",
                                                "nodeType": "YulFunctionCall",
                                                "src": "24109:34:136"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "24105:3:136",
                                              "nodeType": "YulIdentifier",
                                              "src": "24105:3:136"
                                            },
                                            "nativeSrc": "24105:39:136",
                                            "nodeType": "YulFunctionCall",
                                            "src": "24105:39:136"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "24066:3:136",
                                          "nodeType": "YulIdentifier",
                                          "src": "24066:3:136"
                                        },
                                        "nativeSrc": "24066:79:136",
                                        "nodeType": "YulFunctionCall",
                                        "src": "24066:79:136"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "24051:6:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "24051:6:136"
                                    },
                                    "nativeSrc": "24051:95:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "24051:95:136"
                                  },
                                  "nativeSrc": "24051:95:136",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "24051:95:136"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "24007:7:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "24007:7:136"
                                },
                                {
                                  "name": "len",
                                  "nativeSrc": "24016:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "24016:3:136"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "24004:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "24004:2:136"
                              },
                              "nativeSrc": "24004:16:136",
                              "nodeType": "YulFunctionCall",
                              "src": "24004:16:136"
                            },
                            "nativeSrc": "24001:159:136",
                            "nodeType": "YulIf",
                            "src": "24001:159:136"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "24180:4:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "24180:4:136"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "24194:1:136",
                                          "nodeType": "YulLiteral",
                                          "src": "24194:1:136",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "len",
                                          "nativeSrc": "24197:3:136",
                                          "nodeType": "YulIdentifier",
                                          "src": "24197:3:136"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "24190:3:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "24190:3:136"
                                      },
                                      "nativeSrc": "24190:11:136",
                                      "nodeType": "YulFunctionCall",
                                      "src": "24190:11:136"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "24203:1:136",
                                      "nodeType": "YulLiteral",
                                      "src": "24203:1:136",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "24186:3:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "24186:3:136"
                                  },
                                  "nativeSrc": "24186:19:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "24186:19:136"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "24173:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "24173:6:136"
                              },
                              "nativeSrc": "24173:33:136",
                              "nodeType": "YulFunctionCall",
                              "src": "24173:33:136"
                            },
                            "nativeSrc": "24173:33:136",
                            "nodeType": "YulExpressionStatement",
                            "src": "24173:33:136"
                          }
                        ]
                      },
                      "nativeSrc": "23608:608:136",
                      "nodeType": "YulCase",
                      "src": "23608:608:136",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "23613:1:136",
                        "nodeType": "YulLiteral",
                        "src": "23613:1:136",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "24233:235:136",
                        "nodeType": "YulBlock",
                        "src": "24233:235:136",
                        "statements": [
                          {
                            "nativeSrc": "24247:14:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "24247:14:136",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "24260:1:136",
                              "nodeType": "YulLiteral",
                              "src": "24260:1:136",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nativeSrc": "24251:5:136",
                                "nodeType": "YulTypedName",
                                "src": "24251:5:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "24293:74:136",
                              "nodeType": "YulBlock",
                              "src": "24293:74:136",
                              "statements": [
                                {
                                  "nativeSrc": "24311:42:136",
                                  "nodeType": "YulAssignment",
                                  "src": "24311:42:136",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "24337:3:136",
                                            "nodeType": "YulIdentifier",
                                            "src": "24337:3:136"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "24342:9:136",
                                            "nodeType": "YulIdentifier",
                                            "src": "24342:9:136"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "24333:3:136",
                                          "nodeType": "YulIdentifier",
                                          "src": "24333:3:136"
                                        },
                                        "nativeSrc": "24333:19:136",
                                        "nodeType": "YulFunctionCall",
                                        "src": "24333:19:136"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nativeSrc": "24320:12:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "24320:12:136"
                                    },
                                    "nativeSrc": "24320:33:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "24320:33:136"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "24311:5:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "24311:5:136"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "len",
                              "nativeSrc": "24277:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "24277:3:136"
                            },
                            "nativeSrc": "24274:93:136",
                            "nodeType": "YulIf",
                            "src": "24274:93:136"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "24387:4:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "24387:4:136"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "24446:5:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "24446:5:136"
                                    },
                                    {
                                      "name": "len",
                                      "nativeSrc": "24453:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "24453:3:136"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "24393:52:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "24393:52:136"
                                  },
                                  "nativeSrc": "24393:64:136",
                                  "nodeType": "YulFunctionCall",
                                  "src": "24393:64:136"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "24380:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "24380:6:136"
                              },
                              "nativeSrc": "24380:78:136",
                              "nodeType": "YulFunctionCall",
                              "src": "24380:78:136"
                            },
                            "nativeSrc": "24380:78:136",
                            "nodeType": "YulExpressionStatement",
                            "src": "24380:78:136"
                          }
                        ]
                      },
                      "nativeSrc": "24225:243:136",
                      "nodeType": "YulCase",
                      "src": "24225:243:136",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "23591:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "23591:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "23596:2:136",
                        "nodeType": "YulLiteral",
                        "src": "23596:2:136",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "23588:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "23588:2:136"
                    },
                    "nativeSrc": "23588:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "23588:11:136"
                  },
                  "nativeSrc": "23581:887:136",
                  "nodeType": "YulSwitch",
                  "src": "23581:887:136"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
            "nativeSrc": "23276:1198:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "23359:4:136",
                "nodeType": "YulTypedName",
                "src": "23359:4:136",
                "type": ""
              },
              {
                "name": "src",
                "nativeSrc": "23365:3:136",
                "nodeType": "YulTypedName",
                "src": "23365:3:136",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "23370:3:136",
                "nodeType": "YulTypedName",
                "src": "23370:3:136",
                "type": ""
              }
            ],
            "src": "23276:1198:136"
          },
          {
            "body": {
              "nativeSrc": "24526:169:136",
              "nodeType": "YulBlock",
              "src": "24526:169:136",
              "statements": [
                {
                  "nativeSrc": "24536:16:136",
                  "nodeType": "YulAssignment",
                  "src": "24536:16:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "24547:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "24547:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "24550:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "24550:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "24543:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "24543:3:136"
                    },
                    "nativeSrc": "24543:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24543:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "24536:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "24536:3:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "24561:21:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24561:21:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "sum",
                        "nativeSrc": "24575:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "24575:3:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "24580:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "24580:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "24571:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "24571:3:136"
                    },
                    "nativeSrc": "24571:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24571:11:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "24565:2:136",
                      "nodeType": "YulTypedName",
                      "src": "24565:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "24591:19:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24591:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "24605:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "24605:1:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24608:1:136",
                        "nodeType": "YulLiteral",
                        "src": "24608:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "24601:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "24601:3:136"
                    },
                    "nativeSrc": "24601:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24601:9:136"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nativeSrc": "24595:2:136",
                      "nodeType": "YulTypedName",
                      "src": "24595:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "24667:22:136",
                    "nodeType": "YulBlock",
                    "src": "24667:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "24669:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "24669:16:136"
                          },
                          "nativeSrc": "24669:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "24669:18:136"
                        },
                        "nativeSrc": "24669:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "24669:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nativeSrc": "24636:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "24636:2:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "24629:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "24629:6:136"
                            },
                            "nativeSrc": "24629:10:136",
                            "nodeType": "YulFunctionCall",
                            "src": "24629:10:136"
                          },
                          {
                            "name": "_1",
                            "nativeSrc": "24641:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "24641:2:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "24625:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "24625:3:136"
                        },
                        "nativeSrc": "24625:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "24625:19:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nativeSrc": "24650:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "24650:2:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "24661:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "24661:2:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "24654:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "24654:6:136"
                            },
                            "nativeSrc": "24654:10:136",
                            "nodeType": "YulFunctionCall",
                            "src": "24654:10:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "24646:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "24646:3:136"
                        },
                        "nativeSrc": "24646:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "24646:19:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "24622:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "24622:2:136"
                    },
                    "nativeSrc": "24622:44:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24622:44:136"
                  },
                  "nativeSrc": "24619:70:136",
                  "nodeType": "YulIf",
                  "src": "24619:70:136"
                }
              ]
            },
            "name": "checked_add_t_int256",
            "nativeSrc": "24479:216:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "24509:1:136",
                "nodeType": "YulTypedName",
                "src": "24509:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "24512:1:136",
                "nodeType": "YulTypedName",
                "src": "24512:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "24518:3:136",
                "nodeType": "YulTypedName",
                "src": "24518:3:136",
                "type": ""
              }
            ],
            "src": "24479:216:136"
          },
          {
            "body": {
              "nativeSrc": "24743:93:136",
              "nodeType": "YulBlock",
              "src": "24743:93:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "24779:22:136",
                    "nodeType": "YulBlock",
                    "src": "24779:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "24781:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "24781:16:136"
                          },
                          "nativeSrc": "24781:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "24781:18:136"
                        },
                        "nativeSrc": "24781:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "24781:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "24759:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "24759:5:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "24770:3:136",
                            "nodeType": "YulLiteral",
                            "src": "24770:3:136",
                            "type": "",
                            "value": "255"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24775:1:136",
                            "nodeType": "YulLiteral",
                            "src": "24775:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "24766:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "24766:3:136"
                        },
                        "nativeSrc": "24766:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "24766:11:136"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "24756:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "24756:2:136"
                    },
                    "nativeSrc": "24756:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24756:22:136"
                  },
                  "nativeSrc": "24753:48:136",
                  "nodeType": "YulIf",
                  "src": "24753:48:136"
                },
                {
                  "nativeSrc": "24810:20:136",
                  "nodeType": "YulAssignment",
                  "src": "24810:20:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "24821:1:136",
                        "nodeType": "YulLiteral",
                        "src": "24821:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "value",
                        "nativeSrc": "24824:5:136",
                        "nodeType": "YulIdentifier",
                        "src": "24824:5:136"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "24817:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "24817:3:136"
                    },
                    "nativeSrc": "24817:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24817:13:136"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nativeSrc": "24810:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "24810:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "negate_t_int256",
            "nativeSrc": "24700:136:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "24725:5:136",
                "nodeType": "YulTypedName",
                "src": "24725:5:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nativeSrc": "24735:3:136",
                "nodeType": "YulTypedName",
                "src": "24735:3:136",
                "type": ""
              }
            ],
            "src": "24700:136:136"
          },
          {
            "body": {
              "nativeSrc": "24910:306:136",
              "nodeType": "YulBlock",
              "src": "24910:306:136",
              "statements": [
                {
                  "nativeSrc": "24920:10:136",
                  "nodeType": "YulAssignment",
                  "src": "24920:10:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "24929:1:136",
                    "nodeType": "YulLiteral",
                    "src": "24929:1:136",
                    "type": "",
                    "value": "1"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "24920:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "24920:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "24939:13:136",
                  "nodeType": "YulAssignment",
                  "src": "24939:13:136",
                  "value": {
                    "name": "_base",
                    "nativeSrc": "24947:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "24947:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "base",
                      "nativeSrc": "24939:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "24939:4:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "24997:213:136",
                    "nodeType": "YulBlock",
                    "src": "24997:213:136",
                    "statements": [
                      {
                        "body": {
                          "nativeSrc": "25039:22:136",
                          "nodeType": "YulBlock",
                          "src": "25039:22:136",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "functionName": {
                                  "name": "panic_error_0x11",
                                  "nativeSrc": "25041:16:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25041:16:136"
                                },
                                "nativeSrc": "25041:18:136",
                                "nodeType": "YulFunctionCall",
                                "src": "25041:18:136"
                              },
                              "nativeSrc": "25041:18:136",
                              "nodeType": "YulExpressionStatement",
                              "src": "25041:18:136"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "base",
                              "nativeSrc": "25017:4:136",
                              "nodeType": "YulIdentifier",
                              "src": "25017:4:136"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "max",
                                  "nativeSrc": "25027:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25027:3:136"
                                },
                                {
                                  "name": "base",
                                  "nativeSrc": "25032:4:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25032:4:136"
                                }
                              ],
                              "functionName": {
                                "name": "div",
                                "nativeSrc": "25023:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "25023:3:136"
                              },
                              "nativeSrc": "25023:14:136",
                              "nodeType": "YulFunctionCall",
                              "src": "25023:14:136"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nativeSrc": "25014:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "25014:2:136"
                          },
                          "nativeSrc": "25014:24:136",
                          "nodeType": "YulFunctionCall",
                          "src": "25014:24:136"
                        },
                        "nativeSrc": "25011:50:136",
                        "nodeType": "YulIf",
                        "src": "25011:50:136"
                      },
                      {
                        "body": {
                          "nativeSrc": "25094:29:136",
                          "nodeType": "YulBlock",
                          "src": "25094:29:136",
                          "statements": [
                            {
                              "nativeSrc": "25096:25:136",
                              "nodeType": "YulAssignment",
                              "src": "25096:25:136",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power",
                                    "nativeSrc": "25109:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "25109:5:136"
                                  },
                                  {
                                    "name": "base",
                                    "nativeSrc": "25116:4:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "25116:4:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "25105:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25105:3:136"
                                },
                                "nativeSrc": "25105:16:136",
                                "nodeType": "YulFunctionCall",
                                "src": "25105:16:136"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nativeSrc": "25096:5:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25096:5:136"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "exponent",
                              "nativeSrc": "25081:8:136",
                              "nodeType": "YulIdentifier",
                              "src": "25081:8:136"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25091:1:136",
                              "nodeType": "YulLiteral",
                              "src": "25091:1:136",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "25077:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "25077:3:136"
                          },
                          "nativeSrc": "25077:16:136",
                          "nodeType": "YulFunctionCall",
                          "src": "25077:16:136"
                        },
                        "nativeSrc": "25074:49:136",
                        "nodeType": "YulIf",
                        "src": "25074:49:136"
                      },
                      {
                        "nativeSrc": "25136:23:136",
                        "nodeType": "YulAssignment",
                        "src": "25136:23:136",
                        "value": {
                          "arguments": [
                            {
                              "name": "base",
                              "nativeSrc": "25148:4:136",
                              "nodeType": "YulIdentifier",
                              "src": "25148:4:136"
                            },
                            {
                              "name": "base",
                              "nativeSrc": "25154:4:136",
                              "nodeType": "YulIdentifier",
                              "src": "25154:4:136"
                            }
                          ],
                          "functionName": {
                            "name": "mul",
                            "nativeSrc": "25144:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "25144:3:136"
                          },
                          "nativeSrc": "25144:15:136",
                          "nodeType": "YulFunctionCall",
                          "src": "25144:15:136"
                        },
                        "variableNames": [
                          {
                            "name": "base",
                            "nativeSrc": "25136:4:136",
                            "nodeType": "YulIdentifier",
                            "src": "25136:4:136"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25172:28:136",
                        "nodeType": "YulAssignment",
                        "src": "25172:28:136",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "25188:1:136",
                              "nodeType": "YulLiteral",
                              "src": "25188:1:136",
                              "type": "",
                              "value": "1"
                            },
                            {
                              "name": "exponent",
                              "nativeSrc": "25191:8:136",
                              "nodeType": "YulIdentifier",
                              "src": "25191:8:136"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nativeSrc": "25184:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "25184:3:136"
                          },
                          "nativeSrc": "25184:16:136",
                          "nodeType": "YulFunctionCall",
                          "src": "25184:16:136"
                        },
                        "variableNames": [
                          {
                            "name": "exponent",
                            "nativeSrc": "25172:8:136",
                            "nodeType": "YulIdentifier",
                            "src": "25172:8:136"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "exponent",
                        "nativeSrc": "24972:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "24972:8:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24982:1:136",
                        "nodeType": "YulLiteral",
                        "src": "24982:1:136",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "24969:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "24969:2:136"
                    },
                    "nativeSrc": "24969:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "24969:15:136"
                  },
                  "nativeSrc": "24961:249:136",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "24985:3:136",
                    "nodeType": "YulBlock",
                    "src": "24985:3:136",
                    "statements": []
                  },
                  "pre": {
                    "nativeSrc": "24965:3:136",
                    "nodeType": "YulBlock",
                    "src": "24965:3:136",
                    "statements": []
                  },
                  "src": "24961:249:136"
                }
              ]
            },
            "name": "checked_exp_helper",
            "nativeSrc": "24841:375:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "_base",
                "nativeSrc": "24869:5:136",
                "nodeType": "YulTypedName",
                "src": "24869:5:136",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "24876:8:136",
                "nodeType": "YulTypedName",
                "src": "24876:8:136",
                "type": ""
              },
              {
                "name": "max",
                "nativeSrc": "24886:3:136",
                "nodeType": "YulTypedName",
                "src": "24886:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "24894:5:136",
                "nodeType": "YulTypedName",
                "src": "24894:5:136",
                "type": ""
              },
              {
                "name": "base",
                "nativeSrc": "24901:4:136",
                "nodeType": "YulTypedName",
                "src": "24901:4:136",
                "type": ""
              }
            ],
            "src": "24841:375:136"
          },
          {
            "body": {
              "nativeSrc": "25280:843:136",
              "nodeType": "YulBlock",
              "src": "25280:843:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "25318:52:136",
                    "nodeType": "YulBlock",
                    "src": "25318:52:136",
                    "statements": [
                      {
                        "nativeSrc": "25332:10:136",
                        "nodeType": "YulAssignment",
                        "src": "25332:10:136",
                        "value": {
                          "kind": "number",
                          "nativeSrc": "25341:1:136",
                          "nodeType": "YulLiteral",
                          "src": "25341:1:136",
                          "type": "",
                          "value": "1"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nativeSrc": "25332:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "25332:5:136"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25355:5:136",
                        "nodeType": "YulLeave",
                        "src": "25355:5:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "exponent",
                        "nativeSrc": "25300:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "25300:8:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "25293:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "25293:6:136"
                    },
                    "nativeSrc": "25293:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "25293:16:136"
                  },
                  "nativeSrc": "25290:80:136",
                  "nodeType": "YulIf",
                  "src": "25290:80:136"
                },
                {
                  "body": {
                    "nativeSrc": "25403:52:136",
                    "nodeType": "YulBlock",
                    "src": "25403:52:136",
                    "statements": [
                      {
                        "nativeSrc": "25417:10:136",
                        "nodeType": "YulAssignment",
                        "src": "25417:10:136",
                        "value": {
                          "kind": "number",
                          "nativeSrc": "25426:1:136",
                          "nodeType": "YulLiteral",
                          "src": "25426:1:136",
                          "type": "",
                          "value": "0"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nativeSrc": "25417:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "25417:5:136"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25440:5:136",
                        "nodeType": "YulLeave",
                        "src": "25440:5:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "25389:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "25389:4:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "25382:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "25382:6:136"
                    },
                    "nativeSrc": "25382:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "25382:12:136"
                  },
                  "nativeSrc": "25379:76:136",
                  "nodeType": "YulIf",
                  "src": "25379:76:136"
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "25491:52:136",
                        "nodeType": "YulBlock",
                        "src": "25491:52:136",
                        "statements": [
                          {
                            "nativeSrc": "25505:10:136",
                            "nodeType": "YulAssignment",
                            "src": "25505:10:136",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "25514:1:136",
                              "nodeType": "YulLiteral",
                              "src": "25514:1:136",
                              "type": "",
                              "value": "1"
                            },
                            "variableNames": [
                              {
                                "name": "power",
                                "nativeSrc": "25505:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "25505:5:136"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "25528:5:136",
                            "nodeType": "YulLeave",
                            "src": "25528:5:136"
                          }
                        ]
                      },
                      "nativeSrc": "25484:59:136",
                      "nodeType": "YulCase",
                      "src": "25484:59:136",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "25489:1:136",
                        "nodeType": "YulLiteral",
                        "src": "25489:1:136",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "25559:167:136",
                        "nodeType": "YulBlock",
                        "src": "25559:167:136",
                        "statements": [
                          {
                            "body": {
                              "nativeSrc": "25594:22:136",
                              "nodeType": "YulBlock",
                              "src": "25594:22:136",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "panic_error_0x11",
                                      "nativeSrc": "25596:16:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "25596:16:136"
                                    },
                                    "nativeSrc": "25596:18:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "25596:18:136"
                                  },
                                  "nativeSrc": "25596:18:136",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "25596:18:136"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "exponent",
                                  "nativeSrc": "25579:8:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25579:8:136"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "25589:3:136",
                                  "nodeType": "YulLiteral",
                                  "src": "25589:3:136",
                                  "type": "",
                                  "value": "255"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nativeSrc": "25576:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "25576:2:136"
                              },
                              "nativeSrc": "25576:17:136",
                              "nodeType": "YulFunctionCall",
                              "src": "25576:17:136"
                            },
                            "nativeSrc": "25573:43:136",
                            "nodeType": "YulIf",
                            "src": "25573:43:136"
                          },
                          {
                            "nativeSrc": "25629:25:136",
                            "nodeType": "YulAssignment",
                            "src": "25629:25:136",
                            "value": {
                              "arguments": [
                                {
                                  "name": "exponent",
                                  "nativeSrc": "25642:8:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "25642:8:136"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "25652:1:136",
                                  "nodeType": "YulLiteral",
                                  "src": "25652:1:136",
                                  "type": "",
                                  "value": "1"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "25638:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "25638:3:136"
                              },
                              "nativeSrc": "25638:16:136",
                              "nodeType": "YulFunctionCall",
                              "src": "25638:16:136"
                            },
                            "variableNames": [
                              {
                                "name": "power",
                                "nativeSrc": "25629:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "25629:5:136"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "25667:11:136",
                            "nodeType": "YulVariableDeclaration",
                            "src": "25667:11:136",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "25677:1:136",
                              "nodeType": "YulLiteral",
                              "src": "25677:1:136",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "_1",
                                "nativeSrc": "25671:2:136",
                                "nodeType": "YulTypedName",
                                "src": "25671:2:136",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "25691:7:136",
                            "nodeType": "YulAssignment",
                            "src": "25691:7:136",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "25697:1:136",
                              "nodeType": "YulLiteral",
                              "src": "25697:1:136",
                              "type": "",
                              "value": "0"
                            },
                            "variableNames": [
                              {
                                "name": "_1",
                                "nativeSrc": "25691:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "25691:2:136"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "25711:5:136",
                            "nodeType": "YulLeave",
                            "src": "25711:5:136"
                          }
                        ]
                      },
                      "nativeSrc": "25552:174:136",
                      "nodeType": "YulCase",
                      "src": "25552:174:136",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "25557:1:136",
                        "nodeType": "YulLiteral",
                        "src": "25557:1:136",
                        "type": "",
                        "value": "2"
                      }
                    }
                  ],
                  "expression": {
                    "name": "base",
                    "nativeSrc": "25471:4:136",
                    "nodeType": "YulIdentifier",
                    "src": "25471:4:136"
                  },
                  "nativeSrc": "25464:262:136",
                  "nodeType": "YulSwitch",
                  "src": "25464:262:136"
                },
                {
                  "body": {
                    "nativeSrc": "25824:114:136",
                    "nodeType": "YulBlock",
                    "src": "25824:114:136",
                    "statements": [
                      {
                        "nativeSrc": "25838:28:136",
                        "nodeType": "YulAssignment",
                        "src": "25838:28:136",
                        "value": {
                          "arguments": [
                            {
                              "name": "base",
                              "nativeSrc": "25851:4:136",
                              "nodeType": "YulIdentifier",
                              "src": "25851:4:136"
                            },
                            {
                              "name": "exponent",
                              "nativeSrc": "25857:8:136",
                              "nodeType": "YulIdentifier",
                              "src": "25857:8:136"
                            }
                          ],
                          "functionName": {
                            "name": "exp",
                            "nativeSrc": "25847:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "25847:3:136"
                          },
                          "nativeSrc": "25847:19:136",
                          "nodeType": "YulFunctionCall",
                          "src": "25847:19:136"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nativeSrc": "25838:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "25838:5:136"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25879:11:136",
                        "nodeType": "YulVariableDeclaration",
                        "src": "25879:11:136",
                        "value": {
                          "kind": "number",
                          "nativeSrc": "25889:1:136",
                          "nodeType": "YulLiteral",
                          "src": "25889:1:136",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "_2",
                            "nativeSrc": "25883:2:136",
                            "nodeType": "YulTypedName",
                            "src": "25883:2:136",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25903:7:136",
                        "nodeType": "YulAssignment",
                        "src": "25903:7:136",
                        "value": {
                          "kind": "number",
                          "nativeSrc": "25909:1:136",
                          "nodeType": "YulLiteral",
                          "src": "25909:1:136",
                          "type": "",
                          "value": "0"
                        },
                        "variableNames": [
                          {
                            "name": "_2",
                            "nativeSrc": "25903:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "25903:2:136"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25923:5:136",
                        "nodeType": "YulLeave",
                        "src": "25923:5:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "base",
                                "nativeSrc": "25748:4:136",
                                "nodeType": "YulIdentifier",
                                "src": "25748:4:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "25754:2:136",
                                "nodeType": "YulLiteral",
                                "src": "25754:2:136",
                                "type": "",
                                "value": "11"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "25745:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "25745:2:136"
                            },
                            "nativeSrc": "25745:12:136",
                            "nodeType": "YulFunctionCall",
                            "src": "25745:12:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "exponent",
                                "nativeSrc": "25762:8:136",
                                "nodeType": "YulIdentifier",
                                "src": "25762:8:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "25772:2:136",
                                "nodeType": "YulLiteral",
                                "src": "25772:2:136",
                                "type": "",
                                "value": "78"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "25759:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "25759:2:136"
                            },
                            "nativeSrc": "25759:16:136",
                            "nodeType": "YulFunctionCall",
                            "src": "25759:16:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "25741:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "25741:3:136"
                        },
                        "nativeSrc": "25741:35:136",
                        "nodeType": "YulFunctionCall",
                        "src": "25741:35:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "base",
                                "nativeSrc": "25785:4:136",
                                "nodeType": "YulIdentifier",
                                "src": "25785:4:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "25791:3:136",
                                "nodeType": "YulLiteral",
                                "src": "25791:3:136",
                                "type": "",
                                "value": "307"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "25782:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "25782:2:136"
                            },
                            "nativeSrc": "25782:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "25782:13:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "exponent",
                                "nativeSrc": "25800:8:136",
                                "nodeType": "YulIdentifier",
                                "src": "25800:8:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "25810:2:136",
                                "nodeType": "YulLiteral",
                                "src": "25810:2:136",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "25797:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "25797:2:136"
                            },
                            "nativeSrc": "25797:16:136",
                            "nodeType": "YulFunctionCall",
                            "src": "25797:16:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "25778:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "25778:3:136"
                        },
                        "nativeSrc": "25778:36:136",
                        "nodeType": "YulFunctionCall",
                        "src": "25778:36:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "25738:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "25738:2:136"
                    },
                    "nativeSrc": "25738:77:136",
                    "nodeType": "YulFunctionCall",
                    "src": "25738:77:136"
                  },
                  "nativeSrc": "25735:203:136",
                  "nodeType": "YulIf",
                  "src": "25735:203:136"
                },
                {
                  "nativeSrc": "25947:65:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25947:65:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "25989:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "25989:4:136"
                      },
                      {
                        "name": "exponent",
                        "nativeSrc": "25995:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "25995:8:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "26009:1:136",
                            "nodeType": "YulLiteral",
                            "src": "26009:1:136",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nativeSrc": "26005:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26005:3:136"
                        },
                        "nativeSrc": "26005:6:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26005:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_helper",
                      "nativeSrc": "25970:18:136",
                      "nodeType": "YulIdentifier",
                      "src": "25970:18:136"
                    },
                    "nativeSrc": "25970:42:136",
                    "nodeType": "YulFunctionCall",
                    "src": "25970:42:136"
                  },
                  "variables": [
                    {
                      "name": "power_1",
                      "nativeSrc": "25951:7:136",
                      "nodeType": "YulTypedName",
                      "src": "25951:7:136",
                      "type": ""
                    },
                    {
                      "name": "base_1",
                      "nativeSrc": "25960:6:136",
                      "nodeType": "YulTypedName",
                      "src": "25960:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "26057:22:136",
                    "nodeType": "YulBlock",
                    "src": "26057:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "26059:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "26059:16:136"
                          },
                          "nativeSrc": "26059:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "26059:18:136"
                        },
                        "nativeSrc": "26059:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "26059:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "power_1",
                        "nativeSrc": "26027:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "26027:7:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "26044:1:136",
                                "nodeType": "YulLiteral",
                                "src": "26044:1:136",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "26040:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "26040:3:136"
                            },
                            "nativeSrc": "26040:6:136",
                            "nodeType": "YulFunctionCall",
                            "src": "26040:6:136"
                          },
                          {
                            "name": "base_1",
                            "nativeSrc": "26048:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "26048:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "div",
                          "nativeSrc": "26036:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26036:3:136"
                        },
                        "nativeSrc": "26036:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26036:19:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "26024:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "26024:2:136"
                    },
                    "nativeSrc": "26024:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26024:32:136"
                  },
                  "nativeSrc": "26021:58:136",
                  "nodeType": "YulIf",
                  "src": "26021:58:136"
                },
                {
                  "nativeSrc": "26088:29:136",
                  "nodeType": "YulAssignment",
                  "src": "26088:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "power_1",
                        "nativeSrc": "26101:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "26101:7:136"
                      },
                      {
                        "name": "base_1",
                        "nativeSrc": "26110:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "26110:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "26097:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "26097:3:136"
                    },
                    "nativeSrc": "26097:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26097:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "26088:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "26088:5:136"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_unsigned",
            "nativeSrc": "25221:902:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nativeSrc": "25251:4:136",
                "nodeType": "YulTypedName",
                "src": "25251:4:136",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "25257:8:136",
                "nodeType": "YulTypedName",
                "src": "25257:8:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "25270:5:136",
                "nodeType": "YulTypedName",
                "src": "25270:5:136",
                "type": ""
              }
            ],
            "src": "25221:902:136"
          },
          {
            "body": {
              "nativeSrc": "26198:61:136",
              "nodeType": "YulBlock",
              "src": "26198:61:136",
              "statements": [
                {
                  "nativeSrc": "26208:45:136",
                  "nodeType": "YulAssignment",
                  "src": "26208:45:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "26238:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "26238:4:136"
                      },
                      {
                        "name": "exponent",
                        "nativeSrc": "26244:8:136",
                        "nodeType": "YulIdentifier",
                        "src": "26244:8:136"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_unsigned",
                      "nativeSrc": "26217:20:136",
                      "nodeType": "YulIdentifier",
                      "src": "26217:20:136"
                    },
                    "nativeSrc": "26217:36:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26217:36:136"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "26208:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "26208:5:136"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_t_uint256_t_uint256",
            "nativeSrc": "26128:131:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nativeSrc": "26169:4:136",
                "nodeType": "YulTypedName",
                "src": "26169:4:136",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "26175:8:136",
                "nodeType": "YulTypedName",
                "src": "26175:8:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "26188:5:136",
                "nodeType": "YulTypedName",
                "src": "26188:5:136",
                "type": ""
              }
            ],
            "src": "26128:131:136"
          },
          {
            "body": {
              "nativeSrc": "26296:95:136",
              "nodeType": "YulBlock",
              "src": "26296:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "26313:1:136",
                        "nodeType": "YulLiteral",
                        "src": "26313:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "26320:3:136",
                            "nodeType": "YulLiteral",
                            "src": "26320:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26325:10:136",
                            "nodeType": "YulLiteral",
                            "src": "26325:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "26316:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26316:3:136"
                        },
                        "nativeSrc": "26316:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26316:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26306:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "26306:6:136"
                    },
                    "nativeSrc": "26306:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26306:31:136"
                  },
                  "nativeSrc": "26306:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "26306:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "26353:1:136",
                        "nodeType": "YulLiteral",
                        "src": "26353:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26356:4:136",
                        "nodeType": "YulLiteral",
                        "src": "26356:4:136",
                        "type": "",
                        "value": "0x12"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26346:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "26346:6:136"
                    },
                    "nativeSrc": "26346:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26346:15:136"
                  },
                  "nativeSrc": "26346:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "26346:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "26377:1:136",
                        "nodeType": "YulLiteral",
                        "src": "26377:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26380:4:136",
                        "nodeType": "YulLiteral",
                        "src": "26380:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "26370:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "26370:6:136"
                    },
                    "nativeSrc": "26370:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26370:15:136"
                  },
                  "nativeSrc": "26370:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "26370:15:136"
                }
              ]
            },
            "name": "panic_error_0x12",
            "nativeSrc": "26264:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "26264:127:136"
          },
          {
            "body": {
              "nativeSrc": "26442:74:136",
              "nodeType": "YulBlock",
              "src": "26442:74:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "26465:22:136",
                    "nodeType": "YulBlock",
                    "src": "26465:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nativeSrc": "26467:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "26467:16:136"
                          },
                          "nativeSrc": "26467:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "26467:18:136"
                        },
                        "nativeSrc": "26467:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "26467:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nativeSrc": "26462:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "26462:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "26455:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "26455:6:136"
                    },
                    "nativeSrc": "26455:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26455:9:136"
                  },
                  "nativeSrc": "26452:35:136",
                  "nodeType": "YulIf",
                  "src": "26452:35:136"
                },
                {
                  "nativeSrc": "26496:14:136",
                  "nodeType": "YulAssignment",
                  "src": "26496:14:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "26505:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "26505:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "26508:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "26508:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nativeSrc": "26501:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "26501:3:136"
                    },
                    "nativeSrc": "26501:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26501:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nativeSrc": "26496:1:136",
                      "nodeType": "YulIdentifier",
                      "src": "26496:1:136"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nativeSrc": "26396:120:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "26427:1:136",
                "nodeType": "YulTypedName",
                "src": "26427:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "26430:1:136",
                "nodeType": "YulTypedName",
                "src": "26430:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nativeSrc": "26436:1:136",
                "nodeType": "YulTypedName",
                "src": "26436:1:136",
                "type": ""
              }
            ],
            "src": "26396:120:136"
          },
          {
            "body": {
              "nativeSrc": "26567:138:136",
              "nodeType": "YulBlock",
              "src": "26567:138:136",
              "statements": [
                {
                  "nativeSrc": "26577:47:136",
                  "nodeType": "YulAssignment",
                  "src": "26577:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "26600:1:136",
                            "nodeType": "YulLiteral",
                            "src": "26600:1:136",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "name": "x",
                            "nativeSrc": "26603:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "26603:1:136"
                          }
                        ],
                        "functionName": {
                          "name": "signextend",
                          "nativeSrc": "26589:10:136",
                          "nodeType": "YulIdentifier",
                          "src": "26589:10:136"
                        },
                        "nativeSrc": "26589:16:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26589:16:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "26618:1:136",
                            "nodeType": "YulLiteral",
                            "src": "26618:1:136",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "name": "y",
                            "nativeSrc": "26621:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "26621:1:136"
                          }
                        ],
                        "functionName": {
                          "name": "signextend",
                          "nativeSrc": "26607:10:136",
                          "nodeType": "YulIdentifier",
                          "src": "26607:10:136"
                        },
                        "nativeSrc": "26607:16:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26607:16:136"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "26585:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "26585:3:136"
                    },
                    "nativeSrc": "26585:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26585:39:136"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "26577:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "26577:4:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "26677:22:136",
                    "nodeType": "YulBlock",
                    "src": "26677:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "26679:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "26679:16:136"
                          },
                          "nativeSrc": "26679:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "26679:18:136"
                        },
                        "nativeSrc": "26679:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "26679:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "diff",
                            "nativeSrc": "26643:4:136",
                            "nodeType": "YulIdentifier",
                            "src": "26643:4:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "26653:3:136",
                                "nodeType": "YulLiteral",
                                "src": "26653:3:136",
                                "type": "",
                                "value": "127"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "26649:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "26649:3:136"
                            },
                            "nativeSrc": "26649:8:136",
                            "nodeType": "YulFunctionCall",
                            "src": "26649:8:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "26639:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26639:3:136"
                        },
                        "nativeSrc": "26639:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26639:19:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "diff",
                            "nativeSrc": "26664:4:136",
                            "nodeType": "YulIdentifier",
                            "src": "26664:4:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26670:4:136",
                            "nodeType": "YulLiteral",
                            "src": "26670:4:136",
                            "type": "",
                            "value": "0x7f"
                          }
                        ],
                        "functionName": {
                          "name": "sgt",
                          "nativeSrc": "26660:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26660:3:136"
                        },
                        "nativeSrc": "26660:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26660:15:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "26636:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "26636:2:136"
                    },
                    "nativeSrc": "26636:40:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26636:40:136"
                  },
                  "nativeSrc": "26633:66:136",
                  "nodeType": "YulIf",
                  "src": "26633:66:136"
                }
              ]
            },
            "name": "checked_sub_t_int8",
            "nativeSrc": "26521:184:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "26549:1:136",
                "nodeType": "YulTypedName",
                "src": "26549:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "26552:1:136",
                "nodeType": "YulTypedName",
                "src": "26552:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "26558:4:136",
                "nodeType": "YulTypedName",
                "src": "26558:4:136",
                "type": ""
              }
            ],
            "src": "26521:184:136"
          },
          {
            "body": {
              "nativeSrc": "26778:72:136",
              "nodeType": "YulBlock",
              "src": "26778:72:136",
              "statements": [
                {
                  "nativeSrc": "26788:56:136",
                  "nodeType": "YulAssignment",
                  "src": "26788:56:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "26818:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "26818:4:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "exponent",
                            "nativeSrc": "26828:8:136",
                            "nodeType": "YulIdentifier",
                            "src": "26828:8:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26838:4:136",
                            "nodeType": "YulLiteral",
                            "src": "26838:4:136",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "26824:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26824:3:136"
                        },
                        "nativeSrc": "26824:19:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26824:19:136"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_unsigned",
                      "nativeSrc": "26797:20:136",
                      "nodeType": "YulIdentifier",
                      "src": "26797:20:136"
                    },
                    "nativeSrc": "26797:47:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26797:47:136"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "26788:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "26788:5:136"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_t_uint256_t_uint8",
            "nativeSrc": "26710:140:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nativeSrc": "26749:4:136",
                "nodeType": "YulTypedName",
                "src": "26749:4:136",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "26755:8:136",
                "nodeType": "YulTypedName",
                "src": "26755:8:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "26768:5:136",
                "nodeType": "YulTypedName",
                "src": "26768:5:136",
                "type": ""
              }
            ],
            "src": "26710:140:136"
          },
          {
            "body": {
              "nativeSrc": "26906:217:136",
              "nodeType": "YulBlock",
              "src": "26906:217:136",
              "statements": [
                {
                  "nativeSrc": "26916:78:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "26916:78:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nativeSrc": "26943:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "26943:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26946:18:136",
                            "nodeType": "YulLiteral",
                            "src": "26946:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "26939:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26939:3:136"
                        },
                        "nativeSrc": "26939:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26939:26:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nativeSrc": "26971:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "26971:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26974:18:136",
                            "nodeType": "YulLiteral",
                            "src": "26974:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "26967:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "26967:3:136"
                        },
                        "nativeSrc": "26967:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "26967:26:136"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "26935:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "26935:3:136"
                    },
                    "nativeSrc": "26935:59:136",
                    "nodeType": "YulFunctionCall",
                    "src": "26935:59:136"
                  },
                  "variables": [
                    {
                      "name": "product_raw",
                      "nativeSrc": "26920:11:136",
                      "nodeType": "YulTypedName",
                      "src": "26920:11:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "27003:47:136",
                  "nodeType": "YulAssignment",
                  "src": "27003:47:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "product_raw",
                        "nativeSrc": "27018:11:136",
                        "nodeType": "YulIdentifier",
                        "src": "27018:11:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27031:18:136",
                        "nodeType": "YulLiteral",
                        "src": "27031:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "27014:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27014:3:136"
                    },
                    "nativeSrc": "27014:36:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27014:36:136"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nativeSrc": "27003:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "27003:7:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "27095:22:136",
                    "nodeType": "YulBlock",
                    "src": "27095:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "27097:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "27097:16:136"
                          },
                          "nativeSrc": "27097:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "27097:18:136"
                        },
                        "nativeSrc": "27097:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "27097:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "product",
                            "nativeSrc": "27072:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "27072:7:136"
                          },
                          {
                            "name": "product_raw",
                            "nativeSrc": "27081:11:136",
                            "nodeType": "YulIdentifier",
                            "src": "27081:11:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "27069:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "27069:2:136"
                        },
                        "nativeSrc": "27069:24:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27069:24:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "27062:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "27062:6:136"
                    },
                    "nativeSrc": "27062:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27062:32:136"
                  },
                  "nativeSrc": "27059:58:136",
                  "nodeType": "YulIf",
                  "src": "27059:58:136"
                }
              ]
            },
            "name": "checked_mul_t_uint64",
            "nativeSrc": "26855:268:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "26885:1:136",
                "nodeType": "YulTypedName",
                "src": "26885:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "26888:1:136",
                "nodeType": "YulTypedName",
                "src": "26888:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nativeSrc": "26894:7:136",
                "nodeType": "YulTypedName",
                "src": "26894:7:136",
                "type": ""
              }
            ],
            "src": "26855:268:136"
          },
          {
            "body": {
              "nativeSrc": "27173:149:136",
              "nodeType": "YulBlock",
              "src": "27173:149:136",
              "statements": [
                {
                  "nativeSrc": "27183:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "27183:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nativeSrc": "27198:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "27198:1:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27201:18:136",
                        "nodeType": "YulLiteral",
                        "src": "27201:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "27194:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27194:3:136"
                    },
                    "nativeSrc": "27194:26:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27194:26:136"
                  },
                  "variables": [
                    {
                      "name": "y_1",
                      "nativeSrc": "27187:3:136",
                      "nodeType": "YulTypedName",
                      "src": "27187:3:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "27244:22:136",
                    "nodeType": "YulBlock",
                    "src": "27244:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nativeSrc": "27246:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "27246:16:136"
                          },
                          "nativeSrc": "27246:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "27246:18:136"
                        },
                        "nativeSrc": "27246:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "27246:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y_1",
                        "nativeSrc": "27239:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "27239:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "27232:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "27232:6:136"
                    },
                    "nativeSrc": "27232:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27232:11:136"
                  },
                  "nativeSrc": "27229:37:136",
                  "nodeType": "YulIf",
                  "src": "27229:37:136"
                },
                {
                  "nativeSrc": "27275:41:136",
                  "nodeType": "YulAssignment",
                  "src": "27275:41:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nativeSrc": "27288:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "27288:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27291:18:136",
                            "nodeType": "YulLiteral",
                            "src": "27291:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "27284:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "27284:3:136"
                        },
                        "nativeSrc": "27284:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27284:26:136"
                      },
                      {
                        "name": "y_1",
                        "nativeSrc": "27312:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "27312:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nativeSrc": "27280:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27280:3:136"
                    },
                    "nativeSrc": "27280:36:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27280:36:136"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nativeSrc": "27275:1:136",
                      "nodeType": "YulIdentifier",
                      "src": "27275:1:136"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint64",
            "nativeSrc": "27128:194:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "27158:1:136",
                "nodeType": "YulTypedName",
                "src": "27158:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "27161:1:136",
                "nodeType": "YulTypedName",
                "src": "27161:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nativeSrc": "27167:1:136",
                "nodeType": "YulTypedName",
                "src": "27167:1:136",
                "type": ""
              }
            ],
            "src": "27128:194:136"
          },
          {
            "body": {
              "nativeSrc": "27472:173:136",
              "nodeType": "YulBlock",
              "src": "27472:173:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "27489:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "27489:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "27498:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "27498:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "27510:3:136",
                                "nodeType": "YulLiteral",
                                "src": "27510:3:136",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "27515:10:136",
                                "nodeType": "YulLiteral",
                                "src": "27515:10:136",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "27506:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "27506:3:136"
                            },
                            "nativeSrc": "27506:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "27506:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "27494:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "27494:3:136"
                        },
                        "nativeSrc": "27494:33:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27494:33:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27482:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "27482:6:136"
                    },
                    "nativeSrc": "27482:46:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27482:46:136"
                  },
                  "nativeSrc": "27482:46:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "27482:46:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "27548:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "27548:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27553:1:136",
                            "nodeType": "YulLiteral",
                            "src": "27553:1:136",
                            "type": "",
                            "value": "4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "27544:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "27544:3:136"
                        },
                        "nativeSrc": "27544:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27544:11:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "27565:2:136",
                                "nodeType": "YulLiteral",
                                "src": "27565:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "27569:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "27569:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "27561:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "27561:3:136"
                            },
                            "nativeSrc": "27561:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "27561:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "27582:26:136",
                                "nodeType": "YulLiteral",
                                "src": "27582:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "27578:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "27578:3:136"
                            },
                            "nativeSrc": "27578:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "27578:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "27557:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "27557:3:136"
                        },
                        "nativeSrc": "27557:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27557:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27537:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "27537:6:136"
                    },
                    "nativeSrc": "27537:74:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27537:74:136"
                  },
                  "nativeSrc": "27537:74:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "27537:74:136"
                },
                {
                  "nativeSrc": "27620:19:136",
                  "nodeType": "YulAssignment",
                  "src": "27620:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "27631:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "27631:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27636:2:136",
                        "nodeType": "YulLiteral",
                        "src": "27636:2:136",
                        "type": "",
                        "value": "24"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "27627:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27627:3:136"
                    },
                    "nativeSrc": "27627:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27627:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "27620:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27620:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes4_t_address__to_t_bytes4_t_address__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "27327:318:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "27440:3:136",
                "nodeType": "YulTypedName",
                "src": "27440:3:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "27445:6:136",
                "nodeType": "YulTypedName",
                "src": "27445:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "27453:6:136",
                "nodeType": "YulTypedName",
                "src": "27453:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "27464:3:136",
                "nodeType": "YulTypedName",
                "src": "27464:3:136",
                "type": ""
              }
            ],
            "src": "27327:318:136"
          },
          {
            "body": {
              "nativeSrc": "27795:126:136",
              "nodeType": "YulBlock",
              "src": "27795:126:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "27812:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "27812:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "27821:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "27821:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "27833:3:136",
                                "nodeType": "YulLiteral",
                                "src": "27833:3:136",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "27838:10:136",
                                "nodeType": "YulLiteral",
                                "src": "27838:10:136",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "27829:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "27829:3:136"
                            },
                            "nativeSrc": "27829:20:136",
                            "nodeType": "YulFunctionCall",
                            "src": "27829:20:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "27817:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "27817:3:136"
                        },
                        "nativeSrc": "27817:33:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27817:33:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27805:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "27805:6:136"
                    },
                    "nativeSrc": "27805:46:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27805:46:136"
                  },
                  "nativeSrc": "27805:46:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "27805:46:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "27871:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "27871:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27876:1:136",
                            "nodeType": "YulLiteral",
                            "src": "27876:1:136",
                            "type": "",
                            "value": "4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "27867:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "27867:3:136"
                        },
                        "nativeSrc": "27867:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "27867:11:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "27880:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "27880:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27860:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "27860:6:136"
                    },
                    "nativeSrc": "27860:27:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27860:27:136"
                  },
                  "nativeSrc": "27860:27:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "27860:27:136"
                },
                {
                  "nativeSrc": "27896:19:136",
                  "nodeType": "YulAssignment",
                  "src": "27896:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "27907:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "27907:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27912:2:136",
                        "nodeType": "YulLiteral",
                        "src": "27912:2:136",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "27903:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27903:3:136"
                    },
                    "nativeSrc": "27903:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "27903:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "27896:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "27896:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes4_t_bytes32__to_t_bytes4_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "27650:271:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "27763:3:136",
                "nodeType": "YulTypedName",
                "src": "27763:3:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "27768:6:136",
                "nodeType": "YulTypedName",
                "src": "27768:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "27776:6:136",
                "nodeType": "YulTypedName",
                "src": "27776:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "27787:3:136",
                "nodeType": "YulTypedName",
                "src": "27787:3:136",
                "type": ""
              }
            ],
            "src": "27650:271:136"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function validator_revert_int8(value)\n    {\n        if iszero(eq(value, signextend(0, value))) { revert(0, 0) }\n    }\n    function abi_decode_enum_Mappers(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 5)) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_int8t_enum$_Mappers_$28087t_array$_t_string_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_int8(value)\n        value2 := value\n        value3 := abi_decode_enum_Mappers(add(headStart, 64))\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset_1)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        if gt(add(add(_1, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value4 := add(_1, 32)\n        value5 := length\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function validator_revert_contract_IWitOracleRadonRegistry(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_bytes_calldata_ptrt_int8t_contract$_IWitOracleRadonRegistry_$27394(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_string_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value := calldataload(add(headStart, 64))\n        validator_revert_int8(value)\n        value4 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_contract_IWitOracleRadonRegistry(value_1)\n        value5 := value_1\n    }\n    function abi_encode_tuple_t_bytes4_t_userDefinedValueType$_RadonHash_$37153__to_t_bytes4_t_bytes32__fromStack_library_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_enum_Oracles(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_enum$_Oracles_$28092(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_enum_Oracles(headStart)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        mcopy(add(pos, 0x20), add(value, 0x20), length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_userDefinedValueType_ID4(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_uint24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_PriceFeed_$22395_storage_ptrt_userDefinedValueType$_ID4_$28155t_uint24(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_userDefinedValueType_ID4(add(headStart, 32))\n        value2 := abi_decode_uint24(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_struct$_PriceData_$22357_memory_ptr__to_t_struct$_PriceData_$22357_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, and(mload(value0), 0xffffffffffffffff))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), 0xffffffffffffffff))\n        mstore(add(headStart, 0x40), signextend(6, mload(add(value0, 0x40))))\n        mstore(add(headStart, 0x60), signextend(0, mload(add(value0, 0x60))))\n        mstore(add(headStart, 0x80), and(mload(add(value0, 0x80)), 0xffffffffffffffff))\n        mstore(add(headStart, 0xa0), mload(add(value0, 0xa0)))\n    }\n    function abi_decode_tuple_t_enum$_Mappers_$28087(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_enum_Mappers(headStart)\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_userDefinedValueType$_ID4_$28155t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_userDefinedValueType_ID4(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_userDefinedValueType$_ID4_$28155(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_userDefinedValueType_ID4(headStart)\n    }\n    function abi_encode_tuple_t_struct$_Price_$28105_memory_ptr__to_t_struct$_Price_$28105_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, signextend(0, mload(value0)))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), 0xffffffffffffffff))\n        mstore(add(headStart, 0x40), signextend(6, mload(add(value0, 0x40))))\n        mstore(add(headStart, 0x60), and(mload(add(value0, 0x60)), 0xffffffffffffffff))\n        mstore(add(headStart, 0x80), mload(add(value0, 0x80)))\n    }\n    function abi_decode_tuple_t_userDefinedValueType$_ID4_$28155t_uint24(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_userDefinedValueType_ID4(headStart)\n        value1 := abi_decode_uint24(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_userDefinedValueType$_RadonHash_$37153t_int8t_contract$_IWitOracleRadonRegistry_$27394(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value2 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_int8(value_1)\n        value3 := value_1\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_contract_IWitOracleRadonRegistry(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_int8t_enum$_Oracles_$28092t_addresst_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_int8(value)\n        value2 := value\n        value3 := abi_decode_enum_Oracles(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_contract_IWitOracleRadonRegistry(value_1)\n        value4 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 128))\n        value5 := value_2\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_809f0e155c7b29b202426e1a99435b32cc84b804ff533457331b170a97f09736__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"invalid mapper\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"already settled\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_string_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c4817b49b492749dc4c5d87e718385ac4b07031a6786852243ff5d14be9ce7b1_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"unsupported dependency: \")\n        calldatacopy(add(pos, 24), value0, value1)\n        let _1 := add(add(pos, value1), 24)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_18e60ef26cca66661097989f5663d0ff1ec5851de7f73febcc41138e594a33bb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"no radon registry\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_userDefinedValueType$_RadonHash_$37153_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_f30ababf750e10f193dd18fcf701efc6a2350e853cd574d27cf4488fa0a72c5a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"unsupported oracle\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_userDefinedValueType$_ID4_$28155_t_uint24__to_t_bytes4_t_uint24__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n        mstore(add(headStart, 32), and(value1, 0xffffff))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_Price_$28105_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 160)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_int8(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := mload(add(headStart, 64))\n        if iszero(eq(value_2, signextend(6, value_2))) { revert(0, 0) }\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_uint64(value_3)\n        mstore(add(memPtr, 96), value_3)\n        let value_4 := 0\n        value_4 := mload(add(headStart, 128))\n        mstore(add(memPtr, 128), value_4)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_int256t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n        let value_1 := 0\n        value_1 := mload(add(headStart, 32))\n        value1 := value_1\n        let value_2 := 0\n        value_2 := mload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_uint80_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_uint80_fromMemory(headStart)\n        let value := 0\n        value := mload(add(headStart, 32))\n        value1 := value\n        let value_1 := 0\n        value_1 := mload(add(headStart, 64))\n        value2 := value_1\n        let value_2 := 0\n        value_2 := mload(add(headStart, 96))\n        value3 := value_2\n        value4 := abi_decode_uint80_fromMemory(add(headStart, 128))\n    }\n    function abi_encode_tuple_t_userDefinedValueType$_ID_$29561__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_struct$_PythPrice_$29570_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 128)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 128)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        if iszero(eq(value, signextend(7, value))) { revert(0, 0) }\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := mload(add(headStart, 64))\n        if iszero(eq(value_2, signextend(3, value_2))) { revert(0, 0) }\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := 0\n        value_3 := mload(add(headStart, 96))\n        mstore(add(memPtr, 96), value_3)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_1caff6482b63152caefd54878b217104d88adfadcad6fcc48a323fbc0ee4e270__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"unsupported mapper\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8683073bfad07e37004708ce422468c67b639f53369d0f23b110a4d64d7e46c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"cannot remove if mapped from oth\")\n        mstore(add(headStart, 96), \"ers\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        sum := add(and(x, 0xffffffffffffffff), and(y, 0xffffffffffffffff))\n        if gt(sum, 0xffffffffffffffff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_userDefinedValueType$_RadonHash_$37153__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b9418adec3fa89f842fd7f5eb0cf657b751f377eea010103b105c79d396fe8aa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"unverified sources\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_cb2d1e9dfd97eaf95f99d74a04eb502b6404ea235ae0f509d4ba6dee55f4818b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"invalid oracle\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d97ee9cf70a0496c37c6020840166f28209ce380fdefd014c0b530be764538a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"inexistent oracle\")\n        tail := add(headStart, 96)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_tuple_t_string_storage__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let ret := 0\n        let slotValue := sload(value0)\n        let length := extract_byte_array_length(slotValue)\n        mstore(add(headStart, 32), length)\n        switch and(slotValue, 1)\n        case 0 {\n            mstore(add(headStart, 64), and(slotValue, not(255)))\n            ret := add(add(headStart, shl(5, iszero(iszero(length)))), 64)\n        }\n        case 1 {\n            mstore(0, value0)\n            let dataPos := keccak256(0, 32)\n            let i := 0\n            for { } lt(i, length) { i := add(i, 32) }\n            {\n                mstore(add(add(headStart, i), 64), sload(dataPos))\n                dataPos := add(dataPos, 1)\n            }\n            ret := add(add(headStart, i), 64)\n        }\n        tail := ret\n    }\n    function abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_5d61cd11ae3989756f34b547e8030531ec22ae7f78845e3c2df1ed1a1a0bef68__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"cannot refactor exisitng symbol \")\n        mstore(add(headStart, 96), \"if mapped by others\")\n        tail := add(headStart, 128)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function checked_add_t_int256(x, y) -> sum\n    {\n        sum := add(x, y)\n        let _1 := slt(sum, y)\n        let _2 := slt(x, 0)\n        if or(and(iszero(_2), _1), and(_2, iszero(_1))) { panic_error_0x11() }\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, shl(255, 1)) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            let _1 := 0\n            _1 := 0\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function checked_sub_t_int8(x, y) -> diff\n    {\n        diff := sub(signextend(0, x), signextend(0, y))\n        if or(slt(diff, not(127)), sgt(diff, 0x7f)) { panic_error_0x11() }\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function checked_mul_t_uint64(x, y) -> product\n    {\n        let product_raw := mul(and(x, 0xffffffffffffffff), and(y, 0xffffffffffffffff))\n        product := and(product_raw, 0xffffffffffffffff)\n        if iszero(eq(product, product_raw)) { panic_error_0x11() }\n    }\n    function checked_div_t_uint64(x, y) -> r\n    {\n        let y_1 := and(y, 0xffffffffffffffff)\n        if iszero(y_1) { panic_error_0x12() }\n        r := div(and(x, 0xffffffffffffffff), y_1)\n    }\n    function abi_encode_tuple_packed_t_bytes4_t_address__to_t_bytes4_t_address__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(224, 0xffffffff)))\n        mstore(add(pos, 4), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        end := add(pos, 24)\n    }\n    function abi_encode_tuple_packed_t_bytes4_t_bytes32__to_t_bytes4_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(224, 0xffffffff)))\n        mstore(add(pos, 4), value1)\n        end := add(pos, 36)\n    }\n}",
      "id": 136,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "611:35666:61:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;611:35666:61;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "611:35666:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13008:1570;;;;;;;;;;-1:-1:-1;13008:1570:61;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1966:33:136;;;1948:52;;1936:2;1921:18;13008:1570:61;;;;;;;;15730:798;;;;;;;;;;-1:-1:-1;15730:798:61;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;;3450:33:136;;;3432:52;;3515:2;3500:18;;3493:34;;;;3405:18;15730:798:61;3221:312:136;17865:558:61;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4288:3946::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;5347:4:136;5389:3;5378:9;5374:19;5366:27;;-1:-1:-1;;;;;5430:6:136;5424:13;5420:38;5409:9;5402:57;-1:-1:-1;;;;;5519:4:136;5511:6;5507:17;5501:24;5497:49;5490:4;5479:9;5475:20;5468:79;5617:4;5609:6;5605:17;5599:24;5596:1;5585:39;5578:4;5567:9;5563:20;5556:69;5695:4;5687:6;5683:17;5677:24;5674:1;5663:39;5656:4;5645:9;5641:20;5634:69;-1:-1:-1;;;;;5763:4:136;5755:6;5751:17;5745:24;5741:49;5734:4;5723:9;5719:20;5712:79;5847:4;5839:6;5835:17;5829:24;5822:4;5811:9;5807:20;5800:54;5191:669;;;;;17319:538:61;;;;;;:::i;:::-;;:::i;11121:1699::-;;;;;;;;;;-1:-1:-1;11121:1699:61;;;;;:::i;:::-;;:::i;:::-;;10263:600;;;;;;:::i;:::-;;:::i;:::-;;;;;;6940:4:136;6982:3;6971:9;6967:19;6959:27;;7033:6;7027:13;7024:1;7013:28;7002:9;6995:47;-1:-1:-1;;;;;7102:4:136;7094:6;7090:17;7084:24;7080:49;7073:4;7062:9;7058:20;7051:79;7200:4;7192:6;7188:17;7182:24;7179:1;7168:39;7161:4;7150:9;7146:20;7139:69;-1:-1:-1;;;;;7268:4:136;7260:6;7256:17;7250:24;7246:49;7239:4;7228:9;7224:20;7217:79;7352:4;7344:6;7340:17;7334:24;7327:4;7316:9;7312:20;7305:54;6792:573;;;;;8242:1099:61;;;;;;:::i;:::-;;:::i;30773:662::-;;;;;;:::i;:::-;;:::i;9349:906::-;;;;;;:::i;:::-;;:::i;16536:775::-;;;;;;;;;;-1:-1:-1;16536:775:61;;;;;:::i;:::-;;:::i;12828:172::-;;;;;;;;;;;;;:::i;14586:1136::-;;;;;;;;;;-1:-1:-1;14586:1136:61;;;;;:::i;:::-;;:::i;13008:1570::-;13241:6;;13293;13287:13;;;;;;;;:::i;:::-;:55;;;:135;;;;-1:-1:-1;13386:35:61;13369:6;13363:13;;;;;;;;:::i;:::-;:59;;;;13287:135;13265:200;;;;-1:-1:-1;;;13265:200:61;;9830:2:136;13265:200:61;;;9812:21:136;9869:2;9849:18;;;9842:30;-1:-1:-1;;;9888:18:136;;;9881:44;9942:18;;13265:200:61;;;;;;;;;13476:27;13506:30;13529:6;;13506:22;:30::i;:::-;13476:60;;13547:26;13576:18;13590:3;13576:13;:18::i;:::-;13547:47;;13614:18;:8;:16;:18::i;:::-;13613:19;13605:47;;;;-1:-1:-1;;;13605:47:61;;;;;;;:::i;:::-;13663:19;13698:8;13693:515;13708:23;;;13693:515;;;13756:11;13777:21;13782:10;;13793:3;13782:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13777:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13777:4:61;;-1:-1:-1;;;13777:21:61:i;:::-;13756:43;;13814:28;13845:49;13888:4;13845:13;:49::i;:::-;13814:80;;13917:20;:10;:18;:20::i;:::-;14026:10;;14037:3;14026:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13946:110;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13909:149;;;;;-1:-1:-1;;;13909:149:61;;;;;;;;:::i;:::-;-1:-1:-1;14107:8:61;14112:3;14107:2;:8;:::i;:::-;14097:4;-1:-1:-1;;;;;14089:13:61;;:27;;14073:44;;;;14132:6;:4;:6::i;:::-;-1:-1:-1;;;;;;14132:54:61;;;;;;;;:18;;;;:54;;;;;;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13733:6:61;13693:515;;;-1:-1:-1;14218:104:61;:8;14254;14278:6;14300:11;14218:21;:104::i;:::-;14441:19;14456:3;14441:14;:19::i;:::-;;14544:26;:24;:26::i;:::-;14537:33;13008:1570;-1:-1:-1;;;;;;;;;;13008:1570:61:o;15730:798::-;15968:17;15987:27;16032;16062:30;16085:6;;16062:22;:30::i;:::-;16032:60;;16103:26;16132:18;16146:3;16132:13;:18::i;:::-;16103:47;-1:-1:-1;;;;;;16169:31:61;;16161:61;;;;-1:-1:-1;;;16161:61:61;;12151:2:136;16161:61:61;;;12133:21:136;12190:2;12170:18;;;12163:30;-1:-1:-1;;;12209:18:136;;;12202:47;12266:18;;16161:61:61;11949:341:136;16161:61:61;16246:30;;-1:-1:-1;;;16246:30:61;;-1:-1:-1;;;;;16246:15:61;;;;;:30;;16262:13;;;;16246:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16233:43;-1:-1:-1;16287:183:61;:8;16323;16347:34;16404:4;16233:43;16287:21;:183::i;:::-;16494:26;:24;:26::i;:::-;16481:39;;16021:507;;15730:798;;;;;;;;;:::o;17865:558::-;17940:13;17980:34;17970:6;:44;;;;;;;;:::i;:::-;;17966:411;;-1:-1:-1;;18031:19:61;;;;;;;;;;;;-1:-1:-1;;;18031:19:61;;;;;17865:558::o;17966:411::-;18082:35;18072:6;:45;;;;;;;;:::i;:::-;;18068:309;;-1:-1:-1;;18134:20:61;;;;;;;;;;;;-1:-1:-1;;;18134:20:61;;;;;17865:558::o;18068:309::-;18186:37;18176:6;:47;;;;;;;;:::i;:::-;;18172:205;;-1:-1:-1;;18240:30:61;;;;;;;;;;;;-1:-1:-1;;;18240:30:61;;;;;17865:558::o;18172:205::-;18302:32;18292:6;:42;;;;;;;;:::i;:::-;;18288:89;;-1:-1:-1;;18351:14:61;;;;;;;;;;;;-1:-1:-1;;;18351:14:61;;;;;17865:558::o;18288:89::-;18387:28;;-1:-1:-1;;;18387:28:61;;13283:2:136;18387:28:61;;;13265:21:136;13322:2;13302:18;;;13295:30;-1:-1:-1;;;13341:18:136;;;13334:48;13399:18;;18387:28:61;13081:342:136;4288:3946:61;4424:28;;:::i;:::-;4508:11;;;;-1:-1:-1;;;4508:11:61;;;;4470:35;4534:7;:43;;;;;;;;:::i;:::-;;4530:3697;;4646:11;;;;-1:-1:-1;;;4646:11:61;;;;4608:35;4676:7;:45;;;;;;;;:::i;:::-;;4672:2520;;4746:18;;;;-1:-1:-1;;;4746:18:61;;-1:-1:-1;;;;;4746:18:61;:32;;:71;;-1:-1:-1;4782:18:61;;;;-1:-1:-1;;;4782:18:61;;-1:-1:-1;;;;;4782:18:61;4812:4;4782:35;4746:71;4742:841;;;-1:-1:-1;;4842:22:61;;;;;;;;4849:15;;;4842:22;-1:-1:-1;;;;;4842:22:61;;;;;;;;;;;;;;-1:-1:-1;;;4842:22:61;;;;;;;;;;;;;-1:-1:-1;;;4842:22:61;;-1:-1:-1;4842:22:61;;;;;-1:-1:-1;;;4842:22:61;;;;;;;;;;;;;;;;;-1:-1:-1;4842:22:61;;4742:841;4965:21;;;:32;;;;;;:575;;5332:18;;;;5443;;;;5317:222;;-1:-1:-1;;;5317:222:61;;-1:-1:-1;;;;;;13642:33:136;;;5317:222:61;;;13624:52:136;13724:8;13712:21;;13692:18;;;13685:49;5302:238:61;;-1:-1:-1;;;5332:18:61;;-1:-1:-1;;;;;5332:18:61;;5317:55;;13597:18:136;;5317:222:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5302:14;:238::i;:::-;4965:575;;;5062:18;;;;5173;;;;5047:222;;-1:-1:-1;;;5047:222:61;;-1:-1:-1;;;;;;13642:33:136;;;5047:222:61;;;13624:52:136;13724:8;13712:21;;13692:18;;;13685:49;5029:241:61;;-1:-1:-1;;;5062:18:61;;-1:-1:-1;;;;;5062:18:61;;5047:55;;13597:18:136;;5047:222:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5029:17;:241::i;:::-;4931:632;;;;;;4672:2520;5621:35;5610:7;:46;;;;;;;;:::i;:::-;;5606:1586;;5719:18;;;;5748;;;;5710:57;;-1:-1:-1;;;5710:57:61;;;;;15263:25:136;;;;5678:10:61;;;;-1:-1:-1;;;5719:18:61;;;-1:-1:-1;;;;;5719:18:61;;5710:37;;15236:18:136;;5710:57:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5786:41:61;;;:17;;;:41;5846:65;:21;;;:65;-1:-1:-1;;5953:13:61;;;;-1:-1:-1;;;5953:13:61;;-1:-1:-1;5953:13:61;5930:20;;;:36;5606:1586;;;6005:37;5994:7;:48;;;;;;;;:::i;:::-;;5990:1202;;6066:10;6079:15;6122:4;:18;;;;;;;;;;-1:-1:-1;;;;;6122:18:61;-1:-1:-1;;;;;6099:58:61;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6178:41:61;;;:17;;;:41;6238:65;;;:21;;;:65;-1:-1:-1;;;;6345:13:61;;;;-1:-1:-1;;;6345:13:61;;-1:-1:-1;6345:13:61;6322:20;;;:36;5990:1202;;;6409:32;6398:7;:43;;;;;;;;:::i;:::-;;6394:798;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6517:21:61;;;:32;;;;;;6513:442;;;6592:18;;;;6647;;;;6583:84;;-1:-1:-1;;;6583:84:61;;;;;15263:25:136;;;;-1:-1:-1;;;6592:18:61;;;-1:-1:-1;;;;;6592:18:61;;6583:46;;15236:18:136;;6583:84:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6720:12;;-1:-1:-1;;;;;6690:43:61;;;6574:93;-1:-1:-1;6513:442:61;;;6800:18;;;;6852;;;;6791:81;;-1:-1:-1;;;6791:81:61;;;;;15263:25:136;;;;-1:-1:-1;;;6800:18:61;;;-1:-1:-1;;;;;6800:18:61;;6791:43;;15236:18:136;;6791:81:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6922:12;;-1:-1:-1;;;;;6895:40:61;:17;;;:40;6782:90;-1:-1:-1;6513:442:61;7026:18;;;;;-1:-1:-1;;;;;6973:73:61;:21;;;:73;7093:11;;;;;7065:40;;:20;;;:40;6394:798;4579:2634;4530:3697;;;7271:35;7260:7;:46;;;;;;;;:::i;:::-;;:118;;;-1:-1:-1;7343:35:61;7332:7;:46;;;;;;;;:::i;:::-;;7260:118;7238:978;;;7529:13;;;;7420:211;;7469:3;;7496:9;;-1:-1:-1;;;7529:13:61;;;;;7566:7;:46;;;;;;;;:::i;:::-;;7420:26;:211::i;:::-;7413:218;;;;;7238:978;7670:35;7659:7;:46;;;;;;;;:::i;:::-;;7655:561;;7841:13;;;;7733:140;;7782:3;;7809:9;;-1:-1:-1;;;7841:13:61;;;;7733:26;:140::i;7655:561::-;7924:36;7913:7;:47;;;;;;;;:::i;:::-;;7909:307;;8097:13;;;;7988:141;;8038:3;;8065:9;;-1:-1:-1;;;8097:13:61;;;;7988:27;:141::i;7909:307::-;8172:28;;-1:-1:-1;;;8172:28:61;;17987:2:136;8172:28:61;;;17969:21:136;18026:2;18006:18;;;17999:30;-1:-1:-1;;;18045:18:136;;;18038:48;18103:18;;8172:28:61;17785:342:136;7909:307:61;4459:3775;4288:3946;;;;;;:::o;17319:538::-;17394:13;17434:32;17424:6;:42;;;;;;;;:::i;:::-;;17420:390;;-1:-1:-1;;17483:13:61;;;;;;;;;;;;-1:-1:-1;;;17483:13:61;;;;;17319:538::o;17420:390::-;17528:35;17518:6;:45;;;;;;;;:::i;:::-;;17514:296;;-1:-1:-1;;17580:16:61;;;;;;;;;;;;-1:-1:-1;;;17580:16:61;;;;;17319:538::o;17514:296::-;17628:36;17618:6;:46;;;;;;;;:::i;:::-;;17614:196;;-1:-1:-1;;17681:17:61;;;;;;;;;;;;-1:-1:-1;;;17681:17:61;;;;;17319:538::o;17614:196::-;17730:35;17720:6;:45;;;;;;;;:::i;:::-;;17716:94;;-1:-1:-1;;17782:16:61;;;;;;;;;;;;-1:-1:-1;;;17782:16:61;;;;;17319:538::o;11121:1699::-;11211:22;11236:18;11250:3;11236:13;:18::i;:::-;11211:43;;11269:14;:4;:12;:14::i;:::-;11265:1548;;;11300:45;11348:6;:4;:6::i;:::-;-1:-1:-1;;;;;;11348:23:61;;;;;;:18;;;;;:23;;;;;;;;;11300:71;;;;;;;;;;;;;;;;;11348:23;;11300:71;;11348:23;11300:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11300:71:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11412:11;:60;;;-1:-1:-1;11448:19:61;;:24;11412:60;11386:159;;;;-1:-1:-1;;;11386:159:61;;18334:2:136;11386:159:61;;;18316:21:136;18373:2;18353:18;;;18346:30;18412:34;18392:18;;;18385:62;-1:-1:-1;;;18463:18:136;;;18456:33;18506:19;;11386:159:61;18132:399:136;11386:159:61;11717:8;11712:132;11733:12;:19;11727:3;:25;11712:132;;;11781:47;11797:12;11810:3;11797:17;;;;;;;;:::i;:::-;;;;;;;11816:11;11781:15;:47::i;:::-;11754:6;;11712:132;;;;11865:6;:4;:6::i;:::-;-1:-1:-1;;;;;;11865:23:61;;;;;;:18;;;;;:23;;;;;11858:30;;;:::i;:::-;11964:14;12001:1;11981:6;:4;:6::i;:::-;:17;:21;;;;:::i;:::-;12021:10;;;;11964:38;;-1:-1:-1;12021:10:61;;:22;-1:-1:-1;12017:276:61;;;12064:18;12085:6;:4;:6::i;:::-;:21;;12096:9;;12085:21;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;12152:31:61;12085:21;12152:13;:31::i;:::-;12217:10;;;;;12202:12;;;:25;;-1:-1:-1;;12202:25:61;12217:10;;;;12202:25;;;;;;12125:58;-1:-1:-1;12271:6:61;12246;:4;:6::i;:::-;12257:10;;;;12246:22;;12257:10;;;;;12246:22;;;;;;:::i;:::-;;;;;;;;;;:31;-1:-1:-1;;12017:276:61;12307:6;:4;:6::i;:::-;:16;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;12307:16:61;;;;;;;;;;12455:18;;;;35860:33:116;;12496:213:61;;12545:41;12556:6;:4;:6::i;:::-;:29;;;;:17;;;;;:29;;;;;;;;-1:-1:-1;;;;;;22043:87:61;;;12545:10;;;22043:87;;21911:238;12545:41;12541:153;;;12672:1;12611:6;:4;:6::i;:::-;:29;;;;:17;;;;;:29;;;;;:63;;-1:-1:-1;;12611:63:61;;;;;;;;;;;;12541:153;12730:6;:4;:6::i;:::-;-1:-1:-1;;;;;;12730:19:61;;;;;;:14;;;;;:19;;;;;:30;;;12723:37;;;;;;12782:6;:4;:6::i;:::-;-1:-1:-1;;;;;;12782:19:61;;;;;;:14;;;;;:19;;;;;;12775:26;12782:19;;12775:26;:::i;:::-;-1:-1:-1;12775:26:61;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12775:26:61;;;;;;;;;;;;;;-1:-1:-1;;;11265:1548:61;11200:1620;11121:1699;;:::o;10263:600::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10435:18:61;10449:3;10435:13;:18::i;:::-;10406:47;;10464:28;10495:33;10511:8;10521:3;10526:1;10495:15;:33::i;:::-;10464:64;;10548:307;;;;;;;;10599:11;:20;;;10548:307;;;;;;10713:1;10690:11;:20;;;-1:-1:-1;;;;;10690:24:61;;:67;;10740:11;:17;;;10690:67;;;10717:20;;10690:67;-1:-1:-1;;;;;10548:307:61;;;;;10646:11;:22;;;10548:307;;;;;;10783:11;:21;;;-1:-1:-1;;;;;10548:307:61;;;;;10826:11;:17;;;10548:307;;;10541:314;;;;10263:600;;;:::o;8242:1099::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8408:18:61;8422:3;8408:13;:18::i;:::-;8379:47;;8437:55;8495:35;8504:8;:25;;8495:8;:35::i;:::-;8437:93;;8543:28;8574:57;8590:8;8600:3;8605:11;:25;;;8574:15;:57::i;:::-;8675:21;;;;8543:88;;-1:-1:-1;;;;;;8675:28:61;8652:114;;;;-1:-1:-1;;;8652:114:61;;;;;;;;;;;;8809:25;;;;:30;;;;:144;;;8928:11;:25;;;8879:74;;8903:11;:21;;;8879:74;;;;:::i;:::-;-1:-1:-1;;;;;8860:93:61;:15;:93;;8809:144;8787:219;;;;-1:-1:-1;;;8787:219:61;;;;;;;;;;;;9026:307;;;;;;;;9077:11;:20;;;9026:307;;;;;;9191:1;9168:11;:20;;;-1:-1:-1;;;;;9168:24:61;;:67;;9218:11;:17;;;9168:67;;;9195:20;;9168:67;-1:-1:-1;;;;;9026:307:61;;;;;9124:11;:22;;;9026:307;;;;;;9261:11;:21;;;-1:-1:-1;;;;;9026:307:61;;;;;9304:11;:17;;;9026:307;;;9019:314;;;;;8242:1099;;;:::o;30773:662::-;30850:6;;30873;:44;;;;;;;;:::i;:::-;;30869:559;;-1:-1:-1;;;;30941:28:61;30773:662;-1:-1:-1;30773:662:61:o;30869:559::-;31011:35;31001:6;:45;;;;;;;;:::i;:::-;;30997:431;;-1:-1:-1;;;;31070:26:61;30773:662;-1:-1:-1;30773:662:61:o;30997:431::-;31138:37;31128:6;:47;;;;;;;;:::i;:::-;;31124:304;;-1:-1:-1;;;;31199:40:61;30773:662;-1:-1:-1;30773:662:61:o;31124:304::-;31281:32;31271:6;:42;;;;;;;;:::i;:::-;;31267:161;;-1:-1:-1;;;;31337:26:61;30773:662;-1:-1:-1;30773:662:61:o;31267:161::-;-1:-1:-1;31413:3:61;;30773:662;-1:-1:-1;30773:662:61:o;31267:161::-;30773:662;;;:::o;9349:906::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:18:61;9553:3;9539:13;:18::i;:::-;9510:47;;9568:28;9599:35;9615:8;9625:3;9630;9599:15;:35::i;:::-;9670:21;;;;9568:66;;-1:-1:-1;;;;;;9670:28:61;9647:114;;;;-1:-1:-1;;;9647:114:61;;;;;;;;;;;;9864:3;9815:52;;9839:11;:21;;;9815:52;;;;:::i;:::-;-1:-1:-1;;;;;9796:71:61;:15;:71;;9774:146;;;;-1:-1:-1;;;9774:146:61;;;;;;;;;;;;9940:307;;;;;;;;9991:11;:20;;;9940:307;;;;;;10105:1;10082:11;:20;;;-1:-1:-1;;;;;10082:24:61;;:67;;10132:11;:17;;;10082:67;;;10109:20;;10082:67;-1:-1:-1;;;;;9940:307:61;;;;;10038:11;:22;;;9940:307;;;;;;10175:11;:21;;;-1:-1:-1;;;;;9940:307:61;;;;;10218:11;:17;;;9940:307;;;9933:314;;;;9349:906;;;;;:::o;16536:775::-;16768:6;16792:27;16822:30;16845:6;;16822:22;:30::i;:::-;16792:60;;16863:26;16892:18;16906:3;16892:13;:18::i;:::-;16863:47;-1:-1:-1;;;;;;16929:31:61;;16921:61;;;;-1:-1:-1;;;16921:61:61;;12151:2:136;16921:61:61;;;12133:21:136;12190:2;12170:18;;;12163:30;-1:-1:-1;;;12209:18:136;;;12202:47;12266:18;;16921:61:61;11949:341:136;16921:61:61;17001:42;;-1:-1:-1;;;17001:42:61;;;;;15263:25:136;;;-1:-1:-1;;;;;17001:31:61;;;;;15236:18:136;;17001:42:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16993:73;;;;-1:-1:-1;;;16993:73:61;;19662:2:136;16993:73:61;;;19644:21:136;19701:2;19681:18;;;19674:30;-1:-1:-1;;;19720:18:136;;;19713:48;19778:18;;16993:73:61;19460:342:136;16993:73:61;17077:182;:8;17113;17137:34;17194:4;17238:9;17077:21;:182::i;:::-;17277:26;:24;:26::i;:::-;17270:33;16536:775;-1:-1:-1;;;;;;;;16536:775:61:o;12828:172::-;12880:17;12923:29;:27;:29::i;:::-;12910:42;;12982:10;12963:6;:4;:6::i;:::-;:16;;;:29;;;;;;;;;;;;;;;;;;12828:172;:::o;14586:1136::-;14848:6;;14900;14894:13;;;;;;;;:::i;:::-;:58;;;;:135;;;;-1:-1:-1;14996:32:61;14979:6;14973:13;;;;;;;;:::i;:::-;:56;;;;14894:135;14872:200;;;;-1:-1:-1;;;14872:200:61;;20009:2:136;14872:200:61;;;19991:21:136;20048:2;20028:18;;;20021:30;-1:-1:-1;;;20067:18:136;;;20060:44;20121:18;;14872:200:61;19807:338:136;14872:200:61;15083:27;15113:30;15136:6;;15113:22;:30::i;:::-;15083:60;;15154:26;15183:18;15197:3;15183:13;:18::i;:::-;15154:47;;15221:18;:8;:16;:18::i;:::-;15220:19;15212:47;;;;-1:-1:-1;;;15212:47:61;;;;;;;:::i;:::-;15306:1;15278:13;-1:-1:-1;;;;;15278:25:61;;:29;15270:59;;;;-1:-1:-1;;;15270:59:61;;20352:2:136;15270:59:61;;;20334:21:136;20391:2;20371:18;;;20364:30;-1:-1:-1;;;20410:18:136;;;20403:47;20467:18;;15270:59:61;20150:341:136;15270:59:61;15340:132;:8;15376;15399:6;15420:13;15448;15340:21;:132::i;:::-;15585:19;15600:3;15585:14;:19::i;:::-;;15688:26;:24;:26::i;:::-;15681:33;14586:1136;-1:-1:-1;;;;;;;;;14586:1136:61:o;35385:889::-;35458:27;35498:11;35512:12;35517:6;;35512:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35512:4:61;;-1:-1:-1;;;35512:12:61:i;:::-;35498:26;;35577:3;35535:47;;35593:26;35622:18;35636:3;35622:13;:18::i;:::-;35729:27;;35593:47;;-1:-1:-1;35729:27:61;;35593:47;;35729:27;;;:::i;:::-;;;;;;;;;;;;;35719:38;;;;;;35690:6;;35679:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35669:29;;;;;;:88;35651:430;;35810:6;:4;:6::i;:::-;-1:-1:-1;;;;;;35810:23:61;;;;;;:18;;;;;:23;;;;;:30;:35;35784:148;;;;-1:-1:-1;;;35784:148:61;;22364:2:136;35784:148:61;;;22346:21:136;22403:2;22383:18;;;22376:30;22442:34;22422:18;;;22415:62;-1:-1:-1;;;22493:18:136;;;22486:49;22552:19;;35784:148:61;22162:415:136;35784:148:61;35947:8;:24;35965:6;;35947:8;:24;:::i;:::-;;36010:6;:4;:6::i;:::-;:17;35986:14;;;:42;;-1:-1:-1;;35986:42:61;;;;;;;;;;;-1:-1:-1;36050:19:61;;;36043:26;;;;;;;35651:430;36096:18;:8;:16;:18::i;:::-;36091:176;;36217:6;:4;:6::i;:::-;:38;;;;;;;:10;:38;;;;;;;;;;;36091:176;35487:787;;35385:889;;;;:::o;28986:139::-;29061:17;29098:6;:4;:6::i;:::-;-1:-1:-1;;;;;;29098:19:61;;;;;;;:14;;;;;:19;;-1:-1:-1;29098:19:61;;;;28986:139::o;29133:250::-;29235:18;;;;29197:4;;29235:32;;;:76;;-1:-1:-1;29294:11:61;;;;-1:-1:-1;;;29294:11:61;;;;29288:18;;;;;;;;:::i;:::-;:23;;;;29235:76;:129;;;-1:-1:-1;;29332:18:61;;;-1:-1:-1;;;29332:18:61;;-1:-1:-1;;;;;29332:18:61;:32;;;29133:250::o;27189:123::-;27248:7;27296:6;27285:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;27275:29;;;;;;27268:36;;27189:123;;;:::o;20650:151::-;20759:24;;20650:151::o;29391:372::-;29616:14;:4;:12;:14::i;:::-;29615:15;29607:43;;;;-1:-1:-1;;;29607:43:61;;;;;;;:::i;:::-;29661:13;;;:24;;-1:-1:-1;;29661:24:61;;-1:-1:-1;;;29661:24:61;;;;;;;;;29710:6;;29661:13;-1:-1:-1;;29696:20:61;-1:-1:-1;;;;29696:20:61;;;;-1:-1:-1;;;29710:6:61;29661:13;29696:20;;;;;;;:::i;:::-;;;;;-1:-1:-1;29727:15:61;;;;:28;;;;-1:-1:-1;;29391:372:61:o;29771:460::-;30033:14;:4;:12;:14::i;:::-;30032:15;30024:43;;;;-1:-1:-1;;;30024:43:61;;;;;;;:::i;:::-;30078:13;;;:24;;-1:-1:-1;;30078:24:61;;-1:-1:-1;;;30078:24:61;;;;;;;;;30127:6;;30078:13;-1:-1:-1;;30113:20:61;-1:-1:-1;;;;30113:20:61;;;;-1:-1:-1;;;30127:6:61;30113:20;;;;;;;;:::i;:::-;;;;;-1:-1:-1;30144:18:61;;;:34;;-1:-1:-1;;;;;30144:34:61;;;-1:-1:-1;;;30144:34:61;;;;;;;;;;;;30189:18;;;;:34;;;;-1:-1:-1;;29771:460:61:o;33284:374::-;33372:16;;:::i;:::-;33408:242;;;;;;;;33443:1;-1:-1:-1;;;;;33408:242:61;;;;;33466:6;:12;;;-1:-1:-1;;;;;33408:242:61;;;;;33505:6;:17;;;33408:242;;;;;;33623:6;:15;;;33408:242;;;;;;33548:6;:16;;;-1:-1:-1;;;;;33408:242:61;;;;;33586:6;:12;;;33408:242;;;33401:249;;33284:374;;;:::o;33666:377::-;33757:16;;:::i;:::-;33793:242;;;;;;;;33828:6;:12;;;-1:-1:-1;;;;;33793:242:61;;;;;33862:1;-1:-1:-1;;;;;33793:242:61;;;;;33890:6;:17;;;33793:242;;;;;;34008:6;:15;;;33793:242;;;;;;33933:6;:16;;;-1:-1:-1;;;;;33793:242:61;;;;;33971:6;:12;;;33793:242;;;33786:249;;33666:377;;;:::o;22157:2964::-;22377:28;;:::i;:::-;22423:38;22464:9;22469:3;22464:4;:9::i;:::-;22423:50;;22484:19;;:::i;:::-;22651:8;22646:1297;22667:5;:12;22661:3;:18;22646:1297;;;22708:31;22742:65;22758:25;22772:5;22778:3;22772:10;;;;;;;;:::i;:::-;;;;;;;22758:13;:25::i;:::-;22785:5;22791:3;22785:10;;;;;;;;:::i;:::-;;;;;;;22797:9;22742:15;:65::i;:::-;22708:99;;22830:3;22837:1;22830:8;22826:1010;;22867:23;;-1:-1:-1;;;;;22867:27:61;;22863:220;;22940:23;;22923:41;;:8;;;:41;22863:220;;;23038:20;;;;23021:38;;;;22863:220;23129:24;;;;;-1:-1:-1;;;;;23105:48:61;:21;;;:48;23196:20;;;;;23176:17;;;:40;22826:1010;;;23291:8;;;;23302:1;-1:-1:-1;23287:207:61;;;23350:23;;23332:42;;:5;23338:1;23332:8;;;:42;;;;;;;23287:207;;;23449:20;;;;23431:39;;;;;;;;;;23287:207;23520:50;23545:14;:24;;;23520:11;:21;;;-1:-1:-1;;;;;23520:24:61;;;:50;;;;:::i;:::-;23516:301;;;23702:24;;;;;-1:-1:-1;;;;;23678:48:61;:21;;;:48;23773:20;;;;;23753:17;;;:40;23516:301;23866:7;:61;;23904:14;:23;;;23902:25;;23866:61;;;23876:14;:23;;;23866:61;23854:73;;:5;23860:1;23854:8;;;:73;;;;;;;-1:-1:-1;22681:6:61;;22646:1297;;;-1:-1:-1;23964:20:61;;;;:5;23970:1;23964:8;;;:20;;;;;;;:::i;:::-;;;-1:-1:-1;23999:8:61;;;;24011:1;-1:-1:-1;23995:1077:61;;24033:7;24029:749;;;24088:8;;;;24061:12;;24087:9;;;:::i;:::-;24076:21;;:2;:21;:::i;:::-;24061:36;-1:-1:-1;24131:1:61;24120:5;24126:1;24120:8;;;;:12;24116:332;;;24202:8;;;;24187:24;;:7;:24;:::i;:::-;-1:-1:-1;;;;;24157:55:61;;;24116:332;;;24242:8;;24253:1;-1:-1:-1;24238:210:61;;;24321:8;;24306:24;;:7;:24;:::i;:::-;-1:-1:-1;;;;;24279:52:61;:17;;;:52;24238:210;;;24400:1;24380:17;;;:21;24238:210;24042:421;23995:1077;;24029:749;24516:8;;;;24488:13;;24515:9;;;:::i;:::-;24504:21;;:2;:21;:::i;:::-;24488:37;-1:-1:-1;24559:1:61;24548:5;24554:1;24548:8;;;;:12;24544:219;;;24620:8;;;;24615:25;;24632:8;;24615:25;:::i;24544:219::-;24722:8;;24717:25;;24734:8;;24717:25;:::i;:::-;-1:-1:-1;;;;;24690:53:61;:17;;;:53;24469:309;23995:1077;;;24836:8;;;;24810:12;;24825:20;;:2;:20;:::i;:::-;24810:35;-1:-1:-1;24875:1:61;24864:5;24870:1;24864:8;;;;:12;24860:201;;;24932:8;;;;24927:24;;24944:7;;24927:24;:::i;:::-;-1:-1:-1;;;;;24897:55:61;;;24860:201;;;25025:8;;25020:24;;25037:7;;25020:24;:::i;:::-;-1:-1:-1;;;;;24993:52:61;:17;;;:52;24860:201;24795:277;23995:1077;-1:-1:-1;;25082:31:61;;;;;:20;;;:31;-1:-1:-1;25082:11:61;22157:2964;-1:-1:-1;;22157:2964:61:o;25129:1004::-;25269:28;;:::i;:::-;25315:38;25356:9;25361:3;25356:4;:9::i;:::-;25315:50;;25381:8;25376:368;25397:5;:12;25391:3;:18;25376:368;;;25434:31;25468:66;25484:25;25498:5;25504:3;25498:10;;;;;;;;:::i;25484:25::-;25512:5;25518:3;25512:10;;;;;;;;:::i;:::-;;;;;;;25524:9;25468:15;:66::i;:::-;25434:100;-1:-1:-1;25571:8:61;;;:83;;;25604:50;25632:11;:21;;;25604:14;:24;;;-1:-1:-1;;;;;25604:27:61;;;:50;;;;:::i;:::-;25549:184;;;25703:14;25689:28;;25549:184;-1:-1:-1;25411:6:61;;25376:368;;;;25769:11;:20;;;25758:31;;:8;:31;;;25754:372;;;25869:8;25846:11;:20;;;:31;;;;:::i;:::-;25834:44;;:2;:44;:::i;:::-;25806:11;:17;;:73;;;;;;;:::i;:::-;-1:-1:-1;;;;;25806:73:61;;;-1:-1:-1;25894:31:61;;;;:20;;;:31;25754:372;;;25958:11;:20;;;25947:31;;:8;:31;;;25943:183;;;26046:20;;;;26035:31;;:8;:31;:::i;:::-;26023:44;;:2;:44;:::i;:::-;25995:11;:17;;:73;;;;;;;:::i;:::-;-1:-1:-1;;;;;25995:73:61;;;-1:-1:-1;26083:31:61;;;;:20;;;:31;25304:829;25129:1004;;;;;:::o;26141:1040::-;26282:28;;:::i;:::-;26328:38;26369:9;26374:3;26369:4;:9::i;:::-;26328:50;;26394:8;26389:403;26410:5;:12;26404:3;:18;26389:403;;;26447:31;26481:65;26497:25;26511:5;26517:3;26511:10;;;;;;;;:::i;26481:65::-;26447:99;-1:-1:-1;26583:14:61;;;;;:126;;-1:-1:-1;26681:27:61;;;;:15;:27;:::i;:::-;-1:-1:-1;;;;;26622:87:61;26646:14;:24;;;-1:-1:-1;;;;;26622:87:61;;26583:126;26561:220;;;26751:14;-1:-1:-1;26744:21:61;;-1:-1:-1;;26744:21:61;26561:220;-1:-1:-1;26424:6:61;;26389:403;;18681:914;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18911:6:61;:4;:6::i;:::-;18959:628;;;;;;;;;19024:16;;18911:30;;;;;;-1:-1:-1;18959:628:61;;;19024:16;;:21;:64;;19072:16;;;;19024:64;;;19048:21;;;;19024:64;18959:628;;;;19115:15;;18959:628;;;;;19115:15;;;;;;:39;;-1:-1:-1;19134:20:61;;;;;;;19115:39;18959:628;;;;19184:17;;18959:628;;;;;-1:-1:-1;;;19184:17:61;;;;:22;:67;;19234:17;;-1:-1:-1;;;19234:17:61;;;;19184:67;;;19209:22;;-1:-1:-1;;;19209:22:61;;;;19184:67;18959:628;;;;;;19281:18;;18959:628;;;;;-1:-1:-1;;;19281:18:61;;;:23;:70;;19333:18;;-1:-1:-1;;;19333:18:61;;;;19281:70;;;19307:23;;-1:-1:-1;;;19307:23:61;;;;19281:70;18959:628;;;;19384:21;;18959:628;;;;;-1:-1:-1;;;19384:21:61;;;;:26;:79;;19442:21;;-1:-1:-1;;;19442:21:61;;;;19384:79;;;19413:26;;-1:-1:-1;;;19413:26:61;;;;19384:79;18959:628;;;;;;19492:17;;18959:628;;;;;-1:-1:-1;;;19492:17:61;;;:22;:67;;19542:17;;-1:-1:-1;;;19542:17:61;;;;19492:67;;;19517:22;;-1:-1:-1;;;19517:22:61;;;;19492:67;18959:628;;;;18952:635;18681:914;-1:-1:-1;;;18681:914:61:o;31689:385::-;31750:17;31780:14;31797:6;:4;:6::i;:::-;:17;;-1:-1:-1;31829:13:61;;31825:242;;31872:37;31885:23;31894:6;:4;:6::i;:::-;:13;;:10;;:13;;;;:::i;:::-;;;;;;;;;33100:2;32946:167;31885:23;31872:12;:37::i;:::-;31859:50;-1:-1:-1;31940:1:61;31924:132;31949:9;31943:3;:15;31924:132;;;32001:39;32014:25;32023:6;:4;:6::i;:::-;:15;;32034:3;;32023:15;;;;;;:::i;32001:39::-;31987:53;;;;31960:6;;31924:132;;;;31825:242;31769:305;31689:385;:::o;21219:684::-;21286:38;21337:23;21363:6;:4;:6::i;:::-;-1:-1:-1;;;;;;21363:20:61;;;;;;:14;;;;;:20;;;;;;;:31;;;21413:32;;21443:1;21413:32;;;;;;;;;21363:31;;-1:-1:-1;21413:32:61;;;;;;;;;;;;;-1:-1:-1;21413:32:61;21405:40;;21456:9;21476:293;21494:1;21487:4;:8;21476:293;;;21542:15;-1:-1:-1;;;;;;21577:9:61;;21521:11;21577:9;21573:185;;21607:5;;;21573:185;21696:4;21653:5;21659:4;21653:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;21653:48:61;;;:11;;;;;;;;;;:48;21720:22;;;;;-1:-1:-1;21497:7:61;;21476:293;;;21866:19;;-1:-1:-1;21873:5:61;21219:684;-1:-1:-1;21219:684:61:o;37878:134:116:-;-1:-1:-1;;;;;37963:41:116;;;;;;;37878:134::o;32082:856:61:-;32155:6;32174:43;32220:18;32234:3;32220:13;:18::i;:::-;32253;;;;32174:64;;-1:-1:-1;32249:682:61;;32324:32;32309:11;;;;-1:-1:-1;;;32309:11:61;;;;:47;;;;;;;;:::i;:::-;;:426;;32681:18;;;;32583:135;;-1:-1:-1;;;;;;27494:33:136;;32583:135:61;;;27482:46:136;-1:-1:-1;;;32681:18:61;;;27565:2:136;27561:15;-1:-1:-1;;27561:15:136;27544:11;;;27537:74;27627:12;;32583:135:61;;;;;;;;;;;;32573:146;;;;;;32309:426;;;32493:15;;;;32395:132;;-1:-1:-1;;;;;;27817:33:136;;32395:132:61;;;27805:46:136;27867:11;;;27860:27;;;;27903:12;;32395:132:61;;;;;;;;;;;;;32385:143;;;;;;32302:433;32082:856;-1:-1:-1;;;32082:856:61:o;32249:682::-;32884:18;;;;32794:123;;-1:-1:-1;;;;;;27817:33:136;;32794:123:61;;;27805:46:136;27867:11;;;27860:27;;;;27903:12;;32794:123:61;27650:271:136;32249:682:61;32163:775;32082:856;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:348:136;66:8;76:6;130:3;123:4;115:6;111:17;107:27;97:55;;148:1;145;138:12;97:55;-1:-1:-1;171:20:136;;-1:-1:-1;;;;;203:30:136;;200:50;;;246:1;243;236:12;200:50;283:4;275:6;271:17;259:29;;335:3;328:4;319:6;311;307:19;303:30;300:39;297:59;;;352:1;349;342:12;297:59;14:348;;;;;:::o;367:117::-;453:5;450:1;439:20;432:5;429:31;419:59;;474:1;471;464:12;489:148;562:20;;611:1;601:12;;591:40;;627:1;624;617:12;642:1149;789:6;797;805;813;821;829;882:3;870:9;861:7;857:23;853:33;850:53;;;899:1;896;889:12;850:53;939:9;926:23;-1:-1:-1;;;;;964:6:136;961:30;958:50;;;1004:1;1001;994:12;958:50;1043:59;1094:7;1085:6;1074:9;1070:22;1043:59;:::i;:::-;1121:8;;-1:-1:-1;1017:85:136;-1:-1:-1;;1206:2:136;1191:18;;1178:32;1219:28;1178:32;1219:28;:::i;:::-;1266:5;-1:-1:-1;1290:43:136;1329:2;1314:18;;1290:43;:::i;:::-;1280:53;;1386:2;1375:9;1371:18;1358:32;-1:-1:-1;;;;;1405:8:136;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1470:24;;1525:4;1517:13;;1513:27;-1:-1:-1;1503:55:136;;1554:1;1551;1544:12;1503:55;1594:2;1581:16;-1:-1:-1;;;;;1612:6:136;1609:30;1606:50;;;1652:1;1649;1642:12;1606:50;1705:7;1700:2;1690:6;1687:1;1683:14;1679:2;1675:23;1671:32;1668:45;1665:65;;;1726:1;1723;1716:12;1665:65;1757:2;1753;1749:11;1739:21;;1779:6;1769:16;;;;642:1149;;;;;;;;:::o;2011:156::-;-1:-1:-1;;;;;2111:31:136;;2101:42;;2091:70;;2157:1;2154;2147:12;2172:1044;2311:6;2319;2327;2335;2343;2351;2404:3;2392:9;2383:7;2379:23;2375:33;2372:53;;;2421:1;2418;2411:12;2372:53;2461:9;2448:23;-1:-1:-1;;;;;2486:6:136;2483:30;2480:50;;;2526:1;2523;2516:12;2480:50;2565:59;2616:7;2607:6;2596:9;2592:22;2565:59;:::i;:::-;2643:8;;-1:-1:-1;2539:85:136;-1:-1:-1;;2731:2:136;2716:18;;2703:32;-1:-1:-1;;;;;2747:32:136;;2744:52;;;2792:1;2789;2782:12;2744:52;2831:61;2884:7;2873:8;2862:9;2858:24;2831:61;:::i;:::-;2911:8;;-1:-1:-1;2805:87:136;-1:-1:-1;;2996:2:136;2981:18;;2968:32;3009:28;2968:32;3009:28;:::i;:::-;3056:5;-1:-1:-1;3113:2:136;3098:18;;3085:32;3126:58;3085:32;3126:58;:::i;:::-;3203:7;3193:17;;;2172:1044;;;;;;;;:::o;3538:148::-;3611:20;;3660:1;3650:12;;3640:40;;3676:1;3673;3666:12;3691:204;3763:6;3816:2;3804:9;3795:7;3791:23;3787:32;3784:52;;;3832:1;3829;3822:12;3784:52;3855:34;3879:9;3855:34;:::i;3900:289::-;3942:3;3980:5;3974:12;4007:6;4002:3;3995:19;4063:6;4056:4;4049:5;4045:16;4038:4;4033:3;4029:14;4023:47;4115:1;4108:4;4099:6;4094:3;4090:16;4086:27;4079:38;4178:4;4171:2;4167:7;4162:2;4154:6;4150:15;4146:29;4141:3;4137:39;4133:50;4126:57;;;3900:289;;;;:::o;4194:228::-;4351:2;4340:9;4333:21;4314:4;4371:45;4412:2;4401:9;4397:18;4389:6;4371:45;:::i;4427:191::-;4512:20;;-1:-1:-1;;;;;;4561:32:136;;4551:43;;4541:71;;4608:1;4605;4598:12;4623:161;4690:20;;4750:8;4739:20;;4729:31;;4719:59;;4774:1;4771;4764:12;4789:397;4919:6;4927;4935;4988:2;4976:9;4967:7;4963:23;4959:32;4956:52;;;5004:1;5001;4994:12;4956:52;5040:9;5027:23;5017:33;;5069:55;5120:2;5109:9;5105:18;5069:55;:::i;:::-;5059:65;;5143:37;5176:2;5165:9;5161:18;5143:37;:::i;:::-;5133:47;;4789:397;;;;;:::o;5865:204::-;5937:6;5990:2;5978:9;5969:7;5965:23;5961:32;5958:52;;;6006:1;6003;5996:12;5958:52;6029:34;6053:9;6029:34;:::i;6074:118::-;6160:5;6153:13;6146:21;6139:5;6136:32;6126:60;;6182:1;6179;6172:12;6197:357;6287:6;6295;6348:2;6336:9;6327:7;6323:23;6319:32;6316:52;;;6364:1;6361;6354:12;6316:52;6387:46;6423:9;6387:46;:::i;:::-;6377:56;;6483:2;6472:9;6468:18;6455:32;6496:28;6518:5;6496:28;:::i;:::-;6543:5;6533:15;;;6197:357;;;;;:::o;6559:228::-;6643:6;6696:2;6684:9;6675:7;6671:23;6667:32;6664:52;;;6712:1;6709;6702:12;6664:52;6735:46;6771:9;6735:46;:::i;7370:300::-;7462:6;7470;7523:2;7511:9;7502:7;7498:23;7494:32;7491:52;;;7539:1;7536;7529:12;7491:52;7562:46;7598:9;7562:46;:::i;:::-;7552:56;;7627:37;7660:2;7649:9;7645:18;7627:37;:::i;:::-;7617:47;;7370:300;;;;;:::o;7675:891::-;7834:6;7842;7850;7858;7866;7919:3;7907:9;7898:7;7894:23;7890:33;7887:53;;;7936:1;7933;7926:12;7887:53;7976:9;7963:23;-1:-1:-1;;;;;8001:6:136;7998:30;7995:50;;;8041:1;8038;8031:12;7995:50;8080:59;8131:7;8122:6;8111:9;8107:22;8080:59;:::i;:::-;8158:8;;-1:-1:-1;8054:85:136;-1:-1:-1;;8262:2:136;8247:18;;8234:32;;-1:-1:-1;8342:2:136;8327:18;;8314:32;8355:30;8314:32;8355:30;:::i;:::-;8404:7;-1:-1:-1;8463:2:136;8448:18;;8435:32;8476:58;8435:32;8476:58;:::i;:::-;8553:7;8543:17;;;7675:891;;;;;;;;:::o;8571:920::-;8688:6;8696;8704;8712;8720;8728;8781:3;8769:9;8760:7;8756:23;8752:33;8749:53;;;8798:1;8795;8788:12;8749:53;8838:9;8825:23;-1:-1:-1;;;;;8863:6:136;8860:30;8857:50;;;8903:1;8900;8893:12;8857:50;8942:59;8993:7;8984:6;8973:9;8969:22;8942:59;:::i;:::-;9020:8;;-1:-1:-1;8916:85:136;-1:-1:-1;;9105:2:136;9090:18;;9077:32;9118:28;9077:32;9118:28;:::i;:::-;9165:5;-1:-1:-1;9189:43:136;9228:2;9213:18;;9189:43;:::i;:::-;9179:53;;9284:2;9273:9;9269:18;9256:32;9297:58;9347:7;9297:58;:::i;:::-;8571:920;;;;-1:-1:-1;8571:920:136;;;;;9454:3;9439:19;;;9426:33;;-1:-1:-1;;8571:920:136:o;9496:127::-;9557:10;9552:3;9548:20;9545:1;9538:31;9588:4;9585:1;9578:15;9612:4;9609:1;9602:15;9971:339;10173:2;10155:21;;;10212:2;10192:18;;;10185:30;-1:-1:-1;;;10246:2:136;10231:18;;10224:45;10301:2;10286:18;;9971:339::o;10315:127::-;10376:10;10371:3;10367:20;10364:1;10357:31;10407:4;10404:1;10397:15;10431:4;10428:1;10421:15;10447:522;10525:4;10531:6;10591:11;10578:25;10685:2;10681:7;10670:8;10654:14;10650:29;10646:43;10626:18;10622:68;10612:96;;10704:1;10701;10694:12;10612:96;10731:33;;10783:20;;;-1:-1:-1;;;;;;10815:30:136;;10812:50;;;10858:1;10855;10848:12;10812:50;10891:4;10879:17;;-1:-1:-1;10922:14:136;10918:27;;;10908:38;;10905:58;;;10959:1;10956;10949:12;10974:440;11246:26;11241:3;11234:39;11317:6;11309;11304:2;11299:3;11295:12;11282:42;11216:3;11347:16;;11365:2;11343:25;11377:13;;;11343:25;10974:440;-1:-1:-1;10974:440:136:o;11644:127::-;11705:10;11700:3;11696:20;11693:1;11686:31;11736:4;11733:1;11726:15;11760:4;11757:1;11750:15;11776:168;11849:9;;;11880;;11897:15;;;11891:22;;11877:37;11867:71;;11918:18;;:::i;12295:266::-;12383:6;12378:3;12371:19;12435:6;12428:5;12421:4;12416:3;12412:14;12399:43;-1:-1:-1;12487:1:136;12462:16;;;12480:4;12458:27;;;12451:38;;;;12543:2;12522:15;;;-1:-1:-1;;12518:29:136;12509:39;;;12505:50;;12295:266::o;12566:244::-;12723:2;12712:9;12705:21;12686:4;12743:61;12800:2;12789:9;12785:18;12777:6;12769;12743:61;:::i;:::-;12735:69;12566:244;-1:-1:-1;;;;12566:244:136:o;12815:261::-;12916:6;12969:2;12957:9;12948:7;12944:23;12940:32;12937:52;;;12985:1;12982;12975:12;12937:52;-1:-1:-1;13030:16:136;;12815:261;-1:-1:-1;12815:261:136:o;13745:127::-;13806:10;13801:3;13797:20;13794:1;13787:31;13837:4;13834:1;13827:15;13861:4;13858:1;13851:15;13877:129;-1:-1:-1;;;;;13955:5:136;13951:30;13944:5;13941:41;13931:69;;13996:1;13993;13986:12;14011:1101;14105:6;14165:3;14153:9;14144:7;14140:23;14136:33;14181:2;14178:22;;;14196:1;14193;14186:12;14178:22;-1:-1:-1;14265:2:136;14259:9;14307:3;14295:16;;-1:-1:-1;;;;;14326:34:136;;14362:22;;;14323:62;14320:88;;;14388:18;;:::i;:::-;14424:2;14417:22;14461:16;;14486:28;14461:16;14486:28;:::i;:::-;14523:21;;14589:2;14574:18;;14568:25;14602:32;14568:25;14602:32;:::i;:::-;14662:2;14650:15;;14643:32;14720:2;14705:18;;14699:25;14766:1;14755:22;;;14743:35;;14733:63;;14792:1;14789;14782:12;14733:63;14824:2;14812:15;;14805:32;14882:2;14867:18;;14861:25;14895:32;14861:25;14895:32;:::i;:::-;14955:2;14943:15;;14936:32;15034:3;15019:19;;;15013:26;15055:16;;;15048:33;;;;-1:-1:-1;14947:6:136;14011:1101;-1:-1:-1;14011:1101:136:o;15299:455::-;15386:6;15394;15402;15455:2;15443:9;15434:7;15430:23;15426:32;15423:52;;;15471:1;15468;15461:12;15423:52;-1:-1:-1;;15516:16:136;;15622:2;15607:18;;15601:25;15718:2;15703:18;;;15697:25;15516:16;;15601:25;;-1:-1:-1;15697:25:136;15299:455;-1:-1:-1;15299:455:136:o;15759:179::-;15837:13;;15890:22;15879:34;;15869:45;;15859:73;;15928:1;15925;15918:12;15943:623;16046:6;16054;16062;16070;16078;16131:3;16119:9;16110:7;16106:23;16102:33;16099:53;;;16148:1;16145;16138:12;16099:53;16171:39;16200:9;16171:39;:::i;:::-;16272:2;16257:18;;16251:25;16366:2;16351:18;;16345:25;16462:2;16447:18;;16441:25;16161:49;;-1:-1:-1;16251:25:136;;-1:-1:-1;16345:25:136;-1:-1:-1;16441:25:136;-1:-1:-1;16511:49:136;16555:3;16540:19;;16511:49;:::i;:::-;16501:59;;15943:623;;;;;;;;:::o;16777:1003::-;16875:6;16935:3;16923:9;16914:7;16910:23;16906:33;16951:2;16948:22;;;16966:1;16963;16956:12;16948:22;-1:-1:-1;17035:2:136;17029:9;17077:3;17065:16;;-1:-1:-1;;;;;17096:34:136;;17132:22;;;17093:62;17090:88;;;17158:18;;:::i;:::-;17194:2;17187:22;17231:16;;17287:1;17276:20;;;17266:31;;17256:59;;17311:1;17308;17301:12;17256:59;17324:21;;17390:2;17375:18;;17369:25;17403:32;17369:25;17403:32;:::i;:::-;17463:2;17451:15;;17444:32;17521:2;17506:18;;17500:25;17567:1;17556:22;;;17544:35;;17534:63;;17593:1;17590;17583:12;17534:63;17625:2;17613:15;;17606:32;17704:2;17689:18;;;17683:25;17724:15;;;17717:32;;;;-1:-1:-1;17617:6:136;16777:1003;-1:-1:-1;16777:1003:136:o;18536:128::-;18603:9;;;18624:11;;;18621:37;;;18638:18;;:::i;18669:127::-;18730:10;18725:3;18721:20;18718:1;18711:31;18761:4;18758:1;18751:15;18785:4;18782:1;18775:15;18801:191;-1:-1:-1;;;;;18869:26:136;;;18897;;;18865:59;;18936:27;;18933:53;;;18966:18;;:::i;19210:245::-;19277:6;19330:2;19318:9;19309:7;19305:23;19301:32;19298:52;;;19346:1;19343;19336:12;19298:52;19378:9;19372:16;19397:28;19419:5;19397:28;:::i;20496:380::-;20575:1;20571:12;;;;20618;;;20639:61;;20693:4;20685:6;20681:17;20671:27;;20639:61;20746:2;20738:6;20735:14;20715:18;20712:38;20709:161;;20792:10;20787:3;20783:20;20780:1;20773:31;20827:4;20824:1;20817:15;20855:4;20852:1;20845:15;21007:899;21153:2;21142:9;21135:21;21116:4;21176:1;21209:6;21203:13;21239:36;21265:9;21239:36;:::i;:::-;21311:6;21306:2;21295:9;21291:18;21284:34;21349:1;21338:9;21334:17;21365:1;21360:158;;;;21532:1;21527:353;;;;21327:553;;21360:158;21427:3;21423:8;21412:9;21408:24;21403:2;21392:9;21388:18;21381:52;21505:2;21493:6;21486:14;21479:22;21476:1;21472:30;21461:9;21457:46;21453:55;21446:62;;21360:158;;21527:353;21558:6;21555:1;21548:17;21606:2;21603:1;21593:16;21631:1;21645:179;21659:6;21656:1;21653:13;21645:179;;;21752:14;;21728:17;;;21747:2;21724:26;21717:50;21808:1;21795:15;;;;21681:2;21674:10;21645:179;;;21848:17;;21867:2;21844:26;;-1:-1:-1;;21327:553:136;-1:-1:-1;21897:3:136;;21007:899;-1:-1:-1;;;;;21007:899:136:o;22582:518::-;22684:2;22679:3;22676:11;22673:421;;;22720:5;22717:1;22710:16;22764:4;22761:1;22751:18;22834:2;22822:10;22818:19;22815:1;22811:27;22805:4;22801:38;22870:4;22858:10;22855:20;22852:47;;;-1:-1:-1;22893:4:136;22852:47;22948:2;22943:3;22939:12;22936:1;22932:20;22926:4;22922:31;22912:41;;23003:81;23021:2;23014:5;23011:13;23003:81;;;23080:1;23066:16;;23047:1;23036:13;23003:81;;;23007:3;;22582:518;;;:::o;23276:1198::-;-1:-1:-1;;;;;23395:3:136;23392:27;23389:53;;;23422:18;;:::i;:::-;23451:94;23541:3;23501:38;23533:4;23527:11;23501:38;:::i;:::-;23495:4;23451:94;:::i;:::-;23571:1;23596:2;23591:3;23588:11;23613:1;23608:608;;;;24260:1;24277:3;24274:93;;;-1:-1:-1;24333:19:136;;;24320:33;24274:93;-1:-1:-1;;23233:1:136;23229:11;;;23225:24;23221:29;23211:40;23257:1;23253:11;;;23208:57;24380:78;;23581:887;;23608:608;20954:1;20947:14;;;20991:4;20978:18;;-1:-1:-1;;23644:17:136;;;23759:229;23773:7;23770:1;23767:14;23759:229;;;23862:19;;;23849:33;23834:49;;23969:4;23954:20;;;;23922:1;23910:14;;;;23789:12;23759:229;;;23763:3;24016;24007:7;24004:16;24001:159;;;24140:1;24136:6;24130:3;24124;24121:1;24117:11;24113:21;24109:34;24105:39;24092:9;24087:3;24083:19;24070:33;24066:79;24058:6;24051:95;24001:159;;;24203:1;24197:3;24194:1;24190:11;24186:19;24180:4;24173:33;23581:887;;23276:1198;;;:::o;24479:216::-;24543:9;;;24571:11;;;24518:3;24601:9;;24629:10;;24625:19;;24654:10;;24646:19;;24622:44;24619:70;;;24669:18;;:::i;24700:136::-;24735:3;-1:-1:-1;;;24756:22:136;;24753:48;;24781:18;;:::i;:::-;-1:-1:-1;24821:1:136;24817:13;;24700:136::o;24841:375::-;24929:1;24947:5;24961:249;24982:1;24972:8;24969:15;24961:249;;;25032:4;25027:3;25023:14;25017:4;25014:24;25011:50;;;25041:18;;:::i;:::-;25091:1;25081:8;25077:16;25074:49;;;25105:16;;;;25074:49;25188:1;25184:16;;;;;25144:15;;24961:249;;;24841:375;;;;;;:::o;25221:902::-;25270:5;25300:8;25290:80;;-1:-1:-1;25341:1:136;25355:5;;25290:80;25389:4;25379:76;;-1:-1:-1;25426:1:136;25440:5;;25379:76;25471:4;25489:1;25484:59;;;;25557:1;25552:174;;;;25464:262;;25484:59;25514:1;25505:10;;25528:5;;;25552:174;25589:3;25579:8;25576:17;25573:43;;;25596:18;;:::i;:::-;-1:-1:-1;;25652:1:136;25638:16;;25711:5;;25464:262;;25810:2;25800:8;25797:16;25791:3;25785:4;25782:13;25778:36;25772:2;25762:8;25759:16;25754:2;25748:4;25745:12;25741:35;25738:77;25735:203;;;-1:-1:-1;25847:19:136;;;25923:5;;25735:203;25970:42;-1:-1:-1;;25995:8:136;25989:4;25970:42;:::i;:::-;26048:6;26044:1;26040:6;26036:19;26027:7;26024:32;26021:58;;;26059:18;;:::i;:::-;26097:20;;25221:902;-1:-1:-1;;;25221:902:136:o;26128:131::-;26188:5;26217:36;26244:8;26238:4;26217:36;:::i;26264:127::-;26325:10;26320:3;26316:20;26313:1;26306:31;26356:4;26353:1;26346:15;26380:4;26377:1;26370:15;26396:120;26436:1;26462;26452:35;;26467:18;;:::i;:::-;-1:-1:-1;26501:9:136;;26396:120::o;26521:184::-;26558:4;26607:16;;;26589;;;;26585:39;-1:-1:-1;;26639:19:136;;26670:4;26660:15;;26636:40;26633:66;;;26679:18;;:::i;26710:140::-;26768:5;26797:47;26838:4;26828:8;26824:19;26818:4;26797:47;:::i;26855:268::-;-1:-1:-1;;;;;26939:26:136;;;26967;;;26935:59;27014:36;;;;27069:24;;;27059:58;;27097:18;;:::i;:::-;27059:58;26855:268;;;;:::o;27128:194::-;27167:1;-1:-1:-1;;;;;27198:1:136;27194:26;27239:3;27229:37;;27246:18;;:::i;:::-;27312:3;-1:-1:-1;;;;;27288:1:136;27284:26;27280:36;27275:41;;;27128:194;;;;:::o",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport {IChainlinkAggregatorV3} from \"../interfaces/legacy/IChainlinkAggregatorV3.sol\";\r\nimport {IERC2362} from \"ado-contracts/contracts/interfaces/IERC2362.sol\";\r\nimport {IWitPriceFeeds, IWitPriceFeedsTypes, IWitPyth} from \"../interfaces/IWitPriceFeeds.sol\";\r\nimport {IWitPythErrors} from \"../interfaces/legacy/IWitPythErrors.sol\";\r\n\r\nimport {\r\n    IWitOracle,\r\n    IWitOracleRadonRegistry,\r\n    Witnet\r\n} from \"../WitOracle.sol\";\r\n\r\nimport \"../libs/Slices.sol\";\r\n\r\n/// @title WitPriceFeeds data model.\r\n/// @author The Witnet Foundation.\r\nlibrary WitPriceFeedsDataLib {\r\n\r\n    using Slices for string;\r\n    using Slices for Slices.Slice;\r\n\r\n    using Witnet for Witnet.DataResult;\r\n    using Witnet for Witnet.QueryId;\r\n    using Witnet for Witnet.RadonHash;\r\n    using Witnet for Witnet.ResultStatus;\r\n    using Witnet for Witnet.Timestamp;\r\n\r\n    using WitPriceFeedsDataLib for IWitPriceFeedsTypes.ID4;\r\n    using WitPriceFeedsDataLib for PriceFeed;\r\n    \r\n    bytes32 private constant _WIT_FEEDS_DATA_SLOTHASH =\r\n        /* keccak256(\"io.witnet.feeds.data.v3\") & ~bytes32(uint256(0xff) */\r\n        0xc5354469a5d32189a18f5e79f9508d828fa089087c317bc89792b1c8dba53900;\r\n\r\n    struct Storage {\r\n        IWitPyth.ID[] ids;\r\n        mapping (IWitPriceFeedsTypes.ID4 => PriceFeed) records;\r\n        mapping (IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[]) reverseDeps;\r\n        mapping (Witnet.RadonHash => IWitPriceFeedsTypes.ID4) reverseIds;\r\n        IWitPriceFeedsTypes.UpdateConditions defaultUpdateConditions;\r\n        address consumer;\r\n        bytes4  footprint;\r\n    }\r\n\r\n    struct PriceData {\r\n        /// @dev Exponentially moving average proportional to actual time since previous update.\r\n        uint64 emaPrice;\r\n        \r\n        /// @dev Price attested on the Witnet blockchain.\r\n        uint64 price;\r\n        \r\n        /// @dev How much the price varied since previous update.\r\n        int56 deltaPrice;\r\n        \r\n        /// @dev Base-10 exponent to compute actual price.\r\n        int8 exponent;\r\n\r\n        /// @dev Timestamp at which the price was attested on the Witnet blockchain.\r\n        Witnet.Timestamp timestamp;\r\n\r\n        /// @dev Auditory trail: price witnessing act on the Witnet blockchain.\r\n        Witnet.TransactionHash trail;\r\n    }\r\n\r\n    // struct Price {\r\n    //     /// @dev Price data point to be read is just one single SLOAD.\r\n    //     PriceData data;\r\n        \r\n    //     /// @dev Auditory trail: price witnessing act on the Witnet blockchain.\r\n    //     Witnet.TransactionHash trail;\r\n    // }\r\n\r\n    struct PriceFeed {\r\n        /// @dev Human-readable symbol for this price feed.\r\n        string symbol;\r\n        \r\n        /// @dev (Required for removing price-feed settlements from storage)\r\n        uint32 index;\r\n\r\n        /// @dev Base-10 exponent to compute actual price.\r\n        int8 exponent;\r\n\r\n        /// @dev (40-bit reserve)\r\n        int40 _reserved;\r\n        \r\n        /// @dev Price feed's mapping algorithm, if any.        \r\n        IWitPriceFeedsTypes.Mappers mapper;\r\n\r\n        /// @dev Price feed's aggregator oracle type, if other than the Wit/Oracle.\r\n        IWitPriceFeedsTypes.Oracles oracle;\r\n\r\n        /// @dev Price feed's aggregator oracle address, if other than the Wit/Oracle.\r\n        address oracleAddress;\r\n\r\n        /// @dev Unique ID identifying actual data sources and off-chain computations performed by \r\n        /// the selected oracle when retrieving a fresh update for this price feed \r\n        /// (e.g. Radon Request hash if oracle is the Wit/Oracle).\r\n        bytes32 oracleSources;\r\n\r\n        /// @dev 256-bit flag containing references up to 8x existing price feeds.\r\n        bytes32 mapperDeps;\r\n\r\n        /// @dev Price-feed specific update conditions, if other than defaults.\r\n        IWitPriceFeedsTypes.UpdateConditions updateConditions;\r\n\r\n        /// @dev Last valid update data retrieved from the Wit/Oracle, if any.\r\n        PriceData lastUpdate;\r\n    }\r\n\r\n\r\n    // ================================================================================================================\r\n    // --- Public methods ---------------------------------------------------------------------------------------------\r\n\r\n    function fetchLastUpdate(PriceFeed storage self, IWitPriceFeedsTypes.ID4 id4, uint24 heartbeat)\r\n        public view \r\n        returns (PriceData memory _lastUpdate)\r\n    {\r\n        IWitPriceFeedsTypes.Mappers _mapper = self.mapper;\r\n        if (_mapper == IWitPriceFeedsTypes.Mappers.None) {\r\n            \r\n            IWitPriceFeedsTypes.Oracles _oracle = self.oracle;\r\n            if (_oracle == IWitPriceFeedsTypes.Oracles.Witnet) {\r\n                if (self.oracleAddress == address(0) || self.oracleAddress == address(this)) {\r\n                    return self.lastUpdate;\r\n                \r\n                } else {\r\n                    return (\r\n                        self.updateConditions.computeEma\r\n                            ? _intoEmaPriceData(IWitPriceFeeds(self.oracleAddress).getPriceNotOlderThan(\r\n                                IWitPriceFeedsTypes.ID4.wrap(bytes4(self.oracleSources)), \r\n                                heartbeat\r\n                            ))\r\n                            : _intoPriceData(IWitPriceFeeds(self.oracleAddress).getPriceNotOlderThan(\r\n                                IWitPriceFeedsTypes.ID4.wrap(bytes4(self.oracleSources)), \r\n                                heartbeat\r\n                            ))\r\n                    );\r\n                }\r\n\r\n            } else if (_oracle == IWitPriceFeedsTypes.Oracles.ERC2362) {\r\n                (int _value, uint _timestamp,) = IERC2362(self.oracleAddress).valueFor(self.oracleSources);\r\n                _lastUpdate.price = uint64(int64(_value));\r\n                _lastUpdate.timestamp = Witnet.Timestamp.wrap(uint64(_timestamp));\r\n                _lastUpdate.exponent = self.exponent;\r\n\r\n            } else if (_oracle == IWitPriceFeedsTypes.Oracles.Chainlink) {\r\n                (, int _value,, uint _timestamp,) = IChainlinkAggregatorV3(self.oracleAddress).latestRoundData();\r\n                _lastUpdate.price = uint64(int64(_value));\r\n                _lastUpdate.timestamp = Witnet.Timestamp.wrap(uint64(_timestamp));\r\n                _lastUpdate.exponent = self.exponent;\r\n            \r\n            } else if (_oracle == IWitPriceFeedsTypes.Oracles.Pyth) {\r\n                IWitPyth.PythPrice memory _price;\r\n                if (self.updateConditions.computeEma) {\r\n                    _price = IWitPyth(self.oracleAddress).getEmaPriceUnsafe(IWitPyth.ID.wrap(self.oracleSources));\r\n                    _lastUpdate.emaPrice = uint64(_price.price);\r\n                } else {\r\n                    _price = IWitPyth(self.oracleAddress).getPriceUnsafe(IWitPyth.ID.wrap(self.oracleSources));\r\n                    _lastUpdate.price = uint64(_price.price);\r\n                }\r\n                _lastUpdate.timestamp = Witnet.Timestamp.wrap(uint64(_price.publishTime));\r\n                _lastUpdate.exponent = int8(_price.expo);\r\n\r\n            } else {\r\n                revert(\"unsupported oracle\");\r\n            }\r\n        \r\n        } else {    \r\n            if (\r\n                _mapper == IWitPriceFeedsTypes.Mappers.Product \r\n                    || _mapper == IWitPriceFeedsTypes.Mappers.Inverse\r\n            ) {\r\n                return fetchLastUpdateFromProduct(\r\n                    id4, \r\n                    heartbeat, \r\n                    self.exponent, \r\n                    _mapper == IWitPriceFeedsTypes.Mappers.Inverse\r\n                );\r\n\r\n            } else if (_mapper == IWitPriceFeedsTypes.Mappers.Hottest) {\r\n                return fetchLastUpdateFromHottest(\r\n                    id4, \r\n                    heartbeat,\r\n                    self.exponent\r\n                );\r\n            \r\n            } else if (_mapper == IWitPriceFeedsTypes.Mappers.Fallback) {\r\n                return fetchLastUpdateFromFallback(\r\n                    id4, \r\n                    heartbeat,\r\n                    self.exponent\r\n                );\r\n\r\n            } else {\r\n                revert(\"unsupported mapper\");\r\n            }\r\n        }\r\n    }\r\n\r\n    function getPrice(IWitPriceFeedsTypes.ID4 id4)\r\n        public view \r\n        returns (IWitPriceFeedsTypes.Price memory)\r\n    {\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        IWitPriceFeedsTypes.UpdateConditions memory _conditions = coalesce(__record.updateConditions);\r\n\r\n        PriceData memory _lastUpdate = fetchLastUpdate(__record, id4, _conditions.heartbeatSecs);\r\n        \r\n        require(\r\n            !_lastUpdate.timestamp.isZero(), \r\n            IWitPythErrors.PriceFeedNotFound()\r\n        );\r\n        \r\n        require(\r\n            _conditions.heartbeatSecs == 0\r\n                || block.timestamp <= Witnet.Timestamp.unwrap(_lastUpdate.timestamp) + _conditions.heartbeatSecs,\r\n            IWitPythErrors.StalePrice()\r\n        );\r\n\r\n        return IWitPriceFeedsTypes.Price({\r\n            exponent: _lastUpdate.exponent,\r\n            deltaPrice: _lastUpdate.deltaPrice,\r\n            price: _lastUpdate.emaPrice > 0 ? _lastUpdate.emaPrice : _lastUpdate.price,\r\n            timestamp: _lastUpdate.timestamp,\r\n            trail: _lastUpdate.trail\r\n        });\r\n    }\r\n\r\n    function getPriceNotOlderThan(IWitPriceFeedsTypes.ID4 id4, uint24 age)\r\n        public view \r\n        returns (IWitPriceFeedsTypes.Price memory)\r\n    {\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        PriceData memory _lastUpdate = fetchLastUpdate(__record, id4, age);\r\n\r\n        require(\r\n            !_lastUpdate.timestamp.isZero(), \r\n            IWitPythErrors.PriceFeedNotFound()\r\n        );\r\n\r\n        require(\r\n            block.timestamp <= Witnet.Timestamp.unwrap(_lastUpdate.timestamp) + age,\r\n            IWitPythErrors.StalePrice()\r\n        );\r\n\r\n        return IWitPriceFeedsTypes.Price({\r\n            exponent: _lastUpdate.exponent,\r\n            deltaPrice: _lastUpdate.deltaPrice,\r\n            price: _lastUpdate.emaPrice > 0 ? _lastUpdate.emaPrice : _lastUpdate.price,\r\n            timestamp: _lastUpdate.timestamp,\r\n            trail: _lastUpdate.trail\r\n        });\r\n    }\r\n\r\n    function getPriceUnsafe(IWitPriceFeedsTypes.ID4 id4)\r\n        public view \r\n        returns (IWitPriceFeedsTypes.Price memory)\r\n    {\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        PriceData memory _lastUpdate = fetchLastUpdate(__record, id4, 0);\r\n\r\n        return IWitPriceFeedsTypes.Price({\r\n            exponent: _lastUpdate.exponent,\r\n            deltaPrice: _lastUpdate.deltaPrice,\r\n            price: _lastUpdate.emaPrice > 0 ? _lastUpdate.emaPrice : _lastUpdate.price,\r\n            timestamp: _lastUpdate.timestamp,\r\n            trail: _lastUpdate.trail\r\n        });\r\n    }\r\n\r\n    \r\n    // ================================================================================================================\r\n    // --- Price-feed admin methods -----------------------------------------------------------------------------------\r\n\r\n    function removePriceFeed(IWitPriceFeedsTypes.ID4 id4, bool recursively) public {\r\n        PriceFeed storage self = seekPriceFeed(id4);\r\n        if (self.settled()) {\r\n            IWitPriceFeedsTypes.ID4[] memory _reverseDeps = data().reverseDeps[id4];\r\n            require(\r\n                recursively\r\n                    || _reverseDeps.length == 0,\r\n                \"cannot remove if mapped from others\"  \r\n            );\r\n\r\n            // recursively remove reverse dependencies, if any\r\n            // (i.e. other price feeds that rely directly or indirectly on this one)\r\n            for (uint _ix; _ix < _reverseDeps.length; ++ _ix) {\r\n                removePriceFeed(_reverseDeps[_ix], recursively);\r\n            }\r\n            delete data().reverseDeps[id4];\r\n\r\n            // remove from array of supported price feeds\r\n            uint _popIndex = data().ids.length - 1;\r\n            if (self.index < _popIndex) {\r\n                IWitPyth.ID _popID = data().ids[_popIndex];\r\n                PriceFeed storage __last = seekPriceFeed(_intoID4(_popID));\r\n                __last.index = self.index;\r\n                data().ids[self.index] = _popID;\r\n            }\r\n            data().ids.pop();\r\n\r\n            // delete all metadata, but the update conditions\r\n            Witnet.RadonHash _radonHash = Witnet.RadonHash.wrap(self.oracleSources);       \r\n            if (!_radonHash.isZero()) {\r\n                if (id4.equals(data().reverseIds[_radonHash])) {\r\n                    data().reverseIds[_radonHash] = IWitPriceFeedsTypes.ID4.wrap(0);\r\n                }\r\n            }\r\n            delete data().records[id4].lastUpdate;\r\n            delete data().records[id4];\r\n        }\r\n    }\r\n\r\n    function settlePriceFeedFootprint() public returns (bytes4 _footprint) {\r\n        _footprint = _computePriceFeedsFootprint();\r\n        data().footprint = _footprint;\r\n    }\r\n\r\n    function settlePriceFeedMapper(\r\n            string calldata symbol,\r\n            int8 exponent,\r\n            IWitPriceFeedsTypes.Mappers mapper,\r\n            string[] calldata mapperDeps\r\n        )\r\n        public\r\n        returns (bytes4)\r\n    {\r\n        require(\r\n            uint8(mapper) > uint8(IWitPriceFeedsTypes.Mappers.None)\r\n                && uint8(mapper) <= uint8(IWitPriceFeedsTypes.Mappers.Inverse), \r\n            \"invalid mapper\"\r\n        );\r\n        IWitPriceFeedsTypes.ID4 id4 = _settlePriceFeedSymbol(symbol);\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        require(!__record.settled(), \"already settled\");\r\n        bytes32 _mapperDeps;\r\n        for (uint _ix; _ix < mapperDeps.length; _ix ++) {\r\n            bytes4 _id4 = bytes4(hash(mapperDeps[_ix]));\r\n            PriceFeed storage __depsFeed = seekPriceFeed(IWitPriceFeedsTypes.ID4.wrap(_id4));\r\n            require(__depsFeed.settled(), string(abi.encodePacked(\r\n                \"unsupported dependency: \",\r\n                mapperDeps[_ix]\r\n            )));\r\n            _mapperDeps |= (bytes32(_id4) >> (32 * _ix));\r\n            data().reverseDeps[IWitPriceFeedsTypes.ID4.wrap(_id4)].push(id4);\r\n        }\r\n        __record.settleMapper(\r\n            exponent, \r\n            mapper, \r\n            _mapperDeps\r\n        );\r\n        \r\n        // smoke test: force the transaction to revert, should there be any dependency loopback:\r\n        getPriceUnsafe(id4);\r\n\r\n        // recompute and return the new price feeds footprint:\r\n        return settlePriceFeedFootprint();\r\n    }\r\n\r\n    function settlePriceFeedOracle(\r\n            string calldata symbol,\r\n            int8 exponent,\r\n            IWitPriceFeedsTypes.Oracles oracle,\r\n            address oracleAddress,\r\n            bytes32 oracleSources\r\n        )\r\n        public\r\n        returns (bytes4)\r\n    {\r\n        require(\r\n            uint8(oracle) >= uint8(IWitPriceFeedsTypes.Oracles.Witnet)\r\n                && uint8(oracle) <= uint8(IWitPriceFeedsTypes.Oracles.Pyth), \r\n            \"invalid oracle\"\r\n        );\r\n        IWitPriceFeedsTypes.ID4 id4 = _settlePriceFeedSymbol(symbol);\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        require(!__record.settled(), \"already settled\");\r\n        require(oracleAddress.code.length > 0, \"inexistent oracle\");\r\n        __record.settleOracle(\r\n            exponent,\r\n            oracle,\r\n            oracleAddress,\r\n            oracleSources\r\n        );\r\n\r\n        // smoke test: force the transaction to revert, if providing bad sources or target address\r\n        getPriceUnsafe(id4);\r\n\r\n        // recompute and return the new price feeds footprint:\r\n        return settlePriceFeedFootprint();\r\n    }\r\n\r\n    function settlePriceFeedRadonBytecode(\r\n            string calldata symbol,\r\n            bytes calldata radonBytecode,\r\n            int8 exponent,\r\n            IWitOracleRadonRegistry registry\r\n        )\r\n        public\r\n        returns (bytes4 _footprint, Witnet.RadonHash _radonHash)\r\n    {\r\n        IWitPriceFeedsTypes.ID4 id4 = _settlePriceFeedSymbol(symbol);\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        require(address(registry) != address(0), \"no radon registry\");\r\n        _radonHash = registry.hashOf(radonBytecode);\r\n        __record.settleOracle(\r\n            exponent, \r\n            IWitPriceFeedsTypes.Oracles.Witnet,\r\n            address(this),\r\n            Witnet.RadonHash.unwrap(_radonHash)\r\n        );\r\n        _footprint = settlePriceFeedFootprint();\r\n    }\r\n\r\n    function settlePriceFeedRadonHash(\r\n            string calldata symbol,\r\n            Witnet.RadonHash radonHash,\r\n            int8 exponent,\r\n            IWitOracleRadonRegistry registry\r\n        )\r\n        public\r\n        returns (bytes4)\r\n    {\r\n        IWitPriceFeedsTypes.ID4 id4 = _settlePriceFeedSymbol(symbol);\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        require(address(registry) != address(0), \"no radon registry\");\r\n        require(registry.isVerifiedRadonRequest(radonHash), \"unverified sources\");\r\n        __record.settleOracle(\r\n            exponent, \r\n            IWitPriceFeedsTypes.Oracles.Witnet,\r\n            address(this),\r\n            Witnet.RadonHash.unwrap(radonHash)\r\n        );\r\n        return settlePriceFeedFootprint();\r\n    }\r\n\r\n    function toString(IWitPriceFeedsTypes.Mappers mapper) public pure returns (string memory) {\r\n        if (mapper == IWitPriceFeedsTypes.Mappers.None) {\r\n            return \"None\";\r\n        } else if (mapper == IWitPriceFeedsTypes.Mappers.Product) {\r\n            return \"Product\";\r\n        } else if (mapper == IWitPriceFeedsTypes.Mappers.Fallback) {\r\n            return \"Fallback\";\r\n        } else if (mapper == IWitPriceFeedsTypes.Mappers.Hottest) {\r\n            return \"Hottest\";\r\n        } \r\n        revert(\"unsupported mapper\");\r\n    }\r\n\r\n    function toString(IWitPriceFeedsTypes.Oracles oracle) public pure returns (string memory) {\r\n        if (oracle == IWitPriceFeedsTypes.Oracles.Witnet) {\r\n            return \"Wit/Oracle\";\r\n        } else if (oracle == IWitPriceFeedsTypes.Oracles.ERC2362) {\r\n            return \"ADO/ERC2362\";\r\n        } else if (oracle == IWitPriceFeedsTypes.Oracles.Chainlink) {\r\n            return \"ChainlinkAggregatorV3\";\r\n        } else if (oracle == IWitPriceFeedsTypes.Oracles.Pyth) {\r\n            return \"IPyth\";\r\n        }\r\n        revert(\"unsupported oracle\");\r\n    }\r\n\r\n    \r\n    // ================================================================================================================\r\n    // --- Internal methods -------------------------------------------------------------------------------------------\r\n\r\n    function coalesce(IWitPriceFeedsTypes.UpdateConditions storage self) \r\n        internal view \r\n        returns (IWitPriceFeedsTypes.UpdateConditions memory)\r\n    {\r\n        IWitPriceFeedsTypes.UpdateConditions storage __default = data().defaultUpdateConditions;\r\n        return IWitPriceFeedsTypes.UpdateConditions({\r\n            callbackGas: self.callbackGas == 0 ? __default.callbackGas : self.callbackGas,\r\n            computeEma: self.computeEma || __default.computeEma,\r\n            cooldownSecs:  self.cooldownSecs == 0 ? __default.cooldownSecs : self.cooldownSecs,\r\n            heartbeatSecs: self.heartbeatSecs == 0 ? __default.heartbeatSecs : self.heartbeatSecs,\r\n            maxDeviation1000: self.maxDeviation1000 == 0 ? __default.maxDeviation1000 : self.maxDeviation1000,\r\n            minWitnesses: self.minWitnesses == 0 ? __default.minWitnesses : self.minWitnesses                \r\n        });\r\n    }\r\n\r\n    function coalesce(\r\n            IWitPriceFeedsTypes.UpdateConditions storage self, \r\n            IWitPriceFeedsTypes.UpdateConditions memory _default\r\n        ) \r\n        internal pure\r\n        returns (IWitPriceFeedsTypes.UpdateConditions memory)\r\n    {\r\n        IWitPriceFeedsTypes.UpdateConditions memory _self = self;\r\n        return IWitPriceFeedsTypes.UpdateConditions({\r\n            callbackGas: _self.callbackGas == 0 ? _default.callbackGas : _self.callbackGas,\r\n            computeEma: _self.computeEma || _default.computeEma,\r\n            cooldownSecs:  _self.cooldownSecs == 0 ? _default.cooldownSecs : _self.cooldownSecs,\r\n            heartbeatSecs: _self.heartbeatSecs == 0 ? _default.heartbeatSecs : _self.heartbeatSecs,\r\n            maxDeviation1000: _self.maxDeviation1000 == 0 ? _default.maxDeviation1000 : _self.maxDeviation1000,\r\n            minWitnesses: _self.minWitnesses == 0 ? _default.minWitnesses : _self.minWitnesses\r\n        });\r\n    }\r\n\r\n    /// @notice Returns storage pointer to where Storage data is located. \r\n    function data() internal pure returns (Storage storage _ptr) {\r\n        assembly {\r\n            _ptr.slot := _WIT_FEEDS_DATA_SLOTHASH\r\n        }\r\n    }\r\n\r\n    /// @notice Returns array of price feed ids from which given feed's value depends.\r\n    /// @dev Returns empty array on either unsupported or not-routed feeds.\r\n    /// @dev The maximum number of dependencies is hard-limited to 8, as to limit number\r\n    /// @dev of SSTORE operations (`__storage().records[feedId].solverDepsFlag`), \r\n    /// @dev no matter the actual number of depending feeds involved.\r\n    function deps(IWitPriceFeedsTypes.ID4 self) internal view returns (IWitPriceFeedsTypes.ID4[] memory _deps) {\r\n        bytes32 _solverDepsFlag = data().records[self].mapperDeps;\r\n        _deps = new IWitPriceFeedsTypes.ID4[](8);\r\n        uint _len;\r\n        for (_len; _len < 8; ++ _len) {\r\n            bytes4 _id4 = bytes4(_solverDepsFlag);\r\n            if (_id4 == 0) {\r\n                break;\r\n            } else {\r\n                _deps[_len] = IWitPriceFeedsTypes.ID4.wrap(_id4);\r\n                _solverDepsFlag <<= 32;\r\n            }\r\n        }\r\n        assembly {\r\n            // reset length to actual number of dependencies:\r\n            mstore(_deps, _len)\r\n        }\r\n    }\r\n\r\n    function equals(IWitPriceFeedsTypes.ID4 a, IWitPriceFeedsTypes.ID4 b) internal pure returns (bool) {\r\n        return (\r\n            IWitPriceFeedsTypes.ID4.unwrap(a)\r\n                == IWitPriceFeedsTypes.ID4.unwrap(b)\r\n        );\r\n    }\r\n\r\n    function fetchLastUpdateFromProduct(\r\n            IWitPriceFeedsTypes.ID4 id4, \r\n            uint24 heartbeat, \r\n            int8 exponent, \r\n            bool inverse\r\n        )\r\n        internal view \r\n        returns (PriceData memory _lastUpdate)\r\n    {\r\n        IWitPriceFeedsTypes.ID4[] memory _deps = deps(id4);\r\n        int[3] memory _regs;\r\n        // _regs[0] -> _lastPrice\r\n        // _regs[1] -> _lastEmaPrice\r\n        // _regs[2] -> _exponent\r\n        unchecked {\r\n            for (uint _ix; _ix < _deps.length; ++ _ix) {\r\n                PriceData memory _depLastUpdate = fetchLastUpdate(seekPriceFeed(_deps[_ix]), _deps[_ix], heartbeat);\r\n                if (_ix == 0) {\r\n                    if (_depLastUpdate.emaPrice > 0) {\r\n                        _regs[1] = int64(_depLastUpdate.emaPrice);\r\n                    } else {\r\n                        _regs[0] = int64(_depLastUpdate.price);\r\n                    }\r\n                    _lastUpdate.timestamp = _depLastUpdate.timestamp;\r\n                    _lastUpdate.trail = _depLastUpdate.trail;\r\n                    \r\n                } else {\r\n                    if (_regs[1] > 0) {\r\n                        _regs[1] *= int64(_depLastUpdate.emaPrice);\r\n                    } else {\r\n                        _regs[0] *= int64(_depLastUpdate.price);\r\n                    }\r\n                    if (_lastUpdate.timestamp.gt(_depLastUpdate.timestamp)) {\r\n                        // on Product: timestamp belong to oldest of all deps\r\n                        _lastUpdate.timestamp = _depLastUpdate.timestamp;\r\n                        _lastUpdate.trail = _depLastUpdate.trail;\r\n                    }\r\n                }\r\n                _regs[2] += inverse ? _depLastUpdate.exponent : - _depLastUpdate.exponent;\r\n            }\r\n        }\r\n        _regs[2] += exponent;\r\n        if (_regs[2] <= 0) {\r\n            if (inverse) {\r\n                uint _factor = 10 ** uint(-_regs[2]);\r\n                if (_regs[1] > 0) {\r\n                    _lastUpdate.emaPrice = uint64(_factor / uint(_regs[1]));\r\n                } else if (_regs[0] > 0) {\r\n                    _lastUpdate.price = uint64(_factor / uint(_regs[0]));\r\n                } else {\r\n                    _lastUpdate.price = 0; // avoid unhandled reverts\r\n                }\r\n            } else {\r\n                uint _divisor = 10 ** uint(-_regs[2]);\r\n                if (_regs[1] > 0) {\r\n                    _lastUpdate.emaPrice = uint64(uint(_regs[1]) / _divisor);\r\n                } else {\r\n                    _lastUpdate.price = uint64(uint(_regs[0]) / _divisor);\r\n                }\r\n            }\r\n        } else {\r\n            uint _factor = 10 ** uint(_regs[2]);\r\n            if (_regs[1] > 0) {\r\n                _lastUpdate.emaPrice = uint64(uint(_regs[1]) * _factor);\r\n            } else {\r\n                _lastUpdate.price = uint64(uint(_regs[0]) * _factor);\r\n            }\r\n        }\r\n        _lastUpdate.exponent = exponent;\r\n    }\r\n\r\n    function fetchLastUpdateFromHottest(IWitPriceFeedsTypes.ID4 id4, uint24 heartbeat, int8 exponent)\r\n        internal view \r\n        returns (PriceData memory _lastUpdate)\r\n    {\r\n        IWitPriceFeedsTypes.ID4[] memory _deps = deps(id4);\r\n        for (uint _ix; _ix < _deps.length; ++ _ix) {\r\n            PriceData memory _depLastUpdate = fetchLastUpdate(seekPriceFeed(_deps[_ix]),  _deps[_ix], heartbeat);\r\n            if (\r\n                _ix == 0\r\n                    || _depLastUpdate.timestamp.gt(_lastUpdate.timestamp)\r\n            ) {\r\n                _lastUpdate = _depLastUpdate;\r\n            }\r\n        }\r\n        if (exponent < _lastUpdate.exponent) {\r\n            _lastUpdate.price *= uint64(10 ** uint8(_lastUpdate.exponent - exponent));\r\n            _lastUpdate.exponent = exponent;\r\n        } else if (exponent > _lastUpdate.exponent) {\r\n            _lastUpdate.price /= uint64(10 ** uint8(exponent - _lastUpdate.exponent));\r\n            _lastUpdate.exponent = exponent;\r\n        }\r\n    }\r\n\r\n    function fetchLastUpdateFromFallback(IWitPriceFeedsTypes.ID4 id4, uint24 heartbeat, int8 exponent)\r\n        internal view \r\n        returns (PriceData memory _lastUpdate)\r\n    {\r\n        IWitPriceFeedsTypes.ID4[] memory _deps = deps(id4);\r\n        for (uint _ix; _ix < _deps.length; ++ _ix) {\r\n            PriceData memory _depLastUpdate = fetchLastUpdate(seekPriceFeed(_deps[_ix]), _deps[_ix], heartbeat);\r\n            if (\r\n                heartbeat == 0\r\n                    || Witnet.Timestamp.unwrap(_depLastUpdate.timestamp) > uint64(block.timestamp - heartbeat)\r\n            ) {\r\n                return _depLastUpdate;\r\n            }\r\n        }\r\n        if (exponent < _lastUpdate.exponent) {\r\n            _lastUpdate.price *= uint64(10 ** uint8(_lastUpdate.exponent - exponent));\r\n            _lastUpdate.exponent = exponent;\r\n        } else if (exponent > _lastUpdate.exponent) {\r\n            _lastUpdate.price /= uint64(10 ** uint8(exponent - _lastUpdate.exponent));\r\n            _lastUpdate.exponent = exponent;\r\n        }\r\n    }\r\n\r\n    function hash(string memory symbol) internal pure returns (bytes32) {\r\n        return keccak256(abi.encode(symbol));\r\n    }\r\n\r\n    function isZero(IWitPriceFeedsTypes.ID4 id4) internal pure returns (bool) {\r\n        return IWitPriceFeedsTypes.ID4.unwrap(id4) == 0;\r\n    }\r\n\r\n    // function pushDataResult(\r\n    //         Witnet.DataResult memory result,\r\n    //         IWitPriceFeedsTypes.UpdateConditions memory defaultUpdateConditions,\r\n    //         IWitPriceFeedsTypes.ID4 id4\r\n    //     )\r\n    //     internal\r\n    // {\r\n    //     PriceFeed storage __record = seekPriceFeed(id4);\r\n    //     PriceData memory _lastUpdate = __record.lastUpdate.data;\r\n    //     IWitPriceFeedsTypes.UpdateConditions memory _updateConditions = coalesce(\r\n    //         __record.updateConditions, \r\n    //         defaultUpdateConditions\r\n    //     );\r\n        \r\n    //     // consider updating price-feed's last update only if reported value is more recent:\r\n    //     if (\r\n    //         Witnet.Timestamp.unwrap(_lastUpdate.timestamp) + _updateConditions.cooldownSecs\r\n    //             < Witnet.Timestamp.unwrap(result.timestamp)\r\n    //     ) {\r\n    //         // revert if any of the allegedly fresh updates actually contains \r\n    //         // no integer value:\r\n    //         require(\r\n    //             result.dataType == Witnet.RadonDataTypes.Integer\r\n    //                 && result.status == Witnet.ResultStatus.NoErrors,\r\n    //             IWitPythErrors.InvalidUpdateData()\r\n    //         );\r\n\r\n    //         // compute next data point based on `_result` and `_lastUpdate`\r\n    //         __record.lastUpdate = _computeNextPrice(\r\n    //             result, \r\n    //             _lastUpdate, \r\n    //             _updateConditions\r\n    //         );\r\n    //     }\r\n    // }\r\n\r\n    function seekPriceFeed(IWitPriceFeedsTypes.ID4 id4) internal view returns (PriceFeed storage) {\r\n        return data().records[id4];\r\n    }\r\n\r\n    function settled(PriceFeed storage self) internal view returns (bool) {\r\n        return(\r\n            self.oracleSources != bytes32(0)\r\n                || uint8(self.mapper) != 0\r\n                || self.oracleAddress != address(0)\r\n        );\r\n    }\r\n\r\n    function settleMapper(\r\n            PriceFeed storage self, \r\n            int8 exponent,\r\n            IWitPriceFeedsTypes.Mappers mapper, \r\n            bytes32 mapperDeps\r\n        )\r\n        internal\r\n    {\r\n        require(!self.settled(), \"already settled\");\r\n        self.exponent = exponent;\r\n        self.mapper = mapper;\r\n        self.mapperDeps = mapperDeps;\r\n    }\r\n\r\n    function settleOracle(\r\n            PriceFeed storage self,\r\n            int8 exponent,\r\n            IWitPriceFeedsTypes.Oracles oracle,\r\n            address oracleAddress,\r\n            bytes32 oracleSources\r\n        )\r\n        internal\r\n    {\r\n        require(!self.settled(), \"already settled\");\r\n        self.exponent = exponent;\r\n        self.oracle = oracle;\r\n        self.oracleAddress = oracleAddress;\r\n        self.oracleSources = oracleSources;\r\n    }\r\n\r\n    // function settleWitOracle(\r\n    //         PriceFeed storage self, \r\n    //         int8 exponent,\r\n    //         Witnet.RadonHash radonHash\r\n    //     )\r\n    //     internal\r\n    // {\r\n    //     require(!self.settled(), \"already settled\");\r\n    //     self.exponent = exponent;\r\n    //     self.oracle = IWitPriceFeedsTypes.Oracles.Witnet;\r\n    //     self.oracleAddress = address(this);\r\n    //     self.oracleSources = Witnet.RadonHash.unwrap(radonHash);\r\n    //     self.lastUpdate.data.exponent = exponent;\r\n    // }\r\n\r\n    function toERC165Id(IWitPriceFeedsTypes.Oracles oracle) public pure returns (bytes4) {\r\n        if (oracle == IWitPriceFeedsTypes.Oracles.Witnet) {\r\n            return type(IWitOracle).interfaceId;\r\n        \r\n        } else if (oracle == IWitPriceFeedsTypes.Oracles.ERC2362) {\r\n            return type(IERC2362).interfaceId;\r\n        \r\n        } else if (oracle == IWitPriceFeedsTypes.Oracles.Chainlink) {\r\n            return type(IChainlinkAggregatorV3).interfaceId;\r\n        \r\n        } else if (oracle == IWitPriceFeedsTypes.Oracles.Pyth) {\r\n            return type(IWitPyth).interfaceId;\r\n        \r\n        } else {\r\n            return 0x0;\r\n        }\r\n    }\r\n\r\n\r\n    // ================================================================================================================\r\n    // --- Private methods --------------------------------------------------------------------------------------------\r\n\r\n    function _computePriceFeedsFootprint() private view returns (bytes4 _footprint) {\r\n        uint _totalIds = data().ids.length;\r\n        if (_totalIds > 0) {\r\n            _footprint = _footprintOf(_intoID4(data().ids[0]));\r\n            for (uint _ix = 1; _ix < _totalIds; ++ _ix) {\r\n                _footprint ^= _footprintOf(_intoID4(data().ids[_ix]));\r\n            }\r\n        }\r\n    }\r\n\r\n    function _footprintOf(IWitPriceFeedsTypes.ID4 id4) private view returns (bytes4) {\r\n        WitPriceFeedsDataLib.PriceFeed storage self = seekPriceFeed(id4);\r\n        if (self.oracleSources == bytes32(0)) {\r\n            return self.mapper != IWitPriceFeedsTypes.Mappers.None ? (\r\n                bytes4(keccak256(abi.encodePacked(\r\n                    IWitPriceFeedsTypes.ID4.unwrap(id4), \r\n                    self.mapperDeps\r\n                )))\r\n            ) : (\r\n                bytes4(keccak256(abi.encodePacked(\r\n                    IWitPriceFeedsTypes.ID4.unwrap(id4), \r\n                    self.oracleAddress\r\n                )))\r\n            );\r\n\r\n        } else {\r\n            return bytes4(keccak256(abi.encodePacked(\r\n                IWitPriceFeedsTypes.ID4.unwrap(id4), \r\n                self.oracleSources\r\n            )));\r\n        }\r\n    }\r\n\r\n    function _intoID4(IWitPyth.ID id) private pure returns (IWitPriceFeedsTypes.ID4) {\r\n        return IWitPriceFeedsTypes.ID4.wrap(bytes4(IWitPyth.ID.unwrap(id)));\r\n    }\r\n\r\n    function _intoWitPythID(IWitPriceFeedsTypes.ID4 id4) private view returns (IWitPyth.ID) {\r\n        return data().ids[data().records[id4].index];\r\n    }\r\n\r\n        function _intoPriceData(IWitPriceFeedsTypes.Price memory _price) internal pure returns (PriceData memory) {\r\n        return PriceData({\r\n            emaPrice: 0,\r\n            price: _price.price,\r\n            deltaPrice: _price.deltaPrice,\r\n            timestamp: _price.timestamp,\r\n            trail: _price.trail,\r\n            exponent: _price.exponent\r\n        });\r\n    }\r\n\r\n    function _intoEmaPriceData(IWitPriceFeedsTypes.Price memory _price) internal pure returns (PriceData memory) {\r\n        return PriceData({\r\n            emaPrice: _price.price,\r\n            price: 0,\r\n            deltaPrice: _price.deltaPrice,\r\n            timestamp: _price.timestamp,\r\n            trail: _price.trail,\r\n            exponent: _price.exponent\r\n        });\r\n    }\r\n\r\n    // function _intoWitPythPriceFeed(\r\n    //         IWitPriceFeeds.ID priceId,\r\n    //         Witnet.DataResult memory result,\r\n    //         PriceData memory prevData,\r\n    //         IWitPriceFeedsTypes.UpdateConditions memory updateConditions\r\n    //     )\r\n    //     private pure\r\n    //     returns (IWitPyth.PriceFeed memory)\r\n    // {\r\n    //     Price memory _next = _computeNextPrice(result, prevData, updateConditions);\r\n    //     uint64 _nextDeviation1000 = uint64(\r\n    //         _next.data.deltaPrice >= 0 \r\n    //             ? int64(_next.data.deltaPrice) \r\n    //             : int64(-_next.data.deltaPrice)\r\n    //     );\r\n    //     return IWitPyth.PriceFeed({\r\n    //         id: priceId,\r\n    //         price: IWitPyth.Price({\r\n    //             price: _next.data.price,\r\n    //             conf: _nextDeviation1000,\r\n    //             expo: _next.data.exponent,\r\n    //             publishTime: _next.data.timestamp,\r\n    //             track: _next.trail\r\n    //         }),\r\n    //         emaPrice: IWitPyth.Price({\r\n    //             price: _next.data.emaPrice,\r\n    //             conf: _nextDeviation1000,\r\n    //             expo: _next.data.exponent,\r\n    //             publishTime: _next.data.timestamp,\r\n    //             track: _next.trail\r\n    //         })\r\n    //     });\r\n    // }\r\n\r\n    function _settlePriceFeedSymbol(string calldata symbol) private returns (IWitPriceFeedsTypes.ID4 id4) {\r\n        bytes32 _id = hash(symbol);\r\n        id4 = IWitPriceFeedsTypes.ID4.wrap(bytes4(_id));\r\n        PriceFeed storage __record = seekPriceFeed(id4);\r\n        if (\r\n            keccak256(abi.encode(symbol))\r\n                != keccak256(abi.encode(__record.symbol))\r\n        ) {\r\n            require(\r\n                data().reverseDeps[id4].length == 0,\r\n                \"cannot refactor exisitng symbol if mapped by others\"\r\n            );\r\n            __record.symbol = symbol;\r\n            __record.index = uint32(data().ids.length);\r\n            delete __record.lastUpdate;\r\n        }\r\n        if (!__record.settled()) {\r\n            // add id to the list of supported price feeds, if not currently settled\r\n            data().ids.push(IWitPyth.ID.wrap(_id));\r\n        }\r\n    }\r\n}\r\n",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\data\\WitPriceFeedsDataLib.sol",
  "ast": {
    "absolutePath": "project:/contracts/data/WitPriceFeedsDataLib.sol",
    "exportedSymbols": {
      "IChainlinkAggregatorV3": [
        28507
      ],
      "IERC2362": [
        644
      ],
      "IWitOracle": [
        26581
      ],
      "IWitOracleRadonRegistry": [
        27394
      ],
      "IWitPriceFeeds": [
        27848
      ],
      "IWitPriceFeedsTypes": [
        28156
      ],
      "IWitPyth": [
        29643
      ],
      "IWitPythErrors": [
        29697
      ],
      "Slices": [
        34366
      ],
      "WitPriceFeedsDataLib": [
        25111
      ],
      "Witnet": [
        40741
      ]
    },
    "id": 25112,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 22251,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:61"
      },
      {
        "absolutePath": "project:/contracts/interfaces/legacy/IChainlinkAggregatorV3.sol",
        "file": "../interfaces/legacy/IChainlinkAggregatorV3.sol",
        "id": 22253,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 25112,
        "sourceUnit": 28508,
        "src": "70:87:61",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22252,
              "name": "IChainlinkAggregatorV3",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28507,
              "src": "78:22:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "ado-contracts/contracts/interfaces/IERC2362.sol",
        "file": "ado-contracts/contracts/interfaces/IERC2362.sol",
        "id": 22255,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 25112,
        "sourceUnit": 645,
        "src": "159:73:61",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22254,
              "name": "IERC2362",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 644,
              "src": "167:8:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitPriceFeeds.sol",
        "file": "../interfaces/IWitPriceFeeds.sol",
        "id": 22259,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 25112,
        "sourceUnit": 27849,
        "src": "234:95:61",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22256,
              "name": "IWitPriceFeeds",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27848,
              "src": "242:14:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 22257,
              "name": "IWitPriceFeedsTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28156,
              "src": "258:19:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 22258,
              "name": "IWitPyth",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 29643,
              "src": "279:8:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/legacy/IWitPythErrors.sol",
        "file": "../interfaces/legacy/IWitPythErrors.sol",
        "id": 22261,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 25112,
        "sourceUnit": 29698,
        "src": "331:71:61",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22260,
              "name": "IWitPythErrors",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 29697,
              "src": "339:14:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/WitOracle.sol",
        "file": "../WitOracle.sol",
        "id": 22265,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 25112,
        "sourceUnit": 679,
        "src": "406:95:61",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22262,
              "name": "IWitOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26581,
              "src": "420:10:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 22263,
              "name": "IWitOracleRadonRegistry",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27394,
              "src": "437:23:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 22264,
              "name": "Witnet",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 40741,
              "src": "467:6:61",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/libs/Slices.sol",
        "file": "../libs/Slices.sol",
        "id": 22266,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 25112,
        "sourceUnit": 34367,
        "src": "505:28:61",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WitPriceFeedsDataLib",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 22267,
          "nodeType": "StructuredDocumentation",
          "src": "537:74:61",
          "text": "@title WitPriceFeeds data model.\n @author The Witnet Foundation."
        },
        "fullyImplemented": true,
        "id": 25111,
        "linearizedBaseContracts": [
          25111
        ],
        "name": "WitPriceFeedsDataLib",
        "nameLocation": "619:20:61",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 22270,
            "libraryName": {
              "id": 22268,
              "name": "Slices",
              "nameLocations": [
                "655:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 34366,
              "src": "655:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "649:24:61",
            "typeName": {
              "id": 22269,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "666:6:61",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            }
          },
          {
            "global": false,
            "id": 22274,
            "libraryName": {
              "id": 22271,
              "name": "Slices",
              "nameLocations": [
                "685:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 34366,
              "src": "685:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "679:30:61",
            "typeName": {
              "id": 22273,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22272,
                "name": "Slices.Slice",
                "nameLocations": [
                  "696:6:61",
                  "703:5:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 32542,
                "src": "696:12:61"
              },
              "referencedDeclaration": 32542,
              "src": "696:12:61",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                "typeString": "struct Slices.Slice"
              }
            }
          },
          {
            "global": false,
            "id": 22278,
            "libraryName": {
              "id": 22275,
              "name": "Witnet",
              "nameLocations": [
                "723:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40741,
              "src": "723:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "717:35:61",
            "typeName": {
              "id": 22277,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22276,
                "name": "Witnet.DataResult",
                "nameLocations": [
                  "734:6:61",
                  "741:10:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 37293,
                "src": "734:17:61"
              },
              "referencedDeclaration": 37293,
              "src": "734:17:61",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_DataResult_$37293_storage_ptr",
                "typeString": "struct Witnet.DataResult"
              }
            }
          },
          {
            "global": false,
            "id": 22282,
            "libraryName": {
              "id": 22279,
              "name": "Witnet",
              "nameLocations": [
                "764:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40741,
              "src": "764:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "758:32:61",
            "typeName": {
              "id": 22281,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22280,
                "name": "Witnet.QueryId",
                "nameLocations": [
                  "775:6:61",
                  "782:7:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 37151,
                "src": "775:14:61"
              },
              "referencedDeclaration": 37151,
              "src": "775:14:61",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_QueryId_$37151",
                "typeString": "Witnet.QueryId"
              }
            }
          },
          {
            "global": false,
            "id": 22286,
            "libraryName": {
              "id": 22283,
              "name": "Witnet",
              "nameLocations": [
                "802:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40741,
              "src": "802:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "796:34:61",
            "typeName": {
              "id": 22285,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22284,
                "name": "Witnet.RadonHash",
                "nameLocations": [
                  "813:6:61",
                  "820:9:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 37153,
                "src": "813:16:61"
              },
              "referencedDeclaration": 37153,
              "src": "813:16:61",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                "typeString": "Witnet.RadonHash"
              }
            }
          },
          {
            "global": false,
            "id": 22290,
            "libraryName": {
              "id": 22287,
              "name": "Witnet",
              "nameLocations": [
                "842:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40741,
              "src": "842:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "836:37:61",
            "typeName": {
              "id": 22289,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22288,
                "name": "Witnet.ResultStatus",
                "nameLocations": [
                  "853:6:61",
                  "860:12:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 37698,
                "src": "853:19:61"
              },
              "referencedDeclaration": 37698,
              "src": "853:19:61",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_ResultStatus_$37698",
                "typeString": "enum Witnet.ResultStatus"
              }
            }
          },
          {
            "global": false,
            "id": 22294,
            "libraryName": {
              "id": 22291,
              "name": "Witnet",
              "nameLocations": [
                "885:6:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40741,
              "src": "885:6:61"
            },
            "nodeType": "UsingForDirective",
            "src": "879:34:61",
            "typeName": {
              "id": 22293,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22292,
                "name": "Witnet.Timestamp",
                "nameLocations": [
                  "896:6:61",
                  "903:9:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 37157,
                "src": "896:16:61"
              },
              "referencedDeclaration": 37157,
              "src": "896:16:61",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                "typeString": "Witnet.Timestamp"
              }
            }
          },
          {
            "global": false,
            "id": 22298,
            "libraryName": {
              "id": 22295,
              "name": "WitPriceFeedsDataLib",
              "nameLocations": [
                "927:20:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 25111,
              "src": "927:20:61"
            },
            "nodeType": "UsingForDirective",
            "src": "921:55:61",
            "typeName": {
              "id": 22297,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22296,
                "name": "IWitPriceFeedsTypes.ID4",
                "nameLocations": [
                  "952:19:61",
                  "972:3:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 28155,
                "src": "952:23:61"
              },
              "referencedDeclaration": 28155,
              "src": "952:23:61",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                "typeString": "IWitPriceFeedsTypes.ID4"
              }
            }
          },
          {
            "global": false,
            "id": 22302,
            "libraryName": {
              "id": 22299,
              "name": "WitPriceFeedsDataLib",
              "nameLocations": [
                "988:20:61"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 25111,
              "src": "988:20:61"
            },
            "nodeType": "UsingForDirective",
            "src": "982:41:61",
            "typeName": {
              "id": 22301,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 22300,
                "name": "PriceFeed",
                "nameLocations": [
                  "1013:9:61"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 22395,
                "src": "1013:9:61"
              },
              "referencedDeclaration": 22395,
              "src": "1013:9:61",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
              }
            }
          },
          {
            "constant": true,
            "id": 22305,
            "mutability": "constant",
            "name": "_WIT_FEEDS_DATA_SLOTHASH",
            "nameLocation": "1060:24:61",
            "nodeType": "VariableDeclaration",
            "scope": 25111,
            "src": "1035:204:61",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 22303,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1035:7:61",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "307863353335343436396135643332313839613138663565373966393530386438323866613038393038376333313762633839373932623163386462613533393030",
              "id": 22304,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1173:66:61",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89199746232346097071757966586983419486280943894818777552189876915781207668992_by_1",
                "typeString": "int_const 8919...(69 digits omitted)...8992"
              },
              "value": "0xc5354469a5d32189a18f5e79f9508d828fa089087c317bc89792b1c8dba53900"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "WitPriceFeedsDataLib.Storage",
            "id": 22336,
            "members": [
              {
                "constant": false,
                "id": 22309,
                "mutability": "mutable",
                "name": "ids",
                "nameLocation": "1288:3:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1274:17:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage_ptr",
                  "typeString": "IWitPyth.ID[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 22307,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22306,
                      "name": "IWitPyth.ID",
                      "nameLocations": [
                        "1274:8:61",
                        "1283:2:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 29561,
                      "src": "1274:11:61"
                    },
                    "referencedDeclaration": 29561,
                    "src": "1274:11:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                      "typeString": "IWitPyth.ID"
                    }
                  },
                  "id": 22308,
                  "nodeType": "ArrayTypeName",
                  "src": "1274:13:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage_ptr",
                    "typeString": "IWitPyth.ID[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22315,
                "mutability": "mutable",
                "name": "records",
                "nameLocation": "1349:7:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1302:54:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                  "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed)"
                },
                "typeName": {
                  "id": 22314,
                  "keyName": "",
                  "keyNameLocation": "-1:-1:-1",
                  "keyType": {
                    "id": 22311,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22310,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "1311:19:61",
                        "1331:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "1311:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "1311:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1302:46:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                    "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed)"
                  },
                  "valueName": "",
                  "valueNameLocation": "-1:-1:-1",
                  "valueType": {
                    "id": 22313,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22312,
                      "name": "PriceFeed",
                      "nameLocations": [
                        "1338:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22395,
                      "src": "1338:9:61"
                    },
                    "referencedDeclaration": 22395,
                    "src": "1338:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22322,
                "mutability": "mutable",
                "name": "reverseDeps",
                "nameLocation": "1430:11:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1367:74:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_$",
                  "typeString": "mapping(IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[])"
                },
                "typeName": {
                  "id": 22321,
                  "keyName": "",
                  "keyNameLocation": "-1:-1:-1",
                  "keyType": {
                    "id": 22317,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22316,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "1376:19:61",
                        "1396:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "1376:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "1376:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1367:62:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_$",
                    "typeString": "mapping(IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[])"
                  },
                  "valueName": "",
                  "valueNameLocation": "-1:-1:-1",
                  "valueType": {
                    "baseType": {
                      "id": 22319,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 22318,
                        "name": "IWitPriceFeedsTypes.ID4",
                        "nameLocations": [
                          "1403:19:61",
                          "1423:3:61"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 28155,
                        "src": "1403:23:61"
                      },
                      "referencedDeclaration": 28155,
                      "src": "1403:23:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      }
                    },
                    "id": 22320,
                    "nodeType": "ArrayTypeName",
                    "src": "1403:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                      "typeString": "IWitPriceFeedsTypes.ID4[]"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22328,
                "mutability": "mutable",
                "name": "reverseIds",
                "nameLocation": "1506:10:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1452:64:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_userDefinedValueType$_RadonHash_$37153_$_t_userDefinedValueType$_ID4_$28155_$",
                  "typeString": "mapping(Witnet.RadonHash => IWitPriceFeedsTypes.ID4)"
                },
                "typeName": {
                  "id": 22327,
                  "keyName": "",
                  "keyNameLocation": "-1:-1:-1",
                  "keyType": {
                    "id": 22324,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22323,
                      "name": "Witnet.RadonHash",
                      "nameLocations": [
                        "1461:6:61",
                        "1468:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37153,
                      "src": "1461:16:61"
                    },
                    "referencedDeclaration": 37153,
                    "src": "1461:16:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                      "typeString": "Witnet.RadonHash"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1452:53:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_userDefinedValueType$_RadonHash_$37153_$_t_userDefinedValueType$_ID4_$28155_$",
                    "typeString": "mapping(Witnet.RadonHash => IWitPriceFeedsTypes.ID4)"
                  },
                  "valueName": "",
                  "valueNameLocation": "-1:-1:-1",
                  "valueType": {
                    "id": 22326,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22325,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "1481:19:61",
                        "1501:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "1481:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "1481:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22331,
                "mutability": "mutable",
                "name": "defaultUpdateConditions",
                "nameLocation": "1564:23:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1527:60:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                  "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                },
                "typeName": {
                  "id": 22330,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22329,
                    "name": "IWitPriceFeedsTypes.UpdateConditions",
                    "nameLocations": [
                      "1527:19:61",
                      "1547:16:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 28153,
                    "src": "1527:36:61"
                  },
                  "referencedDeclaration": 28153,
                  "src": "1527:36:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22333,
                "mutability": "mutable",
                "name": "consumer",
                "nameLocation": "1606:8:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1598:16:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 22332,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1598:7:61",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22335,
                "mutability": "mutable",
                "name": "footprint",
                "nameLocation": "1633:9:61",
                "nodeType": "VariableDeclaration",
                "scope": 22336,
                "src": "1625:17:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                },
                "typeName": {
                  "id": 22334,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "1625:6:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Storage",
            "nameLocation": "1255:7:61",
            "nodeType": "StructDefinition",
            "scope": 25111,
            "src": "1248:402:61",
            "visibility": "public"
          },
          {
            "canonicalName": "WitPriceFeedsDataLib.PriceData",
            "id": 22357,
            "members": [
              {
                "constant": false,
                "id": 22339,
                "mutability": "mutable",
                "name": "emaPrice",
                "nameLocation": "1791:8:61",
                "nodeType": "VariableDeclaration",
                "scope": 22357,
                "src": "1784:15:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 22338,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1784:6:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22342,
                "mutability": "mutable",
                "name": "price",
                "nameLocation": "1886:5:61",
                "nodeType": "VariableDeclaration",
                "scope": 22357,
                "src": "1879:12:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 22341,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1879:6:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22345,
                "mutability": "mutable",
                "name": "deltaPrice",
                "nameLocation": "1985:10:61",
                "nodeType": "VariableDeclaration",
                "scope": 22357,
                "src": "1979:16:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int56",
                  "typeString": "int56"
                },
                "typeName": {
                  "id": 22344,
                  "name": "int56",
                  "nodeType": "ElementaryTypeName",
                  "src": "1979:5:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int56",
                    "typeString": "int56"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22348,
                "mutability": "mutable",
                "name": "exponent",
                "nameLocation": "2081:8:61",
                "nodeType": "VariableDeclaration",
                "scope": 22357,
                "src": "2076:13:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int8",
                  "typeString": "int8"
                },
                "typeName": {
                  "id": 22347,
                  "name": "int8",
                  "nodeType": "ElementaryTypeName",
                  "src": "2076:4:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22352,
                "mutability": "mutable",
                "name": "timestamp",
                "nameLocation": "2205:9:61",
                "nodeType": "VariableDeclaration",
                "scope": 22357,
                "src": "2188:26:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                  "typeString": "Witnet.Timestamp"
                },
                "typeName": {
                  "id": 22351,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22350,
                    "name": "Witnet.Timestamp",
                    "nameLocations": [
                      "2188:6:61",
                      "2195:9:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 37157,
                    "src": "2188:16:61"
                  },
                  "referencedDeclaration": 37157,
                  "src": "2188:16:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                    "typeString": "Witnet.Timestamp"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22356,
                "mutability": "mutable",
                "name": "trail",
                "nameLocation": "2331:5:61",
                "nodeType": "VariableDeclaration",
                "scope": 22357,
                "src": "2308:28:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                  "typeString": "Witnet.TransactionHash"
                },
                "typeName": {
                  "id": 22355,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22354,
                    "name": "Witnet.TransactionHash",
                    "nameLocations": [
                      "2308:6:61",
                      "2315:15:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 37159,
                    "src": "2308:22:61"
                  },
                  "referencedDeclaration": 37159,
                  "src": "2308:22:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                    "typeString": "Witnet.TransactionHash"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "PriceData",
            "nameLocation": "1665:9:61",
            "nodeType": "StructDefinition",
            "scope": 25111,
            "src": "1658:686:61",
            "visibility": "public"
          },
          {
            "canonicalName": "WitPriceFeedsDataLib.PriceFeed",
            "id": 22395,
            "members": [
              {
                "constant": false,
                "id": 22360,
                "mutability": "mutable",
                "name": "symbol",
                "nameLocation": "2722:6:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "2715:13:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 22359,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "2715:6:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22363,
                "mutability": "mutable",
                "name": "index",
                "nameLocation": "2834:5:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "2827:12:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 22362,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2827:6:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22366,
                "mutability": "mutable",
                "name": "exponent",
                "nameLocation": "2917:8:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "2912:13:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int8",
                  "typeString": "int8"
                },
                "typeName": {
                  "id": 22365,
                  "name": "int8",
                  "nodeType": "ElementaryTypeName",
                  "src": "2912:4:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22369,
                "mutability": "mutable",
                "name": "_reserved",
                "nameLocation": "2979:9:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "2973:15:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int40",
                  "typeString": "int40"
                },
                "typeName": {
                  "id": 22368,
                  "name": "int40",
                  "nodeType": "ElementaryTypeName",
                  "src": "2973:5:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int40",
                    "typeString": "int40"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22373,
                "mutability": "mutable",
                "name": "mapper",
                "nameLocation": "3103:6:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "3075:34:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_Mappers_$28087",
                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                },
                "typeName": {
                  "id": 22372,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22371,
                    "name": "IWitPriceFeedsTypes.Mappers",
                    "nameLocations": [
                      "3075:19:61",
                      "3095:7:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 28087,
                    "src": "3075:27:61"
                  },
                  "referencedDeclaration": 28087,
                  "src": "3075:27:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Mappers_$28087",
                    "typeString": "enum IWitPriceFeedsTypes.Mappers"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22377,
                "mutability": "mutable",
                "name": "oracle",
                "nameLocation": "3235:6:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "3207:34:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_Oracles_$28092",
                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                },
                "typeName": {
                  "id": 22376,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22375,
                    "name": "IWitPriceFeedsTypes.Oracles",
                    "nameLocations": [
                      "3207:19:61",
                      "3227:7:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 28092,
                    "src": "3207:27:61"
                  },
                  "referencedDeclaration": 28092,
                  "src": "3207:27:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Oracles_$28092",
                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22380,
                "mutability": "mutable",
                "name": "oracleAddress",
                "nameLocation": "3350:13:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "3342:21:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 22379,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3342:7:61",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22383,
                "mutability": "mutable",
                "name": "oracleSources",
                "nameLocation": "3638:13:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "3630:21:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 22382,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3630:7:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22386,
                "mutability": "mutable",
                "name": "mapperDeps",
                "nameLocation": "3756:10:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "3748:18:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 22385,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3748:7:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22390,
                "mutability": "mutable",
                "name": "updateConditions",
                "nameLocation": "3897:16:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "3860:53:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                  "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                },
                "typeName": {
                  "id": 22389,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22388,
                    "name": "IWitPriceFeedsTypes.UpdateConditions",
                    "nameLocations": [
                      "3860:19:61",
                      "3880:16:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 28153,
                    "src": "3860:36:61"
                  },
                  "referencedDeclaration": 28153,
                  "src": "3860:36:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22394,
                "mutability": "mutable",
                "name": "lastUpdate",
                "nameLocation": "4016:10:61",
                "nodeType": "VariableDeclaration",
                "scope": 22395,
                "src": "4006:20:61",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                  "typeString": "struct WitPriceFeedsDataLib.PriceData"
                },
                "typeName": {
                  "id": 22393,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22392,
                    "name": "PriceData",
                    "nameLocations": [
                      "4006:9:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 22357,
                    "src": "4006:9:61"
                  },
                  "referencedDeclaration": 22357,
                  "src": "4006:9:61",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "PriceFeed",
            "nameLocation": "2633:9:61",
            "nodeType": "StructDefinition",
            "scope": 25111,
            "src": "2626:1408:61",
            "visibility": "public"
          },
          {
            "body": {
              "id": 22761,
              "nodeType": "Block",
              "src": "4459:3775:61",
              "statements": [
                {
                  "assignments": [
                    22413
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22413,
                      "mutability": "mutable",
                      "name": "_mapper",
                      "nameLocation": "4498:7:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22761,
                      "src": "4470:35:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      },
                      "typeName": {
                        "id": 22412,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22411,
                          "name": "IWitPriceFeedsTypes.Mappers",
                          "nameLocations": [
                            "4470:19:61",
                            "4490:7:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28087,
                          "src": "4470:27:61"
                        },
                        "referencedDeclaration": 28087,
                        "src": "4470:27:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Mappers_$28087",
                          "typeString": "enum IWitPriceFeedsTypes.Mappers"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22416,
                  "initialValue": {
                    "expression": {
                      "id": 22414,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22398,
                      "src": "4508:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                      }
                    },
                    "id": 22415,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "4513:6:61",
                    "memberName": "mapper",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 22373,
                    "src": "4508:11:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4470:49:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    },
                    "id": 22421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 22417,
                      "name": "_mapper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22413,
                      "src": "4534:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 22418,
                          "name": "IWitPriceFeedsTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28156,
                          "src": "4545:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                            "typeString": "type(contract IWitPriceFeedsTypes)"
                          }
                        },
                        "id": 22419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4565:7:61",
                        "memberName": "Mappers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28087,
                        "src": "4545:27:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                          "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                        }
                      },
                      "id": 22420,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "4573:4:61",
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28082,
                      "src": "4545:32:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      }
                    },
                    "src": "4534:43:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 22759,
                    "nodeType": "Block",
                    "src": "7219:1008:61",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 22711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Mappers_$28087",
                              "typeString": "enum IWitPriceFeedsTypes.Mappers"
                            },
                            "id": 22705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22701,
                              "name": "_mapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22413,
                              "src": "7260:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "expression": {
                                  "id": 22702,
                                  "name": "IWitPriceFeedsTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28156,
                                  "src": "7271:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                  }
                                },
                                "id": 22703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7291:7:61",
                                "memberName": "Mappers",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28087,
                                "src": "7271:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                  "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                }
                              },
                              "id": 22704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7299:7:61",
                              "memberName": "Product",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28085,
                              "src": "7271:35:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "src": "7260:46:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Mappers_$28087",
                              "typeString": "enum IWitPriceFeedsTypes.Mappers"
                            },
                            "id": 22710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22706,
                              "name": "_mapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22413,
                              "src": "7332:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "expression": {
                                  "id": 22707,
                                  "name": "IWitPriceFeedsTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28156,
                                  "src": "7343:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                  }
                                },
                                "id": 22708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7363:7:61",
                                "memberName": "Mappers",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28087,
                                "src": "7343:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                  "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                }
                              },
                              "id": 22709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7371:7:61",
                              "memberName": "Inverse",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28086,
                              "src": "7343:35:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "src": "7332:46:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7260:118:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Mappers_$28087",
                              "typeString": "enum IWitPriceFeedsTypes.Mappers"
                            },
                            "id": 22729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22725,
                              "name": "_mapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22413,
                              "src": "7659:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "expression": {
                                  "id": 22726,
                                  "name": "IWitPriceFeedsTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28156,
                                  "src": "7670:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                  }
                                },
                                "id": 22727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7690:7:61",
                                "memberName": "Mappers",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28087,
                                "src": "7670:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                  "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                }
                              },
                              "id": 22728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7698:7:61",
                              "memberName": "Hottest",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28084,
                              "src": "7670:35:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "src": "7659:46:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              },
                              "id": 22742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22738,
                                "name": "_mapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22413,
                                "src": "7913:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 22739,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "7924:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 22740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7944:7:61",
                                  "memberName": "Mappers",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28087,
                                  "src": "7924:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                    "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                  }
                                },
                                "id": 22741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "7952:8:61",
                                "memberName": "Fallback",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28083,
                                "src": "7924:36:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              },
                              "src": "7913:47:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 22755,
                              "nodeType": "Block",
                              "src": "8153:63:61",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "756e737570706f72746564206d6170706572",
                                        "id": 22752,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8179:20:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_1caff6482b63152caefd54878b217104d88adfadcad6fcc48a323fbc0ee4e270",
                                          "typeString": "literal_string \"unsupported mapper\""
                                        },
                                        "value": "unsupported mapper"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_1caff6482b63152caefd54878b217104d88adfadcad6fcc48a323fbc0ee4e270",
                                          "typeString": "literal_string \"unsupported mapper\""
                                        }
                                      ],
                                      "id": 22751,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967277,
                                        4294967277
                                      ],
                                      "referencedDeclaration": 4294967277,
                                      "src": "8172:6:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 22753,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8172:28:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 22754,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8172:28:61"
                                }
                              ]
                            },
                            "id": 22756,
                            "nodeType": "IfStatement",
                            "src": "7909:307:61",
                            "trueBody": {
                              "id": 22750,
                              "nodeType": "Block",
                              "src": "7962:185:61",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 22744,
                                        "name": "id4",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22401,
                                        "src": "8038:3:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                          "typeString": "IWitPriceFeedsTypes.ID4"
                                        }
                                      },
                                      {
                                        "id": 22745,
                                        "name": "heartbeat",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22403,
                                        "src": "8065:9:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 22746,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22398,
                                          "src": "8097:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                          }
                                        },
                                        "id": 22747,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "8102:8:61",
                                        "memberName": "exponent",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22366,
                                        "src": "8097:13:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                          "typeString": "IWitPriceFeedsTypes.ID4"
                                        },
                                        {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        },
                                        {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      ],
                                      "id": 22743,
                                      "name": "fetchLastUpdateFromFallback",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24550,
                                      "src": "7988:27:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$_t_int8_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                                        "typeString": "function (IWitPriceFeedsTypes.ID4,uint24,int8) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                                      }
                                    },
                                    "id": 22748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7988:141:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                    }
                                  },
                                  "functionReturnParameters": 22408,
                                  "id": 22749,
                                  "nodeType": "Return",
                                  "src": "7981:148:61"
                                }
                              ]
                            }
                          },
                          "id": 22757,
                          "nodeType": "IfStatement",
                          "src": "7655:561:61",
                          "trueBody": {
                            "id": 22737,
                            "nodeType": "Block",
                            "src": "7707:196:61",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 22731,
                                      "name": "id4",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22401,
                                      "src": "7782:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      }
                                    },
                                    {
                                      "id": 22732,
                                      "name": "heartbeat",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22403,
                                      "src": "7809:9:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 22733,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22398,
                                        "src": "7841:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                        }
                                      },
                                      "id": 22734,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7846:8:61",
                                      "memberName": "exponent",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22366,
                                      "src": "7841:13:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      },
                                      {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      },
                                      {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    ],
                                    "id": 22730,
                                    "name": "fetchLastUpdateFromHottest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24419,
                                    "src": "7733:26:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$_t_int8_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                                      "typeString": "function (IWitPriceFeedsTypes.ID4,uint24,int8) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                                    }
                                  },
                                  "id": 22735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7733:140:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                  }
                                },
                                "functionReturnParameters": 22408,
                                "id": 22736,
                                "nodeType": "Return",
                                "src": "7726:147:61"
                              }
                            ]
                          }
                        },
                        "id": 22758,
                        "nodeType": "IfStatement",
                        "src": "7238:978:61",
                        "trueBody": {
                          "id": 22724,
                          "nodeType": "Block",
                          "src": "7394:255:61",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22713,
                                    "name": "id4",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22401,
                                    "src": "7469:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  },
                                  {
                                    "id": 22714,
                                    "name": "heartbeat",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22403,
                                    "src": "7496:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint24",
                                      "typeString": "uint24"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 22715,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22398,
                                      "src": "7529:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                      }
                                    },
                                    "id": 22716,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7534:8:61",
                                    "memberName": "exponent",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22366,
                                    "src": "7529:13:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int8",
                                      "typeString": "int8"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_Mappers_$28087",
                                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                    },
                                    "id": 22721,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22717,
                                      "name": "_mapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22413,
                                      "src": "7566:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Mappers_$28087",
                                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 22718,
                                          "name": "IWitPriceFeedsTypes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28156,
                                          "src": "7577:19:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                            "typeString": "type(contract IWitPriceFeedsTypes)"
                                          }
                                        },
                                        "id": 22719,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7597:7:61",
                                        "memberName": "Mappers",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 28087,
                                        "src": "7577:27:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                          "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                        }
                                      },
                                      "id": 22720,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "7605:7:61",
                                      "memberName": "Inverse",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 28086,
                                      "src": "7577:35:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Mappers_$28087",
                                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                      }
                                    },
                                    "src": "7566:46:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    },
                                    {
                                      "typeIdentifier": "t_uint24",
                                      "typeString": "uint24"
                                    },
                                    {
                                      "typeIdentifier": "t_int8",
                                      "typeString": "int8"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 22712,
                                  "name": "fetchLastUpdateFromProduct",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24294,
                                  "src": "7420:26:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$_t_int8_$_t_bool_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                                    "typeString": "function (IWitPriceFeedsTypes.ID4,uint24,int8,bool) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                                  }
                                },
                                "id": 22722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7420:211:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "functionReturnParameters": 22408,
                              "id": 22723,
                              "nodeType": "Return",
                              "src": "7413:218:61"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 22760,
                  "nodeType": "IfStatement",
                  "src": "4530:3697:61",
                  "trueBody": {
                    "id": 22700,
                    "nodeType": "Block",
                    "src": "4579:2634:61",
                    "statements": [
                      {
                        "assignments": [
                          22426
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22426,
                            "mutability": "mutable",
                            "name": "_oracle",
                            "nameLocation": "4636:7:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 22700,
                            "src": "4608:35:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            },
                            "typeName": {
                              "id": 22425,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22424,
                                "name": "IWitPriceFeedsTypes.Oracles",
                                "nameLocations": [
                                  "4608:19:61",
                                  "4628:7:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 28092,
                                "src": "4608:27:61"
                              },
                              "referencedDeclaration": 28092,
                              "src": "4608:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Oracles_$28092",
                                "typeString": "enum IWitPriceFeedsTypes.Oracles"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22429,
                        "initialValue": {
                          "expression": {
                            "id": 22427,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22398,
                            "src": "4646:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                            }
                          },
                          "id": 22428,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4651:6:61",
                          "memberName": "oracle",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22377,
                          "src": "4646:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4608:49:61"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          },
                          "id": 22434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22430,
                            "name": "_oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22426,
                            "src": "4676:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 22431,
                                "name": "IWitPriceFeedsTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28156,
                                "src": "4687:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                  "typeString": "type(contract IWitPriceFeedsTypes)"
                                }
                              },
                              "id": 22432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4707:7:61",
                              "memberName": "Oracles",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28092,
                              "src": "4687:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                              }
                            },
                            "id": 22433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4715:6:61",
                            "memberName": "Witnet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28088,
                            "src": "4687:34:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            }
                          },
                          "src": "4676:45:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            },
                            "id": 22503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22499,
                              "name": "_oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22426,
                              "src": "5610:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Oracles_$28092",
                                "typeString": "enum IWitPriceFeedsTypes.Oracles"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "expression": {
                                  "id": 22500,
                                  "name": "IWitPriceFeedsTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28156,
                                  "src": "5621:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                  }
                                },
                                "id": 22501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5641:7:61",
                                "memberName": "Oracles",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28092,
                                "src": "5621:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                  "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                                }
                              },
                              "id": 22502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5649:7:61",
                              "memberName": "ERC2362",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28089,
                              "src": "5621:35:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Oracles_$28092",
                                "typeString": "enum IWitPriceFeedsTypes.Oracles"
                              }
                            },
                            "src": "5610:46:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_Oracles_$28092",
                                "typeString": "enum IWitPriceFeedsTypes.Oracles"
                              },
                              "id": 22554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22550,
                                "name": "_oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22426,
                                "src": "5994:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 22551,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "6005:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 22552,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6025:7:61",
                                  "memberName": "Oracles",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28092,
                                  "src": "6005:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                    "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                                  }
                                },
                                "id": 22553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "6033:9:61",
                                "memberName": "Chainlink",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28090,
                                "src": "6005:37:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              },
                              "src": "5994:48:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                },
                                "id": 22603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22599,
                                  "name": "_oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22426,
                                  "src": "6398:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Oracles_$28092",
                                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 22600,
                                      "name": "IWitPriceFeedsTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28156,
                                      "src": "6409:19:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                        "typeString": "type(contract IWitPriceFeedsTypes)"
                                      }
                                    },
                                    "id": 22601,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6429:7:61",
                                    "memberName": "Oracles",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 28092,
                                    "src": "6409:27:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                      "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                                    }
                                  },
                                  "id": 22602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "6437:4:61",
                                  "memberName": "Pyth",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28091,
                                  "src": "6409:32:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Oracles_$28092",
                                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                  }
                                },
                                "src": "6398:43:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 22695,
                                "nodeType": "Block",
                                "src": "7129:63:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "756e737570706f72746564206f7261636c65",
                                          "id": 22692,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7155:20:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_f30ababf750e10f193dd18fcf701efc6a2350e853cd574d27cf4488fa0a72c5a",
                                            "typeString": "literal_string \"unsupported oracle\""
                                          },
                                          "value": "unsupported oracle"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_f30ababf750e10f193dd18fcf701efc6a2350e853cd574d27cf4488fa0a72c5a",
                                            "typeString": "literal_string \"unsupported oracle\""
                                          }
                                        ],
                                        "id": 22691,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          4294967277,
                                          4294967277
                                        ],
                                        "referencedDeclaration": 4294967277,
                                        "src": "7148:6:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 22693,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7148:28:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 22694,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7148:28:61"
                                  }
                                ]
                              },
                              "id": 22696,
                              "nodeType": "IfStatement",
                              "src": "6394:798:61",
                              "trueBody": {
                                "id": 22690,
                                "nodeType": "Block",
                                "src": "6443:680:61",
                                "statements": [
                                  {
                                    "assignments": [
                                      22608
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 22608,
                                        "mutability": "mutable",
                                        "name": "_price",
                                        "nameLocation": "6488:6:61",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 22690,
                                        "src": "6462:32:61",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                          "typeString": "struct IWitPyth.PythPrice"
                                        },
                                        "typeName": {
                                          "id": 22607,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 22606,
                                            "name": "IWitPyth.PythPrice",
                                            "nameLocations": [
                                              "6462:8:61",
                                              "6471:9:61"
                                            ],
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 29570,
                                            "src": "6462:18:61"
                                          },
                                          "referencedDeclaration": 29570,
                                          "src": "6462:18:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PythPrice_$29570_storage_ptr",
                                            "typeString": "struct IWitPyth.PythPrice"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 22609,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6462:32:61"
                                  },
                                  {
                                    "condition": {
                                      "expression": {
                                        "expression": {
                                          "id": 22610,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22398,
                                          "src": "6517:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                          }
                                        },
                                        "id": 22611,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "6522:16:61",
                                        "memberName": "updateConditions",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22390,
                                        "src": "6517:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage",
                                          "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage ref"
                                        }
                                      },
                                      "id": 22612,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "6539:10:61",
                                      "memberName": "computeEma",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 28144,
                                      "src": "6517:32:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 22664,
                                      "nodeType": "Block",
                                      "src": "6759:196:61",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 22652,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 22639,
                                              "name": "_price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22608,
                                              "src": "6782:6:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                "typeString": "struct IWitPyth.PythPrice memory"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 22648,
                                                        "name": "self",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 22398,
                                                        "src": "6852:4:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                        }
                                                      },
                                                      "id": 22649,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "6857:13:61",
                                                      "memberName": "oracleSources",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 22383,
                                                      "src": "6852:18:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "expression": {
                                                        "id": 22645,
                                                        "name": "IWitPyth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 29643,
                                                        "src": "6835:8:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                                          "typeString": "type(contract IWitPyth)"
                                                        }
                                                      },
                                                      "id": 22646,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "6844:2:61",
                                                      "memberName": "ID",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 29561,
                                                      "src": "6835:11:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ID_$29561_$",
                                                        "typeString": "type(IWitPyth.ID)"
                                                      }
                                                    },
                                                    "id": 22647,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "6847:4:61",
                                                    "memberName": "wrap",
                                                    "nodeType": "MemberAccess",
                                                    "src": "6835:16:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ID_$29561_$",
                                                      "typeString": "function (bytes32) pure returns (IWitPyth.ID)"
                                                    }
                                                  },
                                                  "id": 22650,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6835:36:61",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                                    "typeString": "IWitPyth.ID"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                                    "typeString": "IWitPyth.ID"
                                                  }
                                                ],
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 22641,
                                                        "name": "self",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 22398,
                                                        "src": "6800:4:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                        }
                                                      },
                                                      "id": 22642,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "6805:13:61",
                                                      "memberName": "oracleAddress",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 22380,
                                                      "src": "6800:18:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 22640,
                                                    "name": "IWitPyth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 29643,
                                                    "src": "6791:8:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                                      "typeString": "type(contract IWitPyth)"
                                                    }
                                                  },
                                                  "id": 22643,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6791:28:61",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IWitPyth_$29643",
                                                    "typeString": "contract IWitPyth"
                                                  }
                                                },
                                                "id": 22644,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "6820:14:61",
                                                "memberName": "getPriceUnsafe",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 29634,
                                                "src": "6791:43:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_userDefinedValueType$_ID_$29561_$returns$_t_struct$_PythPrice_$29570_memory_ptr_$",
                                                  "typeString": "function (IWitPyth.ID) view external returns (struct IWitPyth.PythPrice memory)"
                                                }
                                              },
                                              "id": 22651,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6791:81:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                "typeString": "struct IWitPyth.PythPrice memory"
                                              }
                                            },
                                            "src": "6782:90:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                              "typeString": "struct IWitPyth.PythPrice memory"
                                            }
                                          },
                                          "id": 22653,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6782:90:61"
                                        },
                                        {
                                          "expression": {
                                            "id": 22662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 22654,
                                                "name": "_lastUpdate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 22407,
                                                "src": "6895:11:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                                }
                                              },
                                              "id": 22656,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberLocation": "6907:5:61",
                                              "memberName": "price",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22342,
                                              "src": "6895:17:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 22659,
                                                    "name": "_price",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 22608,
                                                    "src": "6922:6:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                      "typeString": "struct IWitPyth.PythPrice memory"
                                                    }
                                                  },
                                                  "id": 22660,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "6929:5:61",
                                                  "memberName": "price",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 29563,
                                                  "src": "6922:12:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int64",
                                                    "typeString": "int64"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int64",
                                                    "typeString": "int64"
                                                  }
                                                ],
                                                "id": 22658,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "6915:6:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint64_$",
                                                  "typeString": "type(uint64)"
                                                },
                                                "typeName": {
                                                  "id": 22657,
                                                  "name": "uint64",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "6915:6:61",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 22661,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6915:20:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "src": "6895:40:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "id": 22663,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6895:40:61"
                                        }
                                      ]
                                    },
                                    "id": 22665,
                                    "nodeType": "IfStatement",
                                    "src": "6513:442:61",
                                    "trueBody": {
                                      "id": 22638,
                                      "nodeType": "Block",
                                      "src": "6551:202:61",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 22626,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 22613,
                                              "name": "_price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22608,
                                              "src": "6574:6:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                "typeString": "struct IWitPyth.PythPrice memory"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 22622,
                                                        "name": "self",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 22398,
                                                        "src": "6647:4:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                        }
                                                      },
                                                      "id": 22623,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "6652:13:61",
                                                      "memberName": "oracleSources",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 22383,
                                                      "src": "6647:18:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "expression": {
                                                        "id": 22619,
                                                        "name": "IWitPyth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 29643,
                                                        "src": "6630:8:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                                          "typeString": "type(contract IWitPyth)"
                                                        }
                                                      },
                                                      "id": 22620,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "6639:2:61",
                                                      "memberName": "ID",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 29561,
                                                      "src": "6630:11:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ID_$29561_$",
                                                        "typeString": "type(IWitPyth.ID)"
                                                      }
                                                    },
                                                    "id": 22621,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "6642:4:61",
                                                    "memberName": "wrap",
                                                    "nodeType": "MemberAccess",
                                                    "src": "6630:16:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ID_$29561_$",
                                                      "typeString": "function (bytes32) pure returns (IWitPyth.ID)"
                                                    }
                                                  },
                                                  "id": 22624,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6630:36:61",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                                    "typeString": "IWitPyth.ID"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                                    "typeString": "IWitPyth.ID"
                                                  }
                                                ],
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 22615,
                                                        "name": "self",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 22398,
                                                        "src": "6592:4:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                        }
                                                      },
                                                      "id": 22616,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "6597:13:61",
                                                      "memberName": "oracleAddress",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 22380,
                                                      "src": "6592:18:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 22614,
                                                    "name": "IWitPyth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 29643,
                                                    "src": "6583:8:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                                      "typeString": "type(contract IWitPyth)"
                                                    }
                                                  },
                                                  "id": 22617,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6583:28:61",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IWitPyth_$29643",
                                                    "typeString": "contract IWitPyth"
                                                  }
                                                },
                                                "id": 22618,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "6612:17:61",
                                                "memberName": "getEmaPriceUnsafe",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 29602,
                                                "src": "6583:46:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_userDefinedValueType$_ID_$29561_$returns$_t_struct$_PythPrice_$29570_memory_ptr_$",
                                                  "typeString": "function (IWitPyth.ID) view external returns (struct IWitPyth.PythPrice memory)"
                                                }
                                              },
                                              "id": 22625,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6583:84:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                "typeString": "struct IWitPyth.PythPrice memory"
                                              }
                                            },
                                            "src": "6574:93:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                              "typeString": "struct IWitPyth.PythPrice memory"
                                            }
                                          },
                                          "id": 22627,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6574:93:61"
                                        },
                                        {
                                          "expression": {
                                            "id": 22636,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 22628,
                                                "name": "_lastUpdate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 22407,
                                                "src": "6690:11:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                                }
                                              },
                                              "id": 22630,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberLocation": "6702:8:61",
                                              "memberName": "emaPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22339,
                                              "src": "6690:20:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 22633,
                                                    "name": "_price",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 22608,
                                                    "src": "6720:6:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                      "typeString": "struct IWitPyth.PythPrice memory"
                                                    }
                                                  },
                                                  "id": 22634,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "6727:5:61",
                                                  "memberName": "price",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 29563,
                                                  "src": "6720:12:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int64",
                                                    "typeString": "int64"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int64",
                                                    "typeString": "int64"
                                                  }
                                                ],
                                                "id": 22632,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "6713:6:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint64_$",
                                                  "typeString": "type(uint64)"
                                                },
                                                "typeName": {
                                                  "id": 22631,
                                                  "name": "uint64",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "6713:6:61",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 22635,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6713:20:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "src": "6690:43:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "id": 22637,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6690:43:61"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 22678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 22666,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22407,
                                          "src": "6973:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 22668,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "6985:9:61",
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22352,
                                        "src": "6973:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                          "typeString": "Witnet.Timestamp"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 22674,
                                                  "name": "_price",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 22608,
                                                  "src": "7026:6:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                    "typeString": "struct IWitPyth.PythPrice memory"
                                                  }
                                                },
                                                "id": 22675,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7033:11:61",
                                                "memberName": "publishTime",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 29569,
                                                "src": "7026:18:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 22673,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "7019:6:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint64_$",
                                                "typeString": "type(uint64)"
                                              },
                                              "typeName": {
                                                "id": 22672,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7019:6:61",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 22676,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7019:26:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "expression": {
                                              "id": 22669,
                                              "name": "Witnet",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40741,
                                              "src": "6997:6:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                                "typeString": "type(library Witnet)"
                                              }
                                            },
                                            "id": 22670,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7004:9:61",
                                            "memberName": "Timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 37157,
                                            "src": "6997:16:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$37157_$",
                                              "typeString": "type(Witnet.Timestamp)"
                                            }
                                          },
                                          "id": 22671,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "7014:4:61",
                                          "memberName": "wrap",
                                          "nodeType": "MemberAccess",
                                          "src": "6997:21:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_Timestamp_$37157_$",
                                            "typeString": "function (uint64) pure returns (Witnet.Timestamp)"
                                          }
                                        },
                                        "id": 22677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6997:49:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                          "typeString": "Witnet.Timestamp"
                                        }
                                      },
                                      "src": "6973:73:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                        "typeString": "Witnet.Timestamp"
                                      }
                                    },
                                    "id": 22679,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6973:73:61"
                                  },
                                  {
                                    "expression": {
                                      "id": 22688,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 22680,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22407,
                                          "src": "7065:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 22682,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "7077:8:61",
                                        "memberName": "exponent",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22348,
                                        "src": "7065:20:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 22685,
                                              "name": "_price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22608,
                                              "src": "7093:6:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PythPrice_$29570_memory_ptr",
                                                "typeString": "struct IWitPyth.PythPrice memory"
                                              }
                                            },
                                            "id": 22686,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7100:4:61",
                                            "memberName": "expo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 29567,
                                            "src": "7093:11:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int32",
                                              "typeString": "int32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int32",
                                              "typeString": "int32"
                                            }
                                          ],
                                          "id": 22684,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7088:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int8_$",
                                            "typeString": "type(int8)"
                                          },
                                          "typeName": {
                                            "id": 22683,
                                            "name": "int8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "7088:4:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 22687,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7088:17:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      },
                                      "src": "7065:40:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    },
                                    "id": 22689,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7065:40:61"
                                  }
                                ]
                              }
                            },
                            "id": 22697,
                            "nodeType": "IfStatement",
                            "src": "5990:1202:61",
                            "trueBody": {
                              "id": 22598,
                              "nodeType": "Block",
                              "src": "6044:344:61",
                              "statements": [
                                {
                                  "assignments": [
                                    null,
                                    22556,
                                    null,
                                    22558,
                                    null
                                  ],
                                  "declarations": [
                                    null,
                                    {
                                      "constant": false,
                                      "id": 22556,
                                      "mutability": "mutable",
                                      "name": "_value",
                                      "nameLocation": "6070:6:61",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 22598,
                                      "src": "6066:10:61",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "typeName": {
                                        "id": 22555,
                                        "name": "int",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6066:3:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    null,
                                    {
                                      "constant": false,
                                      "id": 22558,
                                      "mutability": "mutable",
                                      "name": "_timestamp",
                                      "nameLocation": "6084:10:61",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 22598,
                                      "src": "6079:15:61",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 22557,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6079:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    null
                                  ],
                                  "id": 22565,
                                  "initialValue": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 22560,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22398,
                                              "src": "6122:4:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                              }
                                            },
                                            "id": 22561,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6127:13:61",
                                            "memberName": "oracleAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22380,
                                            "src": "6122:18:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 22559,
                                          "name": "IChainlinkAggregatorV3",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28507,
                                          "src": "6099:22:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregatorV3_$28507_$",
                                            "typeString": "type(contract IChainlinkAggregatorV3)"
                                          }
                                        },
                                        "id": 22562,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6099:42:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$28507",
                                          "typeString": "contract IChainlinkAggregatorV3"
                                        }
                                      },
                                      "id": 22563,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "6142:15:61",
                                      "memberName": "latestRoundData",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 28501,
                                      "src": "6099:58:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                                        "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)"
                                      }
                                    },
                                    "id": 22564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6099:60:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                                      "typeString": "tuple(uint80,int256,uint256,uint256,uint80)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "6063:96:61"
                                },
                                {
                                  "expression": {
                                    "id": 22576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 22566,
                                        "name": "_lastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22407,
                                        "src": "6178:11:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 22568,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "6190:5:61",
                                      "memberName": "price",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22342,
                                      "src": "6178:17:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 22573,
                                              "name": "_value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22556,
                                              "src": "6211:6:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            ],
                                            "id": 22572,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "6205:5:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int64_$",
                                              "typeString": "type(int64)"
                                            },
                                            "typeName": {
                                              "id": 22571,
                                              "name": "int64",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "6205:5:61",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 22574,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6205:13:61",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int64",
                                            "typeString": "int64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int64",
                                            "typeString": "int64"
                                          }
                                        ],
                                        "id": 22570,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6198:6:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint64_$",
                                          "typeString": "type(uint64)"
                                        },
                                        "typeName": {
                                          "id": 22569,
                                          "name": "uint64",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6198:6:61",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 22575,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6198:21:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "6178:41:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "id": 22577,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6178:41:61"
                                },
                                {
                                  "expression": {
                                    "id": 22589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 22578,
                                        "name": "_lastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22407,
                                        "src": "6238:11:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 22580,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "6250:9:61",
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22352,
                                      "src": "6238:21:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                        "typeString": "Witnet.Timestamp"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 22586,
                                              "name": "_timestamp",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22558,
                                              "src": "6291:10:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 22585,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "6284:6:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint64_$",
                                              "typeString": "type(uint64)"
                                            },
                                            "typeName": {
                                              "id": 22584,
                                              "name": "uint64",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "6284:6:61",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 22587,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6284:18:61",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "expression": {
                                            "id": 22581,
                                            "name": "Witnet",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 40741,
                                            "src": "6262:6:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                              "typeString": "type(library Witnet)"
                                            }
                                          },
                                          "id": 22582,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "6269:9:61",
                                          "memberName": "Timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 37157,
                                          "src": "6262:16:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$37157_$",
                                            "typeString": "type(Witnet.Timestamp)"
                                          }
                                        },
                                        "id": 22583,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "6279:4:61",
                                        "memberName": "wrap",
                                        "nodeType": "MemberAccess",
                                        "src": "6262:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_Timestamp_$37157_$",
                                          "typeString": "function (uint64) pure returns (Witnet.Timestamp)"
                                        }
                                      },
                                      "id": 22588,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6262:41:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                        "typeString": "Witnet.Timestamp"
                                      }
                                    },
                                    "src": "6238:65:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                      "typeString": "Witnet.Timestamp"
                                    }
                                  },
                                  "id": 22590,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6238:65:61"
                                },
                                {
                                  "expression": {
                                    "id": 22596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 22591,
                                        "name": "_lastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22407,
                                        "src": "6322:11:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 22593,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "6334:8:61",
                                      "memberName": "exponent",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22348,
                                      "src": "6322:20:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 22594,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22398,
                                        "src": "6345:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                        }
                                      },
                                      "id": 22595,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "6350:8:61",
                                      "memberName": "exponent",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22366,
                                      "src": "6345:13:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    },
                                    "src": "6322:36:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int8",
                                      "typeString": "int8"
                                    }
                                  },
                                  "id": 22597,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6322:36:61"
                                }
                              ]
                            }
                          },
                          "id": 22698,
                          "nodeType": "IfStatement",
                          "src": "5606:1586:61",
                          "trueBody": {
                            "id": 22549,
                            "nodeType": "Block",
                            "src": "5658:326:61",
                            "statements": [
                              {
                                "assignments": [
                                  22505,
                                  22507,
                                  null
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 22505,
                                    "mutability": "mutable",
                                    "name": "_value",
                                    "nameLocation": "5682:6:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 22549,
                                    "src": "5678:10:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "typeName": {
                                      "id": 22504,
                                      "name": "int",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5678:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "visibility": "internal"
                                  },
                                  {
                                    "constant": false,
                                    "id": 22507,
                                    "mutability": "mutable",
                                    "name": "_timestamp",
                                    "nameLocation": "5695:10:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 22549,
                                    "src": "5690:15:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 22506,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5690:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  },
                                  null
                                ],
                                "id": 22516,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 22513,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22398,
                                        "src": "5748:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                        }
                                      },
                                      "id": 22514,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5753:13:61",
                                      "memberName": "oracleSources",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22383,
                                      "src": "5748:18:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 22509,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22398,
                                            "src": "5719:4:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                            }
                                          },
                                          "id": 22510,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "5724:13:61",
                                          "memberName": "oracleAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22380,
                                          "src": "5719:18:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 22508,
                                        "name": "IERC2362",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 644,
                                        "src": "5710:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC2362_$644_$",
                                          "typeString": "type(contract IERC2362)"
                                        }
                                      },
                                      "id": 22511,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5710:28:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC2362_$644",
                                        "typeString": "contract IERC2362"
                                      }
                                    },
                                    "id": 22512,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5739:8:61",
                                    "memberName": "valueFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 643,
                                    "src": "5710:37:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_int256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (bytes32) view external returns (int256,uint256,uint256)"
                                    }
                                  },
                                  "id": 22515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5710:57:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_int256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(int256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "5677:90:61"
                              },
                              {
                                "expression": {
                                  "id": 22527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 22517,
                                      "name": "_lastUpdate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22407,
                                      "src": "5786:11:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                      }
                                    },
                                    "id": 22519,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberLocation": "5798:5:61",
                                    "memberName": "price",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22342,
                                    "src": "5786:17:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 22524,
                                            "name": "_value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22505,
                                            "src": "5819:6:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 22523,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5813:5:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int64_$",
                                            "typeString": "type(int64)"
                                          },
                                          "typeName": {
                                            "id": 22522,
                                            "name": "int64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5813:5:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 22525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5813:13:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int64",
                                          "typeString": "int64"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int64",
                                          "typeString": "int64"
                                        }
                                      ],
                                      "id": 22521,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5806:6:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint64_$",
                                        "typeString": "type(uint64)"
                                      },
                                      "typeName": {
                                        "id": 22520,
                                        "name": "uint64",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5806:6:61",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 22526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5806:21:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "src": "5786:41:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "id": 22528,
                                "nodeType": "ExpressionStatement",
                                "src": "5786:41:61"
                              },
                              {
                                "expression": {
                                  "id": 22540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 22529,
                                      "name": "_lastUpdate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22407,
                                      "src": "5846:11:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                      }
                                    },
                                    "id": 22531,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberLocation": "5858:9:61",
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22352,
                                    "src": "5846:21:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                      "typeString": "Witnet.Timestamp"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 22537,
                                            "name": "_timestamp",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22507,
                                            "src": "5899:10:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 22536,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5892:6:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint64_$",
                                            "typeString": "type(uint64)"
                                          },
                                          "typeName": {
                                            "id": 22535,
                                            "name": "uint64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5892:6:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 22538,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5892:18:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "expression": {
                                        "expression": {
                                          "id": 22532,
                                          "name": "Witnet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40741,
                                          "src": "5870:6:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                            "typeString": "type(library Witnet)"
                                          }
                                        },
                                        "id": 22533,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "5877:9:61",
                                        "memberName": "Timestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 37157,
                                        "src": "5870:16:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$37157_$",
                                          "typeString": "type(Witnet.Timestamp)"
                                        }
                                      },
                                      "id": 22534,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "5887:4:61",
                                      "memberName": "wrap",
                                      "nodeType": "MemberAccess",
                                      "src": "5870:21:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_Timestamp_$37157_$",
                                        "typeString": "function (uint64) pure returns (Witnet.Timestamp)"
                                      }
                                    },
                                    "id": 22539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5870:41:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                      "typeString": "Witnet.Timestamp"
                                    }
                                  },
                                  "src": "5846:65:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                    "typeString": "Witnet.Timestamp"
                                  }
                                },
                                "id": 22541,
                                "nodeType": "ExpressionStatement",
                                "src": "5846:65:61"
                              },
                              {
                                "expression": {
                                  "id": 22547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 22542,
                                      "name": "_lastUpdate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22407,
                                      "src": "5930:11:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                      }
                                    },
                                    "id": 22544,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberLocation": "5942:8:61",
                                    "memberName": "exponent",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22348,
                                    "src": "5930:20:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int8",
                                      "typeString": "int8"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 22545,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22398,
                                      "src": "5953:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                      }
                                    },
                                    "id": 22546,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5958:8:61",
                                    "memberName": "exponent",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22366,
                                    "src": "5953:13:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int8",
                                      "typeString": "int8"
                                    }
                                  },
                                  "src": "5930:36:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "id": 22548,
                                "nodeType": "ExpressionStatement",
                                "src": "5930:36:61"
                              }
                            ]
                          }
                        },
                        "id": 22699,
                        "nodeType": "IfStatement",
                        "src": "4672:2520:61",
                        "trueBody": {
                          "id": 22498,
                          "nodeType": "Block",
                          "src": "4723:877:61",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 22449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 22441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 22435,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22398,
                                      "src": "4746:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                      }
                                    },
                                    "id": 22436,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4751:13:61",
                                    "memberName": "oracleAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22380,
                                    "src": "4746:18:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 22439,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4776:1:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 22438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4768:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 22437,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4768:7:61",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 22440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4768:10:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "4746:32:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 22448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 22442,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22398,
                                      "src": "4782:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                      }
                                    },
                                    "id": 22443,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4787:13:61",
                                    "memberName": "oracleAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22380,
                                    "src": "4782:18:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 22446,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "4812:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_WitPriceFeedsDataLib_$25111",
                                          "typeString": "library WitPriceFeedsDataLib"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_WitPriceFeedsDataLib_$25111",
                                          "typeString": "library WitPriceFeedsDataLib"
                                        }
                                      ],
                                      "id": 22445,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4804:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 22444,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4804:7:61",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 22447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4804:13:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "4782:35:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "4746:71:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 22496,
                                "nodeType": "Block",
                                "src": "4908:675:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "components": [
                                        {
                                          "condition": {
                                            "expression": {
                                              "expression": {
                                                "id": 22454,
                                                "name": "self",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 22398,
                                                "src": "4965:4:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                  "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                }
                                              },
                                              "id": 22455,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "4970:16:61",
                                              "memberName": "updateConditions",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22390,
                                              "src": "4965:21:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage",
                                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage ref"
                                              }
                                            },
                                            "id": 22456,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4987:10:61",
                                            "memberName": "computeEma",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 28144,
                                            "src": "4965:32:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "expression": {
                                                              "id": 22486,
                                                              "name": "self",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 22398,
                                                              "src": "5443:4:61",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                              }
                                                            },
                                                            "id": 22487,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "5448:13:61",
                                                            "memberName": "oracleSources",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 22383,
                                                            "src": "5443:18:61",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bytes32",
                                                              "typeString": "bytes32"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_bytes32",
                                                              "typeString": "bytes32"
                                                            }
                                                          ],
                                                          "id": 22485,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "5436:6:61",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_bytes4_$",
                                                            "typeString": "type(bytes4)"
                                                          },
                                                          "typeName": {
                                                            "id": 22484,
                                                            "name": "bytes4",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5436:6:61",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 22488,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5436:26:61",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes4",
                                                          "typeString": "bytes4"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_bytes4",
                                                          "typeString": "bytes4"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "expression": {
                                                          "id": 22481,
                                                          "name": "IWitPriceFeedsTypes",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 28156,
                                                          "src": "5407:19:61",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                                            "typeString": "type(contract IWitPriceFeedsTypes)"
                                                          }
                                                        },
                                                        "id": 22482,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5427:3:61",
                                                        "memberName": "ID4",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 28155,
                                                        "src": "5407:23:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                                          "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                                        }
                                                      },
                                                      "id": 22483,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "memberLocation": "5431:4:61",
                                                      "memberName": "wrap",
                                                      "nodeType": "MemberAccess",
                                                      "src": "5407:28:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                                        "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                                                      }
                                                    },
                                                    "id": 22489,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5407:56:61",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                                    }
                                                  },
                                                  {
                                                    "id": 22490,
                                                    "name": "heartbeat",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 22403,
                                                    "src": "5499:9:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint24",
                                                      "typeString": "uint24"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint24",
                                                      "typeString": "uint24"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "expression": {
                                                          "id": 22477,
                                                          "name": "self",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 22398,
                                                          "src": "5332:4:61",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                          }
                                                        },
                                                        "id": 22478,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5337:13:61",
                                                        "memberName": "oracleAddress",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 22380,
                                                        "src": "5332:18:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "id": 22476,
                                                      "name": "IWitPriceFeeds",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 27848,
                                                      "src": "5317:14:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IWitPriceFeeds_$27848_$",
                                                        "typeString": "type(contract IWitPriceFeeds)"
                                                      }
                                                    },
                                                    "id": 22479,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5317:34:61",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_IWitPriceFeeds_$27848",
                                                      "typeString": "contract IWitPriceFeeds"
                                                    }
                                                  },
                                                  "id": 22480,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "5352:20:61",
                                                  "memberName": "getPriceNotOlderThan",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 27782,
                                                  "src": "5317:55:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_view$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_Price_$28105_memory_ptr_$",
                                                    "typeString": "function (IWitPriceFeedsTypes.ID4,uint24) view external returns (struct IWitPriceFeedsTypes.Price memory)"
                                                  }
                                                },
                                                "id": 22491,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5317:222:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                                                  "typeString": "struct IWitPriceFeedsTypes.Price memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                                                  "typeString": "struct IWitPriceFeedsTypes.Price memory"
                                                }
                                              ],
                                              "id": 22475,
                                              "name": "_intoPriceData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24986,
                                              "src": "5302:14:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$28105_memory_ptr_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                                                "typeString": "function (struct IWitPriceFeedsTypes.Price memory) pure returns (struct WitPriceFeedsDataLib.PriceData memory)"
                                              }
                                            },
                                            "id": 22492,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5302:238:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                            }
                                          },
                                          "id": 22493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "Conditional",
                                          "src": "4965:575:61",
                                          "trueExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "expression": {
                                                              "id": 22468,
                                                              "name": "self",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 22398,
                                                              "src": "5173:4:61",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                              }
                                                            },
                                                            "id": 22469,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "5178:13:61",
                                                            "memberName": "oracleSources",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 22383,
                                                            "src": "5173:18:61",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bytes32",
                                                              "typeString": "bytes32"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_bytes32",
                                                              "typeString": "bytes32"
                                                            }
                                                          ],
                                                          "id": 22467,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "5166:6:61",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_bytes4_$",
                                                            "typeString": "type(bytes4)"
                                                          },
                                                          "typeName": {
                                                            "id": 22466,
                                                            "name": "bytes4",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5166:6:61",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 22470,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5166:26:61",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes4",
                                                          "typeString": "bytes4"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_bytes4",
                                                          "typeString": "bytes4"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "expression": {
                                                          "id": 22463,
                                                          "name": "IWitPriceFeedsTypes",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 28156,
                                                          "src": "5137:19:61",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                                            "typeString": "type(contract IWitPriceFeedsTypes)"
                                                          }
                                                        },
                                                        "id": 22464,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5157:3:61",
                                                        "memberName": "ID4",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 28155,
                                                        "src": "5137:23:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                                          "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                                        }
                                                      },
                                                      "id": 22465,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "memberLocation": "5161:4:61",
                                                      "memberName": "wrap",
                                                      "nodeType": "MemberAccess",
                                                      "src": "5137:28:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                                        "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                                                      }
                                                    },
                                                    "id": 22471,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5137:56:61",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                                    }
                                                  },
                                                  {
                                                    "id": 22472,
                                                    "name": "heartbeat",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 22403,
                                                    "src": "5229:9:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint24",
                                                      "typeString": "uint24"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint24",
                                                      "typeString": "uint24"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "expression": {
                                                          "id": 22459,
                                                          "name": "self",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 22398,
                                                          "src": "5062:4:61",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                                          }
                                                        },
                                                        "id": 22460,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5067:13:61",
                                                        "memberName": "oracleAddress",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 22380,
                                                        "src": "5062:18:61",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "id": 22458,
                                                      "name": "IWitPriceFeeds",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 27848,
                                                      "src": "5047:14:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IWitPriceFeeds_$27848_$",
                                                        "typeString": "type(contract IWitPriceFeeds)"
                                                      }
                                                    },
                                                    "id": 22461,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5047:34:61",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_IWitPriceFeeds_$27848",
                                                      "typeString": "contract IWitPriceFeeds"
                                                    }
                                                  },
                                                  "id": 22462,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "5082:20:61",
                                                  "memberName": "getPriceNotOlderThan",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 27782,
                                                  "src": "5047:55:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_view$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_Price_$28105_memory_ptr_$",
                                                    "typeString": "function (IWitPriceFeedsTypes.ID4,uint24) view external returns (struct IWitPriceFeedsTypes.Price memory)"
                                                  }
                                                },
                                                "id": 22473,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5047:222:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                                                  "typeString": "struct IWitPriceFeedsTypes.Price memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                                                  "typeString": "struct IWitPriceFeedsTypes.Price memory"
                                                }
                                              ],
                                              "id": 22457,
                                              "name": "_intoEmaPriceData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25010,
                                              "src": "5029:17:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$28105_memory_ptr_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                                                "typeString": "function (struct IWitPriceFeedsTypes.Price memory) pure returns (struct WitPriceFeedsDataLib.PriceData memory)"
                                              }
                                            },
                                            "id": 22474,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5029:241:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        }
                                      ],
                                      "id": 22494,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "4938:625:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                      }
                                    },
                                    "functionReturnParameters": 22408,
                                    "id": 22495,
                                    "nodeType": "Return",
                                    "src": "4931:632:61"
                                  }
                                ]
                              },
                              "id": 22497,
                              "nodeType": "IfStatement",
                              "src": "4742:841:61",
                              "trueBody": {
                                "id": 22453,
                                "nodeType": "Block",
                                "src": "4819:83:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "expression": {
                                        "id": 22450,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22398,
                                        "src": "4849:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                        }
                                      },
                                      "id": 22451,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4854:10:61",
                                      "memberName": "lastUpdate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22394,
                                      "src": "4849:15:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceData_$22357_storage",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceData storage ref"
                                      }
                                    },
                                    "functionReturnParameters": 22408,
                                    "id": 22452,
                                    "nodeType": "Return",
                                    "src": "4842:22:61"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "1752c19f",
            "id": 22762,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchLastUpdate",
            "nameLocation": "4297:15:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22398,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4331:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22762,
                  "src": "4313:22:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                  },
                  "typeName": {
                    "id": 22397,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22396,
                      "name": "PriceFeed",
                      "nameLocations": [
                        "4313:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22395,
                      "src": "4313:9:61"
                    },
                    "referencedDeclaration": 22395,
                    "src": "4313:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22401,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "4361:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22762,
                  "src": "4337:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 22400,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22399,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "4337:19:61",
                        "4357:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "4337:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "4337:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22403,
                  "mutability": "mutable",
                  "name": "heartbeat",
                  "nameLocation": "4373:9:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22762,
                  "src": "4366:16:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 22402,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4366:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4312:71:61"
            },
            "returnParameters": {
              "id": 22408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22407,
                  "mutability": "mutable",
                  "name": "_lastUpdate",
                  "nameLocation": "4441:11:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22762,
                  "src": "4424:28:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  },
                  "typeName": {
                    "id": 22406,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22405,
                      "name": "PriceData",
                      "nameLocations": [
                        "4424:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22357,
                      "src": "4424:9:61"
                    },
                    "referencedDeclaration": 22357,
                    "src": "4424:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4423:30:61"
            },
            "scope": 25111,
            "src": "4288:3946:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 22853,
              "nodeType": "Block",
              "src": "8368:973:61",
              "statements": [
                {
                  "assignments": [
                    22773
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22773,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "8397:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22853,
                      "src": "8379:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 22772,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22771,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "8379:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "8379:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "8379:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22777,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22775,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22765,
                        "src": "8422:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 22774,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "8408:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 22776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8408:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8379:47:61"
                },
                {
                  "assignments": [
                    22782
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22782,
                      "mutability": "mutable",
                      "name": "_conditions",
                      "nameLocation": "8481:11:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22853,
                      "src": "8437:55:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                        "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                      },
                      "typeName": {
                        "id": 22781,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22780,
                          "name": "IWitPriceFeedsTypes.UpdateConditions",
                          "nameLocations": [
                            "8437:19:61",
                            "8457:16:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28153,
                          "src": "8437:36:61"
                        },
                        "referencedDeclaration": 28153,
                        "src": "8437:36:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                          "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22787,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 22784,
                          "name": "__record",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22773,
                          "src": "8504:8:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                          }
                        },
                        "id": 22785,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8513:16:61",
                        "memberName": "updateConditions",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22390,
                        "src": "8504:25:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage",
                          "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage",
                          "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage ref"
                        }
                      ],
                      "id": 22783,
                      "name": "coalesce",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23752,
                        23826
                      ],
                      "referencedDeclaration": 23752,
                      "src": "8495:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_UpdateConditions_$28153_storage_ptr_$returns$_t_struct$_UpdateConditions_$28153_memory_ptr_$",
                        "typeString": "function (struct IWitPriceFeedsTypes.UpdateConditions storage pointer) view returns (struct IWitPriceFeedsTypes.UpdateConditions memory)"
                      }
                    },
                    "id": 22786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8495:35:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8437:93:61"
                },
                {
                  "assignments": [
                    22790
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22790,
                      "mutability": "mutable",
                      "name": "_lastUpdate",
                      "nameLocation": "8560:11:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22853,
                      "src": "8543:28:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceData"
                      },
                      "typeName": {
                        "id": 22789,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22788,
                          "name": "PriceData",
                          "nameLocations": [
                            "8543:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22357,
                          "src": "8543:9:61"
                        },
                        "referencedDeclaration": 22357,
                        "src": "8543:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceData"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22797,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22792,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22773,
                        "src": "8590:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      {
                        "id": 22793,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22765,
                        "src": "8600:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      {
                        "expression": {
                          "id": 22794,
                          "name": "_conditions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22782,
                          "src": "8605:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                          }
                        },
                        "id": 22795,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8617:13:61",
                        "memberName": "heartbeatSecs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28148,
                        "src": "8605:25:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      ],
                      "id": 22791,
                      "name": "fetchLastUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22762,
                      "src": "8574:15:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,IWitPriceFeedsTypes.ID4,uint24) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                      }
                    },
                    "id": 22796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8574:57:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8543:88:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 22803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8674:31:61",
                        "subExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 22799,
                                "name": "_lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22790,
                                "src": "8675:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 22800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8687:9:61",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22352,
                              "src": "8675:21:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                "typeString": "Witnet.Timestamp"
                              }
                            },
                            "id": 22801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8697:6:61",
                            "memberName": "isZero",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 39097,
                            "src": "8675:28:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Timestamp_$37157_$",
                              "typeString": "function (Witnet.Timestamp) pure returns (bool)"
                            }
                          },
                          "id": 22802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8675:30:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 22804,
                            "name": "IWitPythErrors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29697,
                            "src": "8721:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPythErrors_$29697_$",
                              "typeString": "type(contract IWitPythErrors)"
                            }
                          },
                          "id": 22805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8736:17:61",
                          "memberName": "PriceFeedNotFound",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29690,
                          "src": "8721:32:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                            "typeString": "function () pure returns (error)"
                          }
                        },
                        "id": 22806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8721:34:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      ],
                      "id": 22798,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "8652:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$",
                        "typeString": "function (bool,error) pure"
                      }
                    },
                    "id": 22807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8652:114:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22808,
                  "nodeType": "ExpressionStatement",
                  "src": "8652:114:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 22826,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 22813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 22810,
                              "name": "_conditions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22782,
                              "src": "8809:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                              }
                            },
                            "id": 22811,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8821:13:61",
                            "memberName": "heartbeatSecs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28148,
                            "src": "8809:25:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8838:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8809:30:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 22814,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967292,
                              "src": "8860:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 22815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8866:9:61",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "8860:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 22824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 22819,
                                    "name": "_lastUpdate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22790,
                                    "src": "8903:11:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                    }
                                  },
                                  "id": 22820,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8915:9:61",
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22352,
                                  "src": "8903:21:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                    "typeString": "Witnet.Timestamp"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                    "typeString": "Witnet.Timestamp"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 22816,
                                    "name": "Witnet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40741,
                                    "src": "8879:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                      "typeString": "type(library Witnet)"
                                    }
                                  },
                                  "id": 22817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8886:9:61",
                                  "memberName": "Timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 37157,
                                  "src": "8879:16:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$37157_$",
                                    "typeString": "type(Witnet.Timestamp)"
                                  }
                                },
                                "id": 22818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "8896:6:61",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "src": "8879:23:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_uint64_$",
                                  "typeString": "function (Witnet.Timestamp) pure returns (uint64)"
                                }
                              },
                              "id": 22821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8879:46:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 22822,
                                "name": "_conditions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22782,
                                "src": "8928:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                  "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                                }
                              },
                              "id": 22823,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8940:13:61",
                              "memberName": "heartbeatSecs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28148,
                              "src": "8928:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "src": "8879:74:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "8860:93:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8809:144:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 22827,
                            "name": "IWitPythErrors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29697,
                            "src": "8968:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPythErrors_$29697_$",
                              "typeString": "type(contract IWitPythErrors)"
                            }
                          },
                          "id": 22828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8983:10:61",
                          "memberName": "StalePrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29696,
                          "src": "8968:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                            "typeString": "function () pure returns (error)"
                          }
                        },
                        "id": 22829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8968:27:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      ],
                      "id": 22809,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "8787:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$",
                        "typeString": "function (bool,error) pure"
                      }
                    },
                    "id": 22830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8787:219:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22831,
                  "nodeType": "ExpressionStatement",
                  "src": "8787:219:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 22834,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22790,
                          "src": "9077:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22835,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9089:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22348,
                        "src": "9077:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "expression": {
                          "id": 22836,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22790,
                          "src": "9124:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22837,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9136:10:61",
                        "memberName": "deltaPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22345,
                        "src": "9124:22:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 22841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 22838,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22790,
                              "src": "9168:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 22839,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9180:8:61",
                            "memberName": "emaPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22339,
                            "src": "9168:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9191:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9168:24:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 22844,
                            "name": "_lastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22790,
                            "src": "9218:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                            }
                          },
                          "id": 22845,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9230:5:61",
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22342,
                          "src": "9218:17:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 22846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "9168:67:61",
                        "trueExpression": {
                          "expression": {
                            "id": 22842,
                            "name": "_lastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22790,
                            "src": "9195:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                            }
                          },
                          "id": 22843,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9207:8:61",
                          "memberName": "emaPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22339,
                          "src": "9195:20:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "expression": {
                          "id": 22847,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22790,
                          "src": "9261:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22848,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9273:9:61",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22352,
                        "src": "9261:21:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        }
                      },
                      {
                        "expression": {
                          "id": 22849,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22790,
                          "src": "9304:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22850,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9316:5:61",
                        "memberName": "trail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22356,
                        "src": "9304:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      ],
                      "expression": {
                        "id": 22832,
                        "name": "IWitPriceFeedsTypes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28156,
                        "src": "9026:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                          "typeString": "type(contract IWitPriceFeedsTypes)"
                        }
                      },
                      "id": 22833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9046:5:61",
                      "memberName": "Price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28105,
                      "src": "9026:25:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Price_$28105_storage_ptr_$",
                        "typeString": "type(struct IWitPriceFeedsTypes.Price storage pointer)"
                      }
                    },
                    "id": 22851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "9067:8:61",
                      "9112:10:61",
                      "9161:5:61",
                      "9250:9:61",
                      "9297:5:61"
                    ],
                    "names": [
                      "exponent",
                      "deltaPrice",
                      "price",
                      "timestamp",
                      "trail"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "9026:307:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price memory"
                    }
                  },
                  "functionReturnParameters": 22770,
                  "id": 22852,
                  "nodeType": "Return",
                  "src": "9019:314:61"
                }
              ]
            },
            "functionSelector": "c66f4c0a",
            "id": 22854,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPrice",
            "nameLocation": "8251:8:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22765,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "8284:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22854,
                  "src": "8260:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 22764,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22763,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "8260:19:61",
                        "8280:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "8260:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "8260:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8259:29:61"
            },
            "returnParameters": {
              "id": 22770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22769,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 22854,
                  "src": "8329:32:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 22768,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22767,
                      "name": "IWitPriceFeedsTypes.Price",
                      "nameLocations": [
                        "8329:19:61",
                        "8349:5:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "8329:25:61"
                    },
                    "referencedDeclaration": 28105,
                    "src": "8329:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8328:34:61"
            },
            "scope": 25111,
            "src": "8242:1099:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 22930,
              "nodeType": "Block",
              "src": "9499:756:61",
              "statements": [
                {
                  "assignments": [
                    22867
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22867,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "9528:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22930,
                      "src": "9510:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 22866,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22865,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "9510:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "9510:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "9510:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22871,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22869,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22857,
                        "src": "9553:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 22868,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "9539:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 22870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9539:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9510:47:61"
                },
                {
                  "assignments": [
                    22874
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22874,
                      "mutability": "mutable",
                      "name": "_lastUpdate",
                      "nameLocation": "9585:11:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22930,
                      "src": "9568:28:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceData"
                      },
                      "typeName": {
                        "id": 22873,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22872,
                          "name": "PriceData",
                          "nameLocations": [
                            "9568:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22357,
                          "src": "9568:9:61"
                        },
                        "referencedDeclaration": 22357,
                        "src": "9568:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceData"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22880,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22876,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22867,
                        "src": "9615:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      {
                        "id": 22877,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22857,
                        "src": "9625:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      {
                        "id": 22878,
                        "name": "age",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22859,
                        "src": "9630:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      ],
                      "id": 22875,
                      "name": "fetchLastUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22762,
                      "src": "9599:15:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,IWitPriceFeedsTypes.ID4,uint24) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                      }
                    },
                    "id": 22879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9599:35:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9568:66:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 22886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9669:31:61",
                        "subExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 22882,
                                "name": "_lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22874,
                                "src": "9670:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 22883,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9682:9:61",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22352,
                              "src": "9670:21:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                "typeString": "Witnet.Timestamp"
                              }
                            },
                            "id": 22884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9692:6:61",
                            "memberName": "isZero",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 39097,
                            "src": "9670:28:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Timestamp_$37157_$",
                              "typeString": "function (Witnet.Timestamp) pure returns (bool)"
                            }
                          },
                          "id": 22885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9670:30:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 22887,
                            "name": "IWitPythErrors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29697,
                            "src": "9716:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPythErrors_$29697_$",
                              "typeString": "type(contract IWitPythErrors)"
                            }
                          },
                          "id": 22888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9731:17:61",
                          "memberName": "PriceFeedNotFound",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29690,
                          "src": "9716:32:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                            "typeString": "function () pure returns (error)"
                          }
                        },
                        "id": 22889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9716:34:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      ],
                      "id": 22881,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9647:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$",
                        "typeString": "function (bool,error) pure"
                      }
                    },
                    "id": 22890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9647:114:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22891,
                  "nodeType": "ExpressionStatement",
                  "src": "9647:114:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 22903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 22893,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967292,
                            "src": "9796:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 22894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9802:9:61",
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "9796:15:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 22902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 22898,
                                  "name": "_lastUpdate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22874,
                                  "src": "9839:11:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                  }
                                },
                                "id": 22899,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9851:9:61",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22352,
                                "src": "9839:21:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                  "typeString": "Witnet.Timestamp"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                  "typeString": "Witnet.Timestamp"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 22895,
                                  "name": "Witnet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40741,
                                  "src": "9815:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                    "typeString": "type(library Witnet)"
                                  }
                                },
                                "id": 22896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9822:9:61",
                                "memberName": "Timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 37157,
                                "src": "9815:16:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$37157_$",
                                  "typeString": "type(Witnet.Timestamp)"
                                }
                              },
                              "id": 22897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "9832:6:61",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "9815:23:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_uint64_$",
                                "typeString": "function (Witnet.Timestamp) pure returns (uint64)"
                              }
                            },
                            "id": 22900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9815:46:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 22901,
                            "name": "age",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22859,
                            "src": "9864:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "9815:52:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "9796:71:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 22904,
                            "name": "IWitPythErrors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29697,
                            "src": "9882:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPythErrors_$29697_$",
                              "typeString": "type(contract IWitPythErrors)"
                            }
                          },
                          "id": 22905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9897:10:61",
                          "memberName": "StalePrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29696,
                          "src": "9882:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                            "typeString": "function () pure returns (error)"
                          }
                        },
                        "id": 22906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9882:27:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      ],
                      "id": 22892,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9774:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$",
                        "typeString": "function (bool,error) pure"
                      }
                    },
                    "id": 22907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9774:146:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22908,
                  "nodeType": "ExpressionStatement",
                  "src": "9774:146:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 22911,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22874,
                          "src": "9991:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22912,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10003:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22348,
                        "src": "9991:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "expression": {
                          "id": 22913,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22874,
                          "src": "10038:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22914,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10050:10:61",
                        "memberName": "deltaPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22345,
                        "src": "10038:22:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 22918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 22915,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22874,
                              "src": "10082:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 22916,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10094:8:61",
                            "memberName": "emaPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22339,
                            "src": "10082:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22917,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10105:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10082:24:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 22921,
                            "name": "_lastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22874,
                            "src": "10132:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                            }
                          },
                          "id": 22922,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10144:5:61",
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22342,
                          "src": "10132:17:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 22923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "10082:67:61",
                        "trueExpression": {
                          "expression": {
                            "id": 22919,
                            "name": "_lastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22874,
                            "src": "10109:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                            }
                          },
                          "id": 22920,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10121:8:61",
                          "memberName": "emaPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22339,
                          "src": "10109:20:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "expression": {
                          "id": 22924,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22874,
                          "src": "10175:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22925,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10187:9:61",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22352,
                        "src": "10175:21:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        }
                      },
                      {
                        "expression": {
                          "id": 22926,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22874,
                          "src": "10218:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22927,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10230:5:61",
                        "memberName": "trail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22356,
                        "src": "10218:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      ],
                      "expression": {
                        "id": 22909,
                        "name": "IWitPriceFeedsTypes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28156,
                        "src": "9940:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                          "typeString": "type(contract IWitPriceFeedsTypes)"
                        }
                      },
                      "id": 22910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9960:5:61",
                      "memberName": "Price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28105,
                      "src": "9940:25:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Price_$28105_storage_ptr_$",
                        "typeString": "type(struct IWitPriceFeedsTypes.Price storage pointer)"
                      }
                    },
                    "id": 22928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "9981:8:61",
                      "10026:10:61",
                      "10075:5:61",
                      "10164:9:61",
                      "10211:5:61"
                    ],
                    "names": [
                      "exponent",
                      "deltaPrice",
                      "price",
                      "timestamp",
                      "trail"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "9940:307:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price memory"
                    }
                  },
                  "functionReturnParameters": 22864,
                  "id": 22929,
                  "nodeType": "Return",
                  "src": "9933:314:61"
                }
              ]
            },
            "functionSelector": "d9ea438f",
            "id": 22931,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPriceNotOlderThan",
            "nameLocation": "9358:20:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22857,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "9403:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22931,
                  "src": "9379:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 22856,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22855,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "9379:19:61",
                        "9399:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "9379:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "9379:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22859,
                  "mutability": "mutable",
                  "name": "age",
                  "nameLocation": "9415:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22931,
                  "src": "9408:10:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 22858,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "9408:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9378:41:61"
            },
            "returnParameters": {
              "id": 22864,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22863,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 22931,
                  "src": "9460:32:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 22862,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22861,
                      "name": "IWitPriceFeedsTypes.Price",
                      "nameLocations": [
                        "9460:19:61",
                        "9480:5:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "9460:25:61"
                    },
                    "referencedDeclaration": 28105,
                    "src": "9460:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9459:34:61"
            },
            "scope": 25111,
            "src": "9349:906:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 22977,
              "nodeType": "Block",
              "src": "10395:468:61",
              "statements": [
                {
                  "assignments": [
                    22942
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22942,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "10424:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22977,
                      "src": "10406:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 22941,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22940,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "10406:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "10406:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "10406:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22946,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22944,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22934,
                        "src": "10449:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 22943,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "10435:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 22945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10435:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10406:47:61"
                },
                {
                  "assignments": [
                    22949
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22949,
                      "mutability": "mutable",
                      "name": "_lastUpdate",
                      "nameLocation": "10481:11:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 22977,
                      "src": "10464:28:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceData"
                      },
                      "typeName": {
                        "id": 22948,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22947,
                          "name": "PriceData",
                          "nameLocations": [
                            "10464:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22357,
                          "src": "10464:9:61"
                        },
                        "referencedDeclaration": 22357,
                        "src": "10464:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceData"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22955,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22951,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22942,
                        "src": "10511:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      {
                        "id": 22952,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22934,
                        "src": "10521:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 22953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10526:1:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 22950,
                      "name": "fetchLastUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22762,
                      "src": "10495:15:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,IWitPriceFeedsTypes.ID4,uint24) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                      }
                    },
                    "id": 22954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10495:33:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10464:64:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 22958,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22949,
                          "src": "10599:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22959,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10611:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22348,
                        "src": "10599:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "expression": {
                          "id": 22960,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22949,
                          "src": "10646:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22961,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10658:10:61",
                        "memberName": "deltaPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22345,
                        "src": "10646:22:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 22965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 22962,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22949,
                              "src": "10690:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 22963,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10702:8:61",
                            "memberName": "emaPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22339,
                            "src": "10690:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10713:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10690:24:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 22968,
                            "name": "_lastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22949,
                            "src": "10740:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                            }
                          },
                          "id": 22969,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10752:5:61",
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22342,
                          "src": "10740:17:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 22970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "10690:67:61",
                        "trueExpression": {
                          "expression": {
                            "id": 22966,
                            "name": "_lastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22949,
                            "src": "10717:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                            }
                          },
                          "id": 22967,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10729:8:61",
                          "memberName": "emaPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22339,
                          "src": "10717:20:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "expression": {
                          "id": 22971,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22949,
                          "src": "10783:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22972,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10795:9:61",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22352,
                        "src": "10783:21:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        }
                      },
                      {
                        "expression": {
                          "id": 22973,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22949,
                          "src": "10826:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 22974,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10838:5:61",
                        "memberName": "trail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22356,
                        "src": "10826:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      ],
                      "expression": {
                        "id": 22956,
                        "name": "IWitPriceFeedsTypes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28156,
                        "src": "10548:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                          "typeString": "type(contract IWitPriceFeedsTypes)"
                        }
                      },
                      "id": 22957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10568:5:61",
                      "memberName": "Price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28105,
                      "src": "10548:25:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Price_$28105_storage_ptr_$",
                        "typeString": "type(struct IWitPriceFeedsTypes.Price storage pointer)"
                      }
                    },
                    "id": 22975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "10589:8:61",
                      "10634:10:61",
                      "10683:5:61",
                      "10772:9:61",
                      "10819:5:61"
                    ],
                    "names": [
                      "exponent",
                      "deltaPrice",
                      "price",
                      "timestamp",
                      "trail"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "10548:307:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price memory"
                    }
                  },
                  "functionReturnParameters": 22939,
                  "id": 22976,
                  "nodeType": "Return",
                  "src": "10541:314:61"
                }
              ]
            },
            "functionSelector": "97445409",
            "id": 22978,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPriceUnsafe",
            "nameLocation": "10272:14:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22934,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "10311:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 22978,
                  "src": "10287:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 22933,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22932,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "10287:19:61",
                        "10307:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "10287:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "10287:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10286:29:61"
            },
            "returnParameters": {
              "id": 22939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22938,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 22978,
                  "src": "10356:32:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 22937,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22936,
                      "name": "IWitPriceFeedsTypes.Price",
                      "nameLocations": [
                        "10356:19:61",
                        "10376:5:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "10356:25:61"
                    },
                    "referencedDeclaration": 28105,
                    "src": "10356:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10355:34:61"
            },
            "scope": 25111,
            "src": "10263:600:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23158,
              "nodeType": "Block",
              "src": "11200:1620:61",
              "statements": [
                {
                  "assignments": [
                    22988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22988,
                      "mutability": "mutable",
                      "name": "self",
                      "nameLocation": "11229:4:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23158,
                      "src": "11211:22:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 22987,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 22986,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "11211:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "11211:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "11211:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22992,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22990,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22981,
                        "src": "11250:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 22989,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "11236:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 22991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11236:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11211:43:61"
                },
                {
                  "condition": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 22993,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22988,
                        "src": "11269:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 22994,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11274:7:61",
                      "memberName": "settled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24632,
                      "src": "11269:12:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                      }
                    },
                    "id": 22995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11269:14:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 23157,
                  "nodeType": "IfStatement",
                  "src": "11265:1548:61",
                  "trueBody": {
                    "id": 23156,
                    "nodeType": "Block",
                    "src": "11285:1528:61",
                    "statements": [
                      {
                        "assignments": [
                          23001
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23001,
                            "mutability": "mutable",
                            "name": "_reverseDeps",
                            "nameLocation": "11333:12:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 23156,
                            "src": "11300:45:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                              "typeString": "IWitPriceFeedsTypes.ID4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 22999,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 22998,
                                  "name": "IWitPriceFeedsTypes.ID4",
                                  "nameLocations": [
                                    "11300:19:61",
                                    "11320:3:61"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 28155,
                                  "src": "11300:23:61"
                                },
                                "referencedDeclaration": 28155,
                                "src": "11300:23:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                }
                              },
                              "id": 23000,
                              "nodeType": "ArrayTypeName",
                              "src": "11300:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                                "typeString": "IWitPriceFeedsTypes.ID4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23007,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 23002,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23835,
                                "src": "11348:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                  "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                }
                              },
                              "id": 23003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11348:6:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                              }
                            },
                            "id": 23004,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11355:11:61",
                            "memberName": "reverseDeps",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22322,
                            "src": "11348:18:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_$",
                              "typeString": "mapping(IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[] storage ref)"
                            }
                          },
                          "id": 23006,
                          "indexExpression": {
                            "id": 23005,
                            "name": "id4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22981,
                            "src": "11367:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                              "typeString": "IWitPriceFeedsTypes.ID4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11348:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage",
                            "typeString": "IWitPriceFeedsTypes.ID4[] storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11300:71:61"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 23014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23009,
                                "name": "recursively",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22983,
                                "src": "11412:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 23013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 23010,
                                    "name": "_reverseDeps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23001,
                                    "src": "11448:12:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                    }
                                  },
                                  "id": 23011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "11461:6:61",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "11448:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 23012,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11471:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11448:24:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "11412:60:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "63616e6e6f742072656d6f7665206966206d61707065642066726f6d206f7468657273",
                              "id": 23015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11491:37:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8683073bfad07e37004708ce422468c67b639f53369d0f23b110a4d64d7e46c7",
                                "typeString": "literal_string \"cannot remove if mapped from others\""
                              },
                              "value": "cannot remove if mapped from others"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8683073bfad07e37004708ce422468c67b639f53369d0f23b110a4d64d7e46c7",
                                "typeString": "literal_string \"cannot remove if mapped from others\""
                              }
                            ],
                            "id": 23008,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "11386:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11386:159:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23017,
                        "nodeType": "ExpressionStatement",
                        "src": "11386:159:61"
                      },
                      {
                        "body": {
                          "id": 23035,
                          "nodeType": "Block",
                          "src": "11762:82:61",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 23029,
                                      "name": "_reverseDeps",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23001,
                                      "src": "11797:12:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                        "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                      }
                                    },
                                    "id": 23031,
                                    "indexExpression": {
                                      "id": 23030,
                                      "name": "_ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23019,
                                      "src": "11810:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11797:17:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  },
                                  {
                                    "id": 23032,
                                    "name": "recursively",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22983,
                                    "src": "11816:11:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 23028,
                                  "name": "removePriceFeed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23159,
                                  "src": "11781:15:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_ID4_$28155_$_t_bool_$returns$__$",
                                    "typeString": "function (IWitPriceFeedsTypes.ID4,bool)"
                                  }
                                },
                                "id": 23033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11781:47:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23034,
                              "nodeType": "ExpressionStatement",
                              "src": "11781:47:61"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 23021,
                            "name": "_ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23019,
                            "src": "11727:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 23022,
                              "name": "_reverseDeps",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23001,
                              "src": "11733:12:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                              }
                            },
                            "id": 23023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11746:6:61",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "11733:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11727:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23036,
                        "initializationExpression": {
                          "assignments": [
                            23019
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 23019,
                              "mutability": "mutable",
                              "name": "_ix",
                              "nameLocation": "11722:3:61",
                              "nodeType": "VariableDeclaration",
                              "scope": 23036,
                              "src": "11717:8:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 23018,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "11717:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 23020,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11717:8:61"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 23026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "11754:6:61",
                            "subExpression": {
                              "id": 23025,
                              "name": "_ix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23019,
                              "src": "11757:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 23027,
                          "nodeType": "ExpressionStatement",
                          "src": "11754:6:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "11712:132:61"
                      },
                      {
                        "expression": {
                          "id": 23042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11858:30:61",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 23037,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23835,
                                  "src": "11865:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                    "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                  }
                                },
                                "id": 23038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11865:6:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                }
                              },
                              "id": 23039,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11872:11:61",
                              "memberName": "reverseDeps",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22322,
                              "src": "11865:18:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_$",
                                "typeString": "mapping(IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[] storage ref)"
                              }
                            },
                            "id": 23041,
                            "indexExpression": {
                              "id": 23040,
                              "name": "id4",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22981,
                              "src": "11884:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11865:23:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage",
                              "typeString": "IWitPriceFeedsTypes.ID4[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23043,
                        "nodeType": "ExpressionStatement",
                        "src": "11858:30:61"
                      },
                      {
                        "assignments": [
                          23045
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23045,
                            "mutability": "mutable",
                            "name": "_popIndex",
                            "nameLocation": "11969:9:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 23156,
                            "src": "11964:14:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23044,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "11964:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23052,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 23046,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23835,
                                  "src": "11981:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                    "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                  }
                                },
                                "id": 23047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11981:6:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                }
                              },
                              "id": 23048,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11988:3:61",
                              "memberName": "ids",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22309,
                              "src": "11981:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                "typeString": "IWitPyth.ID[] storage ref"
                              }
                            },
                            "id": 23049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11992:6:61",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "11981:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 23050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12001:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11981:21:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11964:38:61"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23053,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22988,
                              "src": "12021:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 23054,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "12026:5:61",
                            "memberName": "index",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22363,
                            "src": "12021:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 23055,
                            "name": "_popIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23045,
                            "src": "12034:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12021:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23094,
                        "nodeType": "IfStatement",
                        "src": "12017:276:61",
                        "trueBody": {
                          "id": 23093,
                          "nodeType": "Block",
                          "src": "12045:248:61",
                          "statements": [
                            {
                              "assignments": [
                                23061
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23061,
                                  "mutability": "mutable",
                                  "name": "_popID",
                                  "nameLocation": "12076:6:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23093,
                                  "src": "12064:18:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                    "typeString": "IWitPyth.ID"
                                  },
                                  "typeName": {
                                    "id": 23060,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 23059,
                                      "name": "IWitPyth.ID",
                                      "nameLocations": [
                                        "12064:8:61",
                                        "12073:2:61"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 29561,
                                      "src": "12064:11:61"
                                    },
                                    "referencedDeclaration": 29561,
                                    "src": "12064:11:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                      "typeString": "IWitPyth.ID"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23067,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 23062,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23835,
                                      "src": "12085:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                        "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                      }
                                    },
                                    "id": 23063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12085:6:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                    }
                                  },
                                  "id": 23064,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12092:3:61",
                                  "memberName": "ids",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22309,
                                  "src": "12085:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                    "typeString": "IWitPyth.ID[] storage ref"
                                  }
                                },
                                "id": 23066,
                                "indexExpression": {
                                  "id": 23065,
                                  "name": "_popIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23045,
                                  "src": "12096:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12085:21:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                  "typeString": "IWitPyth.ID"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12064:42:61"
                            },
                            {
                              "assignments": [
                                23070
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23070,
                                  "mutability": "mutable",
                                  "name": "__last",
                                  "nameLocation": "12143:6:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23093,
                                  "src": "12125:24:61",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                                  },
                                  "typeName": {
                                    "id": 23069,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 23068,
                                      "name": "PriceFeed",
                                      "nameLocations": [
                                        "12125:9:61"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 22395,
                                      "src": "12125:9:61"
                                    },
                                    "referencedDeclaration": 22395,
                                    "src": "12125:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23076,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 23073,
                                        "name": "_popID",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23061,
                                        "src": "12175:6:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                          "typeString": "IWitPyth.ID"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                          "typeString": "IWitPyth.ID"
                                        }
                                      ],
                                      "id": 23072,
                                      "name": "_intoID4",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24941,
                                      "src": "12166:8:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ID_$29561_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                        "typeString": "function (IWitPyth.ID) pure returns (IWitPriceFeedsTypes.ID4)"
                                      }
                                    },
                                    "id": 23074,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12166:16:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  ],
                                  "id": 23071,
                                  "name": "seekPriceFeed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24598,
                                  "src": "12152:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                                    "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                                  }
                                },
                                "id": 23075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12152:31:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12125:58:61"
                            },
                            {
                              "expression": {
                                "id": 23082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 23077,
                                    "name": "__last",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23070,
                                    "src": "12202:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                    }
                                  },
                                  "id": 23079,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "12209:5:61",
                                  "memberName": "index",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22363,
                                  "src": "12202:12:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 23080,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22988,
                                    "src": "12217:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                    }
                                  },
                                  "id": 23081,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12222:5:61",
                                  "memberName": "index",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22363,
                                  "src": "12217:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "12202:25:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 23083,
                              "nodeType": "ExpressionStatement",
                              "src": "12202:25:61"
                            },
                            {
                              "expression": {
                                "id": 23091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 23084,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23835,
                                        "src": "12246:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                          "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                        }
                                      },
                                      "id": 23085,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12246:6:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                      }
                                    },
                                    "id": 23086,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "12253:3:61",
                                    "memberName": "ids",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22309,
                                    "src": "12246:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                      "typeString": "IWitPyth.ID[] storage ref"
                                    }
                                  },
                                  "id": 23089,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 23087,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22988,
                                      "src": "12257:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                      }
                                    },
                                    "id": 23088,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "12262:5:61",
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22363,
                                    "src": "12257:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12246:22:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                    "typeString": "IWitPyth.ID"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 23090,
                                  "name": "_popID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23061,
                                  "src": "12271:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                    "typeString": "IWitPyth.ID"
                                  }
                                },
                                "src": "12246:31:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                  "typeString": "IWitPyth.ID"
                                }
                              },
                              "id": 23092,
                              "nodeType": "ExpressionStatement",
                              "src": "12246:31:61"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 23095,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23835,
                                  "src": "12307:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                    "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                  }
                                },
                                "id": 23096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12307:6:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                }
                              },
                              "id": 23097,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12314:3:61",
                              "memberName": "ids",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22309,
                              "src": "12307:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                "typeString": "IWitPyth.ID[] storage ref"
                              }
                            },
                            "id": 23098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "12318:3:61",
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "src": "12307:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage_ptr_$",
                              "typeString": "function (IWitPyth.ID[] storage pointer)"
                            }
                          },
                          "id": 23099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12307:16:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23100,
                        "nodeType": "ExpressionStatement",
                        "src": "12307:16:61"
                      },
                      {
                        "assignments": [
                          23105
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23105,
                            "mutability": "mutable",
                            "name": "_radonHash",
                            "nameLocation": "12420:10:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 23156,
                            "src": "12403:27:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            },
                            "typeName": {
                              "id": 23104,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 23103,
                                "name": "Witnet.RadonHash",
                                "nameLocations": [
                                  "12403:6:61",
                                  "12410:9:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 37153,
                                "src": "12403:16:61"
                              },
                              "referencedDeclaration": 37153,
                              "src": "12403:16:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                                "typeString": "Witnet.RadonHash"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23112,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 23109,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22988,
                                "src": "12455:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                }
                              },
                              "id": 23110,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12460:13:61",
                              "memberName": "oracleSources",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22383,
                              "src": "12455:18:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 23106,
                                "name": "Witnet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40741,
                                "src": "12433:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                  "typeString": "type(library Witnet)"
                                }
                              },
                              "id": 23107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12440:9:61",
                              "memberName": "RadonHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 37153,
                              "src": "12433:16:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_userDefinedValueType$_RadonHash_$37153_$",
                                "typeString": "type(Witnet.RadonHash)"
                              }
                            },
                            "id": 23108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "12450:4:61",
                            "memberName": "wrap",
                            "nodeType": "MemberAccess",
                            "src": "12433:21:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_RadonHash_$37153_$",
                              "typeString": "function (bytes32) pure returns (Witnet.RadonHash)"
                            }
                          },
                          "id": 23111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12433:41:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                            "typeString": "Witnet.RadonHash"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12403:71:61"
                      },
                      {
                        "condition": {
                          "id": 23116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "12500:20:61",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 23113,
                                "name": "_radonHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23105,
                                "src": "12501:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                                  "typeString": "Witnet.RadonHash"
                                }
                              },
                              "id": 23114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12512:6:61",
                              "memberName": "isZero",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 38881,
                              "src": "12501:17:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_RadonHash_$37153_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_RadonHash_$37153_$",
                                "typeString": "function (Witnet.RadonHash) pure returns (bool)"
                              }
                            },
                            "id": 23115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12501:19:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23140,
                        "nodeType": "IfStatement",
                        "src": "12496:213:61",
                        "trueBody": {
                          "id": 23139,
                          "nodeType": "Block",
                          "src": "12522:187:61",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "expression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 23119,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23835,
                                          "src": "12556:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                            "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                          }
                                        },
                                        "id": 23120,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12556:6:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                        }
                                      },
                                      "id": 23121,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "12563:10:61",
                                      "memberName": "reverseIds",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22328,
                                      "src": "12556:17:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_userDefinedValueType$_RadonHash_$37153_$_t_userDefinedValueType$_ID4_$28155_$",
                                        "typeString": "mapping(Witnet.RadonHash => IWitPriceFeedsTypes.ID4)"
                                      }
                                    },
                                    "id": 23123,
                                    "indexExpression": {
                                      "id": 23122,
                                      "name": "_radonHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23105,
                                      "src": "12574:10:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                                        "typeString": "Witnet.RadonHash"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12556:29:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  ],
                                  "expression": {
                                    "id": 23117,
                                    "name": "id4",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22981,
                                    "src": "12545:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  },
                                  "id": 23118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12549:6:61",
                                  "memberName": "equals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 23932,
                                  "src": "12545:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ID4_$28155_$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_ID4_$28155_$",
                                    "typeString": "function (IWitPriceFeedsTypes.ID4,IWitPriceFeedsTypes.ID4) pure returns (bool)"
                                  }
                                },
                                "id": 23124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12545:41:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 23138,
                              "nodeType": "IfStatement",
                              "src": "12541:153:61",
                              "trueBody": {
                                "id": 23137,
                                "nodeType": "Block",
                                "src": "12588:106:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 23135,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "expression": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 23125,
                                              "name": "data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23835,
                                              "src": "12611:4:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                                "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                              }
                                            },
                                            "id": 23126,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12611:6:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                            }
                                          },
                                          "id": 23127,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "12618:10:61",
                                          "memberName": "reverseIds",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22328,
                                          "src": "12611:17:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_userDefinedValueType$_RadonHash_$37153_$_t_userDefinedValueType$_ID4_$28155_$",
                                            "typeString": "mapping(Witnet.RadonHash => IWitPriceFeedsTypes.ID4)"
                                          }
                                        },
                                        "id": 23129,
                                        "indexExpression": {
                                          "id": 23128,
                                          "name": "_radonHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23105,
                                          "src": "12629:10:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                                            "typeString": "Witnet.RadonHash"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "12611:29:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                          "typeString": "IWitPriceFeedsTypes.ID4"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 23133,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12672:1:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "expression": {
                                            "expression": {
                                              "id": 23130,
                                              "name": "IWitPriceFeedsTypes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 28156,
                                              "src": "12643:19:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                                "typeString": "type(contract IWitPriceFeedsTypes)"
                                              }
                                            },
                                            "id": 23131,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "12663:3:61",
                                            "memberName": "ID4",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 28155,
                                            "src": "12643:23:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                              "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                            }
                                          },
                                          "id": 23132,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "12667:4:61",
                                          "memberName": "wrap",
                                          "nodeType": "MemberAccess",
                                          "src": "12643:28:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                            "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                                          }
                                        },
                                        "id": 23134,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12643:31:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                          "typeString": "IWitPriceFeedsTypes.ID4"
                                        }
                                      },
                                      "src": "12611:63:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      }
                                    },
                                    "id": 23136,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12611:63:61"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 23147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "12723:37:61",
                          "subExpression": {
                            "expression": {
                              "baseExpression": {
                                "expression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 23141,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23835,
                                    "src": "12730:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                      "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                    }
                                  },
                                  "id": 23142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12730:6:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                  }
                                },
                                "id": 23143,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "12737:7:61",
                                "memberName": "records",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22315,
                                "src": "12730:14:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                                  "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed storage ref)"
                                }
                              },
                              "id": 23145,
                              "indexExpression": {
                                "id": 23144,
                                "name": "id4",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22981,
                                "src": "12745:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12730:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage ref"
                              }
                            },
                            "id": 23146,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "12750:10:61",
                            "memberName": "lastUpdate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22394,
                            "src": "12730:30:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_storage",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23148,
                        "nodeType": "ExpressionStatement",
                        "src": "12723:37:61"
                      },
                      {
                        "expression": {
                          "id": 23154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "12775:26:61",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 23149,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23835,
                                  "src": "12782:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                    "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                  }
                                },
                                "id": 23150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12782:6:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                }
                              },
                              "id": 23151,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12789:7:61",
                              "memberName": "records",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22315,
                              "src": "12782:14:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                                "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed storage ref)"
                              }
                            },
                            "id": 23153,
                            "indexExpression": {
                              "id": 23152,
                              "name": "id4",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22981,
                              "src": "12797:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12782:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceFeed_$22395_storage",
                              "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23155,
                        "nodeType": "ExpressionStatement",
                        "src": "12775:26:61"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "7d18e020",
            "id": 23159,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removePriceFeed",
            "nameLocation": "11130:15:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22981,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "11170:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23159,
                  "src": "11146:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 22980,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 22979,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "11146:19:61",
                        "11166:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "11146:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "11146:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22983,
                  "mutability": "mutable",
                  "name": "recursively",
                  "nameLocation": "11180:11:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23159,
                  "src": "11175:16:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22982,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11175:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11145:47:61"
            },
            "returnParameters": {
              "id": 22985,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11200:0:61"
            },
            "scope": 25111,
            "src": "11121:1699:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23175,
              "nodeType": "Block",
              "src": "12899:101:61",
              "statements": [
                {
                  "expression": {
                    "id": 23167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23164,
                      "name": "_footprint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23162,
                      "src": "12910:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 23165,
                        "name": "_computePriceFeedsFootprint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24834,
                        "src": "12923:27:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes4_$",
                          "typeString": "function () view returns (bytes4)"
                        }
                      },
                      "id": 23166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12923:29:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "12910:42:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 23168,
                  "nodeType": "ExpressionStatement",
                  "src": "12910:42:61"
                },
                {
                  "expression": {
                    "id": 23173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 23169,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23835,
                          "src": "12963:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                            "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                          }
                        },
                        "id": 23170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12963:6:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                        }
                      },
                      "id": 23171,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "12970:9:61",
                      "memberName": "footprint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22335,
                      "src": "12963:16:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 23172,
                      "name": "_footprint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23162,
                      "src": "12982:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "12963:29:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 23174,
                  "nodeType": "ExpressionStatement",
                  "src": "12963:29:61"
                }
              ]
            },
            "functionSelector": "fce897db",
            "id": 23176,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePriceFeedFootprint",
            "nameLocation": "12837:24:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23160,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12861:2:61"
            },
            "returnParameters": {
              "id": 23163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23162,
                  "mutability": "mutable",
                  "name": "_footprint",
                  "nameLocation": "12887:10:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23176,
                  "src": "12880:17:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 23161,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "12880:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12879:19:61"
            },
            "scope": 25111,
            "src": "12828:172:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23336,
              "nodeType": "Block",
              "src": "13254:1324:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 23202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 23194,
                                "name": "mapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23183,
                                "src": "13293:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              ],
                              "id": 23193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13287:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23192,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "13287:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13287:13:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "expression": {
                                    "id": 23198,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "13309:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 23199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13329:7:61",
                                  "memberName": "Mappers",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28087,
                                  "src": "13309:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                    "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                  }
                                },
                                "id": 23200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "13337:4:61",
                                "memberName": "None",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28082,
                                "src": "13309:32:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              ],
                              "id": 23197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13303:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23196,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "13303:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13303:39:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "13287:55:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 23213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 23205,
                                "name": "mapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23183,
                                "src": "13369:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              ],
                              "id": 23204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13363:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23203,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "13363:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13363:13:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "expression": {
                                    "id": 23209,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "13386:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 23210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13406:7:61",
                                  "memberName": "Mappers",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28087,
                                  "src": "13386:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                    "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                  }
                                },
                                "id": 23211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "13414:7:61",
                                "memberName": "Inverse",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28086,
                                "src": "13386:35:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Mappers_$28087",
                                  "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                }
                              ],
                              "id": 23208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13380:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23207,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "13380:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13380:42:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "13363:59:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "13287:135:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e76616c6964206d6170706572",
                        "id": 23215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13438:16:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_809f0e155c7b29b202426e1a99435b32cc84b804ff533457331b170a97f09736",
                          "typeString": "literal_string \"invalid mapper\""
                        },
                        "value": "invalid mapper"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_809f0e155c7b29b202426e1a99435b32cc84b804ff533457331b170a97f09736",
                          "typeString": "literal_string \"invalid mapper\""
                        }
                      ],
                      "id": 23191,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "13265:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13265:200:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23217,
                  "nodeType": "ExpressionStatement",
                  "src": "13265:200:61"
                },
                {
                  "assignments": [
                    23222
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23222,
                      "mutability": "mutable",
                      "name": "id4",
                      "nameLocation": "13500:3:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23336,
                      "src": "13476:27:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      },
                      "typeName": {
                        "id": 23221,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23220,
                          "name": "IWitPriceFeedsTypes.ID4",
                          "nameLocations": [
                            "13476:19:61",
                            "13496:3:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28155,
                          "src": "13476:23:61"
                        },
                        "referencedDeclaration": 28155,
                        "src": "13476:23:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23226,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23224,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23178,
                        "src": "13529:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 23223,
                      "name": "_settlePriceFeedSymbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25110,
                      "src": "13506:22:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                        "typeString": "function (string calldata) returns (IWitPriceFeedsTypes.ID4)"
                      }
                    },
                    "id": 23225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13506:30:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13476:60:61"
                },
                {
                  "assignments": [
                    23229
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23229,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "13565:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23336,
                      "src": "13547:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 23228,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23227,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "13547:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "13547:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "13547:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23233,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23231,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23222,
                        "src": "13590:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23230,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "13576:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 23232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13576:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13547:47:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "13613:19:61",
                        "subExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 23235,
                              "name": "__record",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23229,
                              "src": "13614:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 23236,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "13623:7:61",
                            "memberName": "settled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24632,
                            "src": "13614:16:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                              "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                            }
                          },
                          "id": 23237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13614:18:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "616c726561647920736574746c6564",
                        "id": 23239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13634:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        },
                        "value": "already settled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        }
                      ],
                      "id": 23234,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "13605:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13605:47:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23241,
                  "nodeType": "ExpressionStatement",
                  "src": "13605:47:61"
                },
                {
                  "assignments": [
                    23243
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23243,
                      "mutability": "mutable",
                      "name": "_mapperDeps",
                      "nameLocation": "13671:11:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23336,
                      "src": "13663:19:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 23242,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13663:7:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23244,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13663:19:61"
                },
                {
                  "body": {
                    "id": 23319,
                    "nodeType": "Block",
                    "src": "13741:467:61",
                    "statements": [
                      {
                        "assignments": [
                          23256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23256,
                            "mutability": "mutable",
                            "name": "_id4",
                            "nameLocation": "13763:4:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 23319,
                            "src": "13756:11:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 23255,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "13756:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23265,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 23260,
                                    "name": "mapperDeps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23186,
                                    "src": "13782:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "string calldata[] calldata"
                                    }
                                  },
                                  "id": 23262,
                                  "indexExpression": {
                                    "id": 23261,
                                    "name": "_ix",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23246,
                                    "src": "13793:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13782:15:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 23259,
                                "name": "hash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24565,
                                "src": "13777:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (string memory) pure returns (bytes32)"
                                }
                              },
                              "id": 23263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13777:21:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 23258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13770:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes4_$",
                              "typeString": "type(bytes4)"
                            },
                            "typeName": {
                              "id": 23257,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "13770:6:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13770:29:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13756:43:61"
                      },
                      {
                        "assignments": [
                          23268
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23268,
                            "mutability": "mutable",
                            "name": "__depsFeed",
                            "nameLocation": "13832:10:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 23319,
                            "src": "13814:28:61",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                            },
                            "typeName": {
                              "id": 23267,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 23266,
                                "name": "PriceFeed",
                                "nameLocations": [
                                  "13814:9:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22395,
                                "src": "13814:9:61"
                              },
                              "referencedDeclaration": 22395,
                              "src": "13814:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23276,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 23273,
                                  "name": "_id4",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23256,
                                  "src": "13888:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 23270,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "13859:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 23271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13879:3:61",
                                  "memberName": "ID4",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28155,
                                  "src": "13859:23:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                    "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                  }
                                },
                                "id": 23272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "13883:4:61",
                                "memberName": "wrap",
                                "nodeType": "MemberAccess",
                                "src": "13859:28:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                  "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                                }
                              },
                              "id": 23274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13859:34:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            ],
                            "id": 23269,
                            "name": "seekPriceFeed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24598,
                            "src": "13845:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                              "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                            }
                          },
                          "id": 23275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13845:49:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13814:80:61"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 23278,
                                  "name": "__depsFeed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23268,
                                  "src": "13917:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                  }
                                },
                                "id": 23279,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "13928:7:61",
                                "memberName": "settled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24632,
                                "src": "13917:18:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                                  "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                                }
                              },
                              "id": 23280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13917:20:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "756e737570706f7274656420646570656e64656e63793a20",
                                      "id": 23285,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13981:26:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c4817b49b492749dc4c5d87e718385ac4b07031a6786852243ff5d14be9ce7b1",
                                        "typeString": "literal_string \"unsupported dependency: \""
                                      },
                                      "value": "unsupported dependency: "
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 23286,
                                        "name": "mapperDeps",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23186,
                                        "src": "14026:10:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "string calldata[] calldata"
                                        }
                                      },
                                      "id": 23288,
                                      "indexExpression": {
                                        "id": 23287,
                                        "name": "_ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23246,
                                        "src": "14037:3:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "14026:15:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_c4817b49b492749dc4c5d87e718385ac4b07031a6786852243ff5d14be9ce7b1",
                                        "typeString": "literal_string \"unsupported dependency: \""
                                      },
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    ],
                                    "expression": {
                                      "id": 23283,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "13946:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 23284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "13950:12:61",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "13946:16:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 23289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13946:110:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 23282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13939:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": {
                                  "id": 23281,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13939:6:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13939:118:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 23277,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "13909:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13909:149:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23292,
                        "nodeType": "ExpressionStatement",
                        "src": "13909:149:61"
                      },
                      {
                        "expression": {
                          "id": 23304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23293,
                            "name": "_mapperDeps",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23243,
                            "src": "14073:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 23302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 23296,
                                      "name": "_id4",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23256,
                                      "src": "14097:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    ],
                                    "id": 23295,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14089:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 23294,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14089:7:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 23297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14089:13:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 23300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3332",
                                        "id": 23298,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14107:2:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 23299,
                                        "name": "_ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23246,
                                        "src": "14112:3:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14107:8:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 23301,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "14106:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14089:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "id": 23303,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14088:29:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "14073:44:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 23305,
                        "nodeType": "ExpressionStatement",
                        "src": "14073:44:61"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 23316,
                              "name": "id4",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23222,
                              "src": "14192:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            ],
                            "expression": {
                              "baseExpression": {
                                "expression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 23306,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23835,
                                    "src": "14132:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                      "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                    }
                                  },
                                  "id": 23307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14132:6:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                  }
                                },
                                "id": 23308,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "14139:11:61",
                                "memberName": "reverseDeps",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22322,
                                "src": "14132:18:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_$",
                                  "typeString": "mapping(IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[] storage ref)"
                                }
                              },
                              "id": 23314,
                              "indexExpression": {
                                "arguments": [
                                  {
                                    "id": 23312,
                                    "name": "_id4",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23256,
                                    "src": "14180:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 23309,
                                      "name": "IWitPriceFeedsTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28156,
                                      "src": "14151:19:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                        "typeString": "type(contract IWitPriceFeedsTypes)"
                                      }
                                    },
                                    "id": 23310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "14171:3:61",
                                    "memberName": "ID4",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 28155,
                                    "src": "14151:23:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                      "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                    }
                                  },
                                  "id": 23311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "14175:4:61",
                                  "memberName": "wrap",
                                  "nodeType": "MemberAccess",
                                  "src": "14151:28:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                    "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                                  }
                                },
                                "id": 23313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14151:34:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14132:54:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage",
                                "typeString": "IWitPriceFeedsTypes.ID4[] storage ref"
                              }
                            },
                            "id": 23315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14187:4:61",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "14132:59:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$returns$__$attached_to$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr_$",
                              "typeString": "function (IWitPriceFeedsTypes.ID4[] storage pointer,IWitPriceFeedsTypes.ID4)"
                            }
                          },
                          "id": 23317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14132:64:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23318,
                        "nodeType": "ExpressionStatement",
                        "src": "14132:64:61"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 23248,
                      "name": "_ix",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23246,
                      "src": "13708:3:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 23249,
                        "name": "mapperDeps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23186,
                        "src": "13714:10:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 23250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13725:6:61",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "13714:17:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13708:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 23320,
                  "initializationExpression": {
                    "assignments": [
                      23246
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 23246,
                        "mutability": "mutable",
                        "name": "_ix",
                        "nameLocation": "13703:3:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 23320,
                        "src": "13698:8:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23245,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13698:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 23247,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13698:8:61"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 23253,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13733:6:61",
                      "subExpression": {
                        "id": 23252,
                        "name": "_ix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23246,
                        "src": "13733:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 23254,
                    "nodeType": "ExpressionStatement",
                    "src": "13733:6:61"
                  },
                  "nodeType": "ForStatement",
                  "src": "13693:515:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23324,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23180,
                        "src": "14254:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "id": 23325,
                        "name": "mapper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23183,
                        "src": "14278:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Mappers_$28087",
                          "typeString": "enum IWitPriceFeedsTypes.Mappers"
                        }
                      },
                      {
                        "id": 23326,
                        "name": "_mapperDeps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23243,
                        "src": "14300:11:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_enum$_Mappers_$28087",
                          "typeString": "enum IWitPriceFeedsTypes.Mappers"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 23321,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23229,
                        "src": "14218:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 23323,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14227:12:61",
                      "memberName": "settleMapper",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24672,
                      "src": "14218:21:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_int8_$_t_enum$_Mappers_$28087_$_t_bytes32_$returns$__$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,int8,enum IWitPriceFeedsTypes.Mappers,bytes32)"
                      }
                    },
                    "id": 23327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14218:104:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23328,
                  "nodeType": "ExpressionStatement",
                  "src": "14218:104:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23330,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23222,
                        "src": "14456:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23329,
                      "name": "getPriceUnsafe",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22978,
                      "src": "14441:14:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_Price_$28105_memory_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct IWitPriceFeedsTypes.Price memory)"
                      }
                    },
                    "id": 23331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14441:19:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price memory"
                    }
                  },
                  "id": 23332,
                  "nodeType": "ExpressionStatement",
                  "src": "14441:19:61"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 23333,
                      "name": "settlePriceFeedFootprint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23176,
                      "src": "14544:24:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes4_$",
                        "typeString": "function () returns (bytes4)"
                      }
                    },
                    "id": 23334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14544:26:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 23190,
                  "id": 23335,
                  "nodeType": "Return",
                  "src": "14537:33:61"
                }
              ]
            },
            "functionSelector": "01d63b7f",
            "id": 23337,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePriceFeedMapper",
            "nameLocation": "13017:21:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23178,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "13069:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23337,
                  "src": "13053:22:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23177,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13053:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23180,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "13095:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23337,
                  "src": "13090:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 23179,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "13090:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23183,
                  "mutability": "mutable",
                  "name": "mapper",
                  "nameLocation": "13146:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23337,
                  "src": "13118:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Mappers_$28087",
                    "typeString": "enum IWitPriceFeedsTypes.Mappers"
                  },
                  "typeName": {
                    "id": 23182,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23181,
                      "name": "IWitPriceFeedsTypes.Mappers",
                      "nameLocations": [
                        "13118:19:61",
                        "13138:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28087,
                      "src": "13118:27:61"
                    },
                    "referencedDeclaration": 28087,
                    "src": "13118:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23186,
                  "mutability": "mutable",
                  "name": "mapperDeps",
                  "nameLocation": "13185:10:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23337,
                  "src": "13167:28:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 23184,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "13167:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 23185,
                    "nodeType": "ArrayTypeName",
                    "src": "13167:8:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13038:168:61"
            },
            "returnParameters": {
              "id": 23190,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23189,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23337,
                  "src": "13241:6:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 23188,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "13241:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13240:8:61"
            },
            "scope": 25111,
            "src": "13008:1570:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23429,
              "nodeType": "Block",
              "src": "14861:861:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 23364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 23356,
                                "name": "oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23344,
                                "src": "14900:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              ],
                              "id": 23355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14894:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23354,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "14894:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14894:13:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "expression": {
                                    "id": 23360,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "14917:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 23361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "14937:7:61",
                                  "memberName": "Oracles",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28092,
                                  "src": "14917:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                    "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                                  }
                                },
                                "id": 23362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "14945:6:61",
                                "memberName": "Witnet",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28088,
                                "src": "14917:34:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              ],
                              "id": 23359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14911:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23358,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "14911:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14911:41:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "14894:58:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 23375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 23367,
                                "name": "oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23344,
                                "src": "14979:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              ],
                              "id": 23366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14973:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23365,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "14973:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14973:13:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "expression": {
                                    "id": 23371,
                                    "name": "IWitPriceFeedsTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28156,
                                    "src": "14996:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                      "typeString": "type(contract IWitPriceFeedsTypes)"
                                    }
                                  },
                                  "id": 23372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "15016:7:61",
                                  "memberName": "Oracles",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 28092,
                                  "src": "14996:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                    "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                                  }
                                },
                                "id": 23373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "15024:4:61",
                                "memberName": "Pyth",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28091,
                                "src": "14996:32:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Oracles_$28092",
                                  "typeString": "enum IWitPriceFeedsTypes.Oracles"
                                }
                              ],
                              "id": 23370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14990:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 23369,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "14990:5:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14990:39:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "14973:56:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14894:135:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e76616c6964206f7261636c65",
                        "id": 23377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15045:16:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cb2d1e9dfd97eaf95f99d74a04eb502b6404ea235ae0f509d4ba6dee55f4818b",
                          "typeString": "literal_string \"invalid oracle\""
                        },
                        "value": "invalid oracle"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cb2d1e9dfd97eaf95f99d74a04eb502b6404ea235ae0f509d4ba6dee55f4818b",
                          "typeString": "literal_string \"invalid oracle\""
                        }
                      ],
                      "id": 23353,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "14872:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14872:200:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23379,
                  "nodeType": "ExpressionStatement",
                  "src": "14872:200:61"
                },
                {
                  "assignments": [
                    23384
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23384,
                      "mutability": "mutable",
                      "name": "id4",
                      "nameLocation": "15107:3:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23429,
                      "src": "15083:27:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      },
                      "typeName": {
                        "id": 23383,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23382,
                          "name": "IWitPriceFeedsTypes.ID4",
                          "nameLocations": [
                            "15083:19:61",
                            "15103:3:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28155,
                          "src": "15083:23:61"
                        },
                        "referencedDeclaration": 28155,
                        "src": "15083:23:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23388,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23386,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23339,
                        "src": "15136:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 23385,
                      "name": "_settlePriceFeedSymbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25110,
                      "src": "15113:22:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                        "typeString": "function (string calldata) returns (IWitPriceFeedsTypes.ID4)"
                      }
                    },
                    "id": 23387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15113:30:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15083:60:61"
                },
                {
                  "assignments": [
                    23391
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23391,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "15172:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23429,
                      "src": "15154:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 23390,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23389,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "15154:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "15154:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "15154:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23395,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23393,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23384,
                        "src": "15197:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23392,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "15183:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 23394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15183:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15154:47:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "15220:19:61",
                        "subExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 23397,
                              "name": "__record",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23391,
                              "src": "15221:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 23398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15230:7:61",
                            "memberName": "settled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24632,
                            "src": "15221:16:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                              "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                            }
                          },
                          "id": 23399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15221:18:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "616c726561647920736574746c6564",
                        "id": 23401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15241:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        },
                        "value": "already settled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        }
                      ],
                      "id": 23396,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "15212:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15212:47:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23403,
                  "nodeType": "ExpressionStatement",
                  "src": "15212:47:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "expression": {
                              "id": 23405,
                              "name": "oracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23346,
                              "src": "15278:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 23406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15292:4:61",
                            "memberName": "code",
                            "nodeType": "MemberAccess",
                            "src": "15278:18:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 23407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "15297:6:61",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "15278:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 23408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15306:1:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "15278:29:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e6578697374656e74206f7261636c65",
                        "id": 23410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15309:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d97ee9cf70a0496c37c6020840166f28209ce380fdefd014c0b530be764538a6",
                          "typeString": "literal_string \"inexistent oracle\""
                        },
                        "value": "inexistent oracle"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d97ee9cf70a0496c37c6020840166f28209ce380fdefd014c0b530be764538a6",
                          "typeString": "literal_string \"inexistent oracle\""
                        }
                      ],
                      "id": 23404,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "15270:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15270:59:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23412,
                  "nodeType": "ExpressionStatement",
                  "src": "15270:59:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23416,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23341,
                        "src": "15376:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "id": 23417,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23344,
                        "src": "15399:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      {
                        "id": 23418,
                        "name": "oracleAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23346,
                        "src": "15420:13:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 23419,
                        "name": "oracleSources",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23348,
                        "src": "15448:13:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 23413,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23391,
                        "src": "15340:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 23415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15349:12:61",
                      "memberName": "settleOracle",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24720,
                      "src": "15340:21:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_int8_$_t_enum$_Oracles_$28092_$_t_address_$_t_bytes32_$returns$__$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,int8,enum IWitPriceFeedsTypes.Oracles,address,bytes32)"
                      }
                    },
                    "id": 23420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15340:132:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23421,
                  "nodeType": "ExpressionStatement",
                  "src": "15340:132:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23423,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23384,
                        "src": "15600:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23422,
                      "name": "getPriceUnsafe",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22978,
                      "src": "15585:14:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_Price_$28105_memory_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct IWitPriceFeedsTypes.Price memory)"
                      }
                    },
                    "id": 23424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15585:19:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price memory"
                    }
                  },
                  "id": 23425,
                  "nodeType": "ExpressionStatement",
                  "src": "15585:19:61"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 23426,
                      "name": "settlePriceFeedFootprint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23176,
                      "src": "15688:24:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes4_$",
                        "typeString": "function () returns (bytes4)"
                      }
                    },
                    "id": 23427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15688:26:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 23352,
                  "id": 23428,
                  "nodeType": "Return",
                  "src": "15681:33:61"
                }
              ]
            },
            "functionSelector": "ff0e1724",
            "id": 23430,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePriceFeedOracle",
            "nameLocation": "14595:21:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23339,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "14647:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23430,
                  "src": "14631:22:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23338,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14631:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23341,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "14673:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23430,
                  "src": "14668:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 23340,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "14668:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23344,
                  "mutability": "mutable",
                  "name": "oracle",
                  "nameLocation": "14724:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23430,
                  "src": "14696:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Oracles_$28092",
                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                  },
                  "typeName": {
                    "id": 23343,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23342,
                      "name": "IWitPriceFeedsTypes.Oracles",
                      "nameLocations": [
                        "14696:19:61",
                        "14716:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28092,
                      "src": "14696:27:61"
                    },
                    "referencedDeclaration": 28092,
                    "src": "14696:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23346,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "14753:13:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23430,
                  "src": "14745:21:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23345,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14745:7:61",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23348,
                  "mutability": "mutable",
                  "name": "oracleSources",
                  "nameLocation": "14789:13:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23430,
                  "src": "14781:21:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23347,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14781:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14616:197:61"
            },
            "returnParameters": {
              "id": 23352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23351,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23430,
                  "src": "14848:6:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 23350,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "14848:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14847:8:61"
            },
            "scope": 25111,
            "src": "14586:1136:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23506,
              "nodeType": "Block",
              "src": "16021:507:61",
              "statements": [
                {
                  "assignments": [
                    23451
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23451,
                      "mutability": "mutable",
                      "name": "id4",
                      "nameLocation": "16056:3:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23506,
                      "src": "16032:27:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      },
                      "typeName": {
                        "id": 23450,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23449,
                          "name": "IWitPriceFeedsTypes.ID4",
                          "nameLocations": [
                            "16032:19:61",
                            "16052:3:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28155,
                          "src": "16032:23:61"
                        },
                        "referencedDeclaration": 28155,
                        "src": "16032:23:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23455,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23453,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23432,
                        "src": "16085:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 23452,
                      "name": "_settlePriceFeedSymbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25110,
                      "src": "16062:22:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                        "typeString": "function (string calldata) returns (IWitPriceFeedsTypes.ID4)"
                      }
                    },
                    "id": 23454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16062:30:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16032:60:61"
                },
                {
                  "assignments": [
                    23458
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23458,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "16121:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23506,
                      "src": "16103:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 23457,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23456,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "16103:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "16103:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "16103:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23462,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23460,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23451,
                        "src": "16146:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23459,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "16132:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 23461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16132:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16103:47:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 23466,
                              "name": "registry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23439,
                              "src": "16177:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                                "typeString": "contract IWitOracleRadonRegistry"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                                "typeString": "contract IWitOracleRadonRegistry"
                              }
                            ],
                            "id": 23465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16169:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 23464,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16169:7:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16169:17:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 23470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16198:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 23469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16190:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 23468,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16190:7:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16190:10:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "16169:31:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6e6f207261646f6e207265676973747279",
                        "id": 23473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16202:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_18e60ef26cca66661097989f5663d0ff1ec5851de7f73febcc41138e594a33bb",
                          "typeString": "literal_string \"no radon registry\""
                        },
                        "value": "no radon registry"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_18e60ef26cca66661097989f5663d0ff1ec5851de7f73febcc41138e594a33bb",
                          "typeString": "literal_string \"no radon registry\""
                        }
                      ],
                      "id": 23463,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "16161:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16161:61:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23475,
                  "nodeType": "ExpressionStatement",
                  "src": "16161:61:61"
                },
                {
                  "expression": {
                    "id": 23481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23476,
                      "name": "_radonHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23445,
                      "src": "16233:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                        "typeString": "Witnet.RadonHash"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 23479,
                          "name": "radonBytecode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23434,
                          "src": "16262:13:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        ],
                        "expression": {
                          "id": 23477,
                          "name": "registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23439,
                          "src": "16246:8:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                            "typeString": "contract IWitOracleRadonRegistry"
                          }
                        },
                        "id": 23478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "16255:6:61",
                        "memberName": "hashOf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27160,
                        "src": "16246:15:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_userDefinedValueType$_RadonHash_$37153_$",
                          "typeString": "function (bytes memory) view external returns (Witnet.RadonHash)"
                        }
                      },
                      "id": 23480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16246:30:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                        "typeString": "Witnet.RadonHash"
                      }
                    },
                    "src": "16233:43:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                      "typeString": "Witnet.RadonHash"
                    }
                  },
                  "id": 23482,
                  "nodeType": "ExpressionStatement",
                  "src": "16233:43:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23486,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23436,
                        "src": "16323:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 23487,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "16347:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 23488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "16367:7:61",
                          "memberName": "Oracles",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28092,
                          "src": "16347:27:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                            "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                          }
                        },
                        "id": 23489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "16375:6:61",
                        "memberName": "Witnet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28088,
                        "src": "16347:34:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 23492,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "16404:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WitPriceFeedsDataLib_$25111",
                              "typeString": "library WitPriceFeedsDataLib"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_WitPriceFeedsDataLib_$25111",
                              "typeString": "library WitPriceFeedsDataLib"
                            }
                          ],
                          "id": 23491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "16396:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 23490,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16396:7:61",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 23493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16396:13:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 23497,
                            "name": "_radonHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23445,
                            "src": "16448:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            }
                          ],
                          "expression": {
                            "expression": {
                              "id": 23494,
                              "name": "Witnet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40741,
                              "src": "16424:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                "typeString": "type(library Witnet)"
                              }
                            },
                            "id": 23495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "16431:9:61",
                            "memberName": "RadonHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 37153,
                            "src": "16424:16:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_RadonHash_$37153_$",
                              "typeString": "type(Witnet.RadonHash)"
                            }
                          },
                          "id": 23496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16441:6:61",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "16424:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_RadonHash_$37153_$returns$_t_bytes32_$",
                            "typeString": "function (Witnet.RadonHash) pure returns (bytes32)"
                          }
                        },
                        "id": 23498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16424:35:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 23483,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23458,
                        "src": "16287:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 23485,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16296:12:61",
                      "memberName": "settleOracle",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24720,
                      "src": "16287:21:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_int8_$_t_enum$_Oracles_$28092_$_t_address_$_t_bytes32_$returns$__$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,int8,enum IWitPriceFeedsTypes.Oracles,address,bytes32)"
                      }
                    },
                    "id": 23499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16287:183:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23500,
                  "nodeType": "ExpressionStatement",
                  "src": "16287:183:61"
                },
                {
                  "expression": {
                    "id": 23504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23501,
                      "name": "_footprint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23442,
                      "src": "16481:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 23502,
                        "name": "settlePriceFeedFootprint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23176,
                        "src": "16494:24:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes4_$",
                          "typeString": "function () returns (bytes4)"
                        }
                      },
                      "id": 23503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16494:26:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "16481:39:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 23505,
                  "nodeType": "ExpressionStatement",
                  "src": "16481:39:61"
                }
              ]
            },
            "functionSelector": "0873d81d",
            "id": 23507,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePriceFeedRadonBytecode",
            "nameLocation": "15739:28:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23432,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "15798:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23507,
                  "src": "15782:22:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23431,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15782:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23434,
                  "mutability": "mutable",
                  "name": "radonBytecode",
                  "nameLocation": "15834:13:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23507,
                  "src": "15819:28:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23433,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15819:5:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23436,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "15867:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23507,
                  "src": "15862:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 23435,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "15862:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23439,
                  "mutability": "mutable",
                  "name": "registry",
                  "nameLocation": "15914:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23507,
                  "src": "15890:32:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                    "typeString": "contract IWitOracleRadonRegistry"
                  },
                  "typeName": {
                    "id": 23438,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23437,
                      "name": "IWitOracleRadonRegistry",
                      "nameLocations": [
                        "15890:23:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27394,
                      "src": "15890:23:61"
                    },
                    "referencedDeclaration": 27394,
                    "src": "15890:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                      "typeString": "contract IWitOracleRadonRegistry"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15767:166:61"
            },
            "returnParameters": {
              "id": 23446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23442,
                  "mutability": "mutable",
                  "name": "_footprint",
                  "nameLocation": "15975:10:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23507,
                  "src": "15968:17:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 23441,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "15968:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23445,
                  "mutability": "mutable",
                  "name": "_radonHash",
                  "nameLocation": "16004:10:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23507,
                  "src": "15987:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                    "typeString": "Witnet.RadonHash"
                  },
                  "typeName": {
                    "id": 23444,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23443,
                      "name": "Witnet.RadonHash",
                      "nameLocations": [
                        "15987:6:61",
                        "15994:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37153,
                      "src": "15987:16:61"
                    },
                    "referencedDeclaration": 37153,
                    "src": "15987:16:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                      "typeString": "Witnet.RadonHash"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15967:48:61"
            },
            "scope": 25111,
            "src": "15730:798:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23580,
              "nodeType": "Block",
              "src": "16781:530:61",
              "statements": [
                {
                  "assignments": [
                    23526
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23526,
                      "mutability": "mutable",
                      "name": "id4",
                      "nameLocation": "16816:3:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23580,
                      "src": "16792:27:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      },
                      "typeName": {
                        "id": 23525,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23524,
                          "name": "IWitPriceFeedsTypes.ID4",
                          "nameLocations": [
                            "16792:19:61",
                            "16812:3:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28155,
                          "src": "16792:23:61"
                        },
                        "referencedDeclaration": 28155,
                        "src": "16792:23:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23530,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23528,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23509,
                        "src": "16845:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 23527,
                      "name": "_settlePriceFeedSymbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25110,
                      "src": "16822:22:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                        "typeString": "function (string calldata) returns (IWitPriceFeedsTypes.ID4)"
                      }
                    },
                    "id": 23529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16822:30:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16792:60:61"
                },
                {
                  "assignments": [
                    23533
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23533,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "16881:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23580,
                      "src": "16863:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 23532,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23531,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "16863:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "16863:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "16863:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23537,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23535,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23526,
                        "src": "16906:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23534,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "16892:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 23536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16892:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16863:47:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 23541,
                              "name": "registry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23517,
                              "src": "16937:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                                "typeString": "contract IWitOracleRadonRegistry"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                                "typeString": "contract IWitOracleRadonRegistry"
                              }
                            ],
                            "id": 23540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16929:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 23539,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16929:7:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16929:17:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 23545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16958:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 23544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16950:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 23543,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16950:7:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16950:10:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "16929:31:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6e6f207261646f6e207265676973747279",
                        "id": 23548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16962:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_18e60ef26cca66661097989f5663d0ff1ec5851de7f73febcc41138e594a33bb",
                          "typeString": "literal_string \"no radon registry\""
                        },
                        "value": "no radon registry"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_18e60ef26cca66661097989f5663d0ff1ec5851de7f73febcc41138e594a33bb",
                          "typeString": "literal_string \"no radon registry\""
                        }
                      ],
                      "id": 23538,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "16921:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16921:61:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23550,
                  "nodeType": "ExpressionStatement",
                  "src": "16921:61:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 23554,
                            "name": "radonHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23512,
                            "src": "17033:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            }
                          ],
                          "expression": {
                            "id": 23552,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23517,
                            "src": "17001:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                              "typeString": "contract IWitOracleRadonRegistry"
                            }
                          },
                          "id": 23553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17010:22:61",
                          "memberName": "isVerifiedRadonRequest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 27177,
                          "src": "17001:31:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_userDefinedValueType$_RadonHash_$37153_$returns$_t_bool_$",
                            "typeString": "function (Witnet.RadonHash) view external returns (bool)"
                          }
                        },
                        "id": 23555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17001:42:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "756e766572696669656420736f7572636573",
                        "id": 23556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17045:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b9418adec3fa89f842fd7f5eb0cf657b751f377eea010103b105c79d396fe8aa",
                          "typeString": "literal_string \"unverified sources\""
                        },
                        "value": "unverified sources"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b9418adec3fa89f842fd7f5eb0cf657b751f377eea010103b105c79d396fe8aa",
                          "typeString": "literal_string \"unverified sources\""
                        }
                      ],
                      "id": 23551,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "16993:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16993:73:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23558,
                  "nodeType": "ExpressionStatement",
                  "src": "16993:73:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23562,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23514,
                        "src": "17113:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 23563,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "17137:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 23564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17157:7:61",
                          "memberName": "Oracles",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28092,
                          "src": "17137:27:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                            "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                          }
                        },
                        "id": 23565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "17165:6:61",
                        "memberName": "Witnet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28088,
                        "src": "17137:34:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 23568,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "17194:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WitPriceFeedsDataLib_$25111",
                              "typeString": "library WitPriceFeedsDataLib"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_WitPriceFeedsDataLib_$25111",
                              "typeString": "library WitPriceFeedsDataLib"
                            }
                          ],
                          "id": 23567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "17186:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 23566,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17186:7:61",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 23569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17186:13:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 23573,
                            "name": "radonHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23512,
                            "src": "17238:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                              "typeString": "Witnet.RadonHash"
                            }
                          ],
                          "expression": {
                            "expression": {
                              "id": 23570,
                              "name": "Witnet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40741,
                              "src": "17214:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                "typeString": "type(library Witnet)"
                              }
                            },
                            "id": 23571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "17221:9:61",
                            "memberName": "RadonHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 37153,
                            "src": "17214:16:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_RadonHash_$37153_$",
                              "typeString": "type(Witnet.RadonHash)"
                            }
                          },
                          "id": 23572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17231:6:61",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "17214:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_RadonHash_$37153_$returns$_t_bytes32_$",
                            "typeString": "function (Witnet.RadonHash) pure returns (bytes32)"
                          }
                        },
                        "id": 23574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17214:34:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 23559,
                        "name": "__record",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23533,
                        "src": "17077:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 23561,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17086:12:61",
                      "memberName": "settleOracle",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24720,
                      "src": "17077:21:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_int8_$_t_enum$_Oracles_$28092_$_t_address_$_t_bytes32_$returns$__$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,int8,enum IWitPriceFeedsTypes.Oracles,address,bytes32)"
                      }
                    },
                    "id": 23575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17077:182:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23576,
                  "nodeType": "ExpressionStatement",
                  "src": "17077:182:61"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 23577,
                      "name": "settlePriceFeedFootprint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23176,
                      "src": "17277:24:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes4_$",
                        "typeString": "function () returns (bytes4)"
                      }
                    },
                    "id": 23578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17277:26:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 23521,
                  "id": 23579,
                  "nodeType": "Return",
                  "src": "17270:33:61"
                }
              ]
            },
            "functionSelector": "ef0bf0a0",
            "id": 23581,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePriceFeedRadonHash",
            "nameLocation": "16545:24:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23518,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23509,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "16600:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23581,
                  "src": "16584:22:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23508,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16584:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23512,
                  "mutability": "mutable",
                  "name": "radonHash",
                  "nameLocation": "16638:9:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23581,
                  "src": "16621:26:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                    "typeString": "Witnet.RadonHash"
                  },
                  "typeName": {
                    "id": 23511,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23510,
                      "name": "Witnet.RadonHash",
                      "nameLocations": [
                        "16621:6:61",
                        "16628:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37153,
                      "src": "16621:16:61"
                    },
                    "referencedDeclaration": 37153,
                    "src": "16621:16:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                      "typeString": "Witnet.RadonHash"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23514,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "16667:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23581,
                  "src": "16662:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 23513,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "16662:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23517,
                  "mutability": "mutable",
                  "name": "registry",
                  "nameLocation": "16714:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23581,
                  "src": "16690:32:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                    "typeString": "contract IWitOracleRadonRegistry"
                  },
                  "typeName": {
                    "id": 23516,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23515,
                      "name": "IWitOracleRadonRegistry",
                      "nameLocations": [
                        "16690:23:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27394,
                      "src": "16690:23:61"
                    },
                    "referencedDeclaration": 27394,
                    "src": "16690:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                      "typeString": "contract IWitOracleRadonRegistry"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16569:164:61"
            },
            "returnParameters": {
              "id": 23521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23520,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23581,
                  "src": "16768:6:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 23519,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "16768:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16767:8:61"
            },
            "scope": 25111,
            "src": "16536:775:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23629,
              "nodeType": "Block",
              "src": "17409:448:61",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    },
                    "id": 23593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 23589,
                      "name": "mapper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23584,
                      "src": "17424:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 23590,
                          "name": "IWitPriceFeedsTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28156,
                          "src": "17434:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                            "typeString": "type(contract IWitPriceFeedsTypes)"
                          }
                        },
                        "id": 23591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "17454:7:61",
                        "memberName": "Mappers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28087,
                        "src": "17434:27:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                          "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                        }
                      },
                      "id": 23592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "17462:4:61",
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28082,
                      "src": "17434:32:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      }
                    },
                    "src": "17424:42:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      },
                      "id": 23601,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 23597,
                        "name": "mapper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23584,
                        "src": "17518:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Mappers_$28087",
                          "typeString": "enum IWitPriceFeedsTypes.Mappers"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "expression": {
                            "id": 23598,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "17528:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 23599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17548:7:61",
                          "memberName": "Mappers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28087,
                          "src": "17528:27:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                            "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                          }
                        },
                        "id": 23600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "17556:7:61",
                        "memberName": "Product",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28085,
                        "src": "17528:35:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Mappers_$28087",
                          "typeString": "enum IWitPriceFeedsTypes.Mappers"
                        }
                      },
                      "src": "17518:45:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_enum$_Mappers_$28087",
                          "typeString": "enum IWitPriceFeedsTypes.Mappers"
                        },
                        "id": 23609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23605,
                          "name": "mapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23584,
                          "src": "17618:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Mappers_$28087",
                            "typeString": "enum IWitPriceFeedsTypes.Mappers"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "expression": {
                              "id": 23606,
                              "name": "IWitPriceFeedsTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28156,
                              "src": "17628:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                "typeString": "type(contract IWitPriceFeedsTypes)"
                              }
                            },
                            "id": 23607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "17648:7:61",
                            "memberName": "Mappers",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28087,
                            "src": "17628:27:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                              "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                            }
                          },
                          "id": 23608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17656:8:61",
                          "memberName": "Fallback",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28083,
                          "src": "17628:36:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Mappers_$28087",
                            "typeString": "enum IWitPriceFeedsTypes.Mappers"
                          }
                        },
                        "src": "17618:46:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Mappers_$28087",
                            "typeString": "enum IWitPriceFeedsTypes.Mappers"
                          },
                          "id": 23617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 23613,
                            "name": "mapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23584,
                            "src": "17720:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Mappers_$28087",
                              "typeString": "enum IWitPriceFeedsTypes.Mappers"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 23614,
                                "name": "IWitPriceFeedsTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28156,
                                "src": "17730:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                  "typeString": "type(contract IWitPriceFeedsTypes)"
                                }
                              },
                              "id": 23615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "17750:7:61",
                              "memberName": "Mappers",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28087,
                              "src": "17730:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                              }
                            },
                            "id": 23616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "17758:7:61",
                            "memberName": "Hottest",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28084,
                            "src": "17730:35:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Mappers_$28087",
                              "typeString": "enum IWitPriceFeedsTypes.Mappers"
                            }
                          },
                          "src": "17720:45:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23621,
                        "nodeType": "IfStatement",
                        "src": "17716:94:61",
                        "trueBody": {
                          "id": 23620,
                          "nodeType": "Block",
                          "src": "17767:43:61",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "486f7474657374",
                                "id": 23618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17789:9:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_1b5685527d91506a6f02837124f3a02c0863d4af82f3553c0ea469b5213d8191",
                                  "typeString": "literal_string \"Hottest\""
                                },
                                "value": "Hottest"
                              },
                              "functionReturnParameters": 23588,
                              "id": 23619,
                              "nodeType": "Return",
                              "src": "17782:16:61"
                            }
                          ]
                        }
                      },
                      "id": 23622,
                      "nodeType": "IfStatement",
                      "src": "17614:196:61",
                      "trueBody": {
                        "id": 23612,
                        "nodeType": "Block",
                        "src": "17666:44:61",
                        "statements": [
                          {
                            "expression": {
                              "hexValue": "46616c6c6261636b",
                              "id": 23610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17688:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90fff1b95d91c9dd7f18759be2225418179358d35db301dd4eb5c6ee02647831",
                                "typeString": "literal_string \"Fallback\""
                              },
                              "value": "Fallback"
                            },
                            "functionReturnParameters": 23588,
                            "id": 23611,
                            "nodeType": "Return",
                            "src": "17681:17:61"
                          }
                        ]
                      }
                    },
                    "id": 23623,
                    "nodeType": "IfStatement",
                    "src": "17514:296:61",
                    "trueBody": {
                      "id": 23604,
                      "nodeType": "Block",
                      "src": "17565:43:61",
                      "statements": [
                        {
                          "expression": {
                            "hexValue": "50726f64756374",
                            "id": 23602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17587:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_636a254cf0d56cf973f185d72dcfa67a2f3f56ec49e031d7b006270b06928e64",
                              "typeString": "literal_string \"Product\""
                            },
                            "value": "Product"
                          },
                          "functionReturnParameters": 23588,
                          "id": 23603,
                          "nodeType": "Return",
                          "src": "17580:16:61"
                        }
                      ]
                    }
                  },
                  "id": 23624,
                  "nodeType": "IfStatement",
                  "src": "17420:390:61",
                  "trueBody": {
                    "id": 23596,
                    "nodeType": "Block",
                    "src": "17468:40:61",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "4e6f6e65",
                          "id": 23594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17490:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8dfce459feaf97691d19cf3eb6893df6359803fdb7503df5d8cce17ab890999d",
                            "typeString": "literal_string \"None\""
                          },
                          "value": "None"
                        },
                        "functionReturnParameters": 23588,
                        "id": 23595,
                        "nodeType": "Return",
                        "src": "17483:13:61"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "756e737570706f72746564206d6170706572",
                        "id": 23626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17828:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1caff6482b63152caefd54878b217104d88adfadcad6fcc48a323fbc0ee4e270",
                          "typeString": "literal_string \"unsupported mapper\""
                        },
                        "value": "unsupported mapper"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_1caff6482b63152caefd54878b217104d88adfadcad6fcc48a323fbc0ee4e270",
                          "typeString": "literal_string \"unsupported mapper\""
                        }
                      ],
                      "id": 23625,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967277,
                        4294967277
                      ],
                      "referencedDeclaration": 4294967277,
                      "src": "17821:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 23627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17821:28:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23628,
                  "nodeType": "ExpressionStatement",
                  "src": "17821:28:61"
                }
              ]
            },
            "functionSelector": "5e34a7bb",
            "id": 23630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toString",
            "nameLocation": "17328:8:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23584,
                  "mutability": "mutable",
                  "name": "mapper",
                  "nameLocation": "17365:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23630,
                  "src": "17337:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Mappers_$28087",
                    "typeString": "enum IWitPriceFeedsTypes.Mappers"
                  },
                  "typeName": {
                    "id": 23583,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23582,
                      "name": "IWitPriceFeedsTypes.Mappers",
                      "nameLocations": [
                        "17337:19:61",
                        "17357:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28087,
                      "src": "17337:27:61"
                    },
                    "referencedDeclaration": 28087,
                    "src": "17337:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17336:36:61"
            },
            "returnParameters": {
              "id": 23588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23587,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23630,
                  "src": "17394:13:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23586,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17394:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17393:15:61"
            },
            "scope": 25111,
            "src": "17319:538:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23678,
              "nodeType": "Block",
              "src": "17955:468:61",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    },
                    "id": 23642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 23638,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23633,
                      "src": "17970:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 23639,
                          "name": "IWitPriceFeedsTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28156,
                          "src": "17980:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                            "typeString": "type(contract IWitPriceFeedsTypes)"
                          }
                        },
                        "id": 23640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18000:7:61",
                        "memberName": "Oracles",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28092,
                        "src": "17980:27:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                          "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                        }
                      },
                      "id": 23641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "18008:6:61",
                      "memberName": "Witnet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28088,
                      "src": "17980:34:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      }
                    },
                    "src": "17970:44:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      },
                      "id": 23650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 23646,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23633,
                        "src": "18072:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "expression": {
                            "id": 23647,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "18082:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 23648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "18102:7:61",
                          "memberName": "Oracles",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28092,
                          "src": "18082:27:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                            "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                          }
                        },
                        "id": 23649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "18110:7:61",
                        "memberName": "ERC2362",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28089,
                        "src": "18082:35:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      "src": "18072:45:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        },
                        "id": 23658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23654,
                          "name": "oracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23633,
                          "src": "18176:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "expression": {
                              "id": 23655,
                              "name": "IWitPriceFeedsTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28156,
                              "src": "18186:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                "typeString": "type(contract IWitPriceFeedsTypes)"
                              }
                            },
                            "id": 23656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "18206:7:61",
                            "memberName": "Oracles",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28092,
                            "src": "18186:27:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                              "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                            }
                          },
                          "id": 23657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18214:9:61",
                          "memberName": "Chainlink",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28090,
                          "src": "18186:37:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          }
                        },
                        "src": "18176:47:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          },
                          "id": 23666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 23662,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23633,
                            "src": "18292:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 23663,
                                "name": "IWitPriceFeedsTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28156,
                                "src": "18302:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                  "typeString": "type(contract IWitPriceFeedsTypes)"
                                }
                              },
                              "id": 23664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "18322:7:61",
                              "memberName": "Oracles",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28092,
                              "src": "18302:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                              }
                            },
                            "id": 23665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "18330:4:61",
                            "memberName": "Pyth",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28091,
                            "src": "18302:32:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            }
                          },
                          "src": "18292:42:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23670,
                        "nodeType": "IfStatement",
                        "src": "18288:89:61",
                        "trueBody": {
                          "id": 23669,
                          "nodeType": "Block",
                          "src": "18336:41:61",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "4950797468",
                                "id": 23667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18358:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_7bd0ce001824eea9b084f206c9f6556821199f9e1598ea444d079d8a13eabb94",
                                  "typeString": "literal_string \"IPyth\""
                                },
                                "value": "IPyth"
                              },
                              "functionReturnParameters": 23637,
                              "id": 23668,
                              "nodeType": "Return",
                              "src": "18351:14:61"
                            }
                          ]
                        }
                      },
                      "id": 23671,
                      "nodeType": "IfStatement",
                      "src": "18172:205:61",
                      "trueBody": {
                        "id": 23661,
                        "nodeType": "Block",
                        "src": "18225:57:61",
                        "statements": [
                          {
                            "expression": {
                              "hexValue": "436861696e6c696e6b41676772656761746f725633",
                              "id": 23659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18247:23:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a34cdead59116970357f23a4f1bac122494da7d76213092d6fb36cd30f66b507",
                                "typeString": "literal_string \"ChainlinkAggregatorV3\""
                              },
                              "value": "ChainlinkAggregatorV3"
                            },
                            "functionReturnParameters": 23637,
                            "id": 23660,
                            "nodeType": "Return",
                            "src": "18240:30:61"
                          }
                        ]
                      }
                    },
                    "id": 23672,
                    "nodeType": "IfStatement",
                    "src": "18068:309:61",
                    "trueBody": {
                      "id": 23653,
                      "nodeType": "Block",
                      "src": "18119:47:61",
                      "statements": [
                        {
                          "expression": {
                            "hexValue": "41444f2f45524332333632",
                            "id": 23651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18141:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fc2817c8dfd99ec1b9c75ddcea41b6d7cefed1af8db5959a2f15270fda6bd311",
                              "typeString": "literal_string \"ADO/ERC2362\""
                            },
                            "value": "ADO/ERC2362"
                          },
                          "functionReturnParameters": 23637,
                          "id": 23652,
                          "nodeType": "Return",
                          "src": "18134:20:61"
                        }
                      ]
                    }
                  },
                  "id": 23673,
                  "nodeType": "IfStatement",
                  "src": "17966:411:61",
                  "trueBody": {
                    "id": 23645,
                    "nodeType": "Block",
                    "src": "18016:46:61",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "5769742f4f7261636c65",
                          "id": 23643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18038:12:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_badf124d5053bc01f8fb7399f4a9ae11e63d6ecb6a8181a2db9d73c0b9196e75",
                            "typeString": "literal_string \"Wit/Oracle\""
                          },
                          "value": "Wit/Oracle"
                        },
                        "functionReturnParameters": 23637,
                        "id": 23644,
                        "nodeType": "Return",
                        "src": "18031:19:61"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "756e737570706f72746564206f7261636c65",
                        "id": 23675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18394:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f30ababf750e10f193dd18fcf701efc6a2350e853cd574d27cf4488fa0a72c5a",
                          "typeString": "literal_string \"unsupported oracle\""
                        },
                        "value": "unsupported oracle"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_f30ababf750e10f193dd18fcf701efc6a2350e853cd574d27cf4488fa0a72c5a",
                          "typeString": "literal_string \"unsupported oracle\""
                        }
                      ],
                      "id": 23674,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967277,
                        4294967277
                      ],
                      "referencedDeclaration": 4294967277,
                      "src": "18387:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 23676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18387:28:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23677,
                  "nodeType": "ExpressionStatement",
                  "src": "18387:28:61"
                }
              ]
            },
            "functionSelector": "10b999a3",
            "id": 23679,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toString",
            "nameLocation": "17874:8:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23633,
                  "mutability": "mutable",
                  "name": "oracle",
                  "nameLocation": "17911:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23679,
                  "src": "17883:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Oracles_$28092",
                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                  },
                  "typeName": {
                    "id": 23632,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23631,
                      "name": "IWitPriceFeedsTypes.Oracles",
                      "nameLocations": [
                        "17883:19:61",
                        "17903:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28092,
                      "src": "17883:27:61"
                    },
                    "referencedDeclaration": 28092,
                    "src": "17883:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17882:36:61"
            },
            "returnParameters": {
              "id": 23637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23636,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23679,
                  "src": "17940:13:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23635,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17940:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17939:15:61"
            },
            "scope": 25111,
            "src": "17865:558:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23751,
              "nodeType": "Block",
              "src": "18843:752:61",
              "statements": [
                {
                  "assignments": [
                    23692
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23692,
                      "mutability": "mutable",
                      "name": "__default",
                      "nameLocation": "18899:9:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23751,
                      "src": "18854:54:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                        "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                      },
                      "typeName": {
                        "id": 23691,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23690,
                          "name": "IWitPriceFeedsTypes.UpdateConditions",
                          "nameLocations": [
                            "18854:19:61",
                            "18874:16:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28153,
                          "src": "18854:36:61"
                        },
                        "referencedDeclaration": 28153,
                        "src": "18854:36:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                          "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23696,
                  "initialValue": {
                    "expression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 23693,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23835,
                        "src": "18911:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                          "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                        }
                      },
                      "id": 23694,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18911:6:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                      }
                    },
                    "id": 23695,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "18918:23:61",
                    "memberName": "defaultUpdateConditions",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 22331,
                    "src": "18911:30:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18854:87:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 23702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23699,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23682,
                              "src": "19024:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                              }
                            },
                            "id": 23700,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19029:11:61",
                            "memberName": "callbackGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28142,
                            "src": "19024:16:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19044:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19024:21:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23705,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23682,
                            "src": "19072:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23706,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19077:11:61",
                          "memberName": "callbackGas",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28142,
                          "src": "19072:16:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 23707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "19024:64:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23703,
                            "name": "__default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "19048:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23704,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19058:11:61",
                          "memberName": "callbackGas",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28142,
                          "src": "19048:21:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 23708,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23682,
                            "src": "19115:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23709,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19120:10:61",
                          "memberName": "computeEma",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28144,
                          "src": "19115:15:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "expression": {
                            "id": 23710,
                            "name": "__default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "19134:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23711,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19144:10:61",
                          "memberName": "computeEma",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28144,
                          "src": "19134:20:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "19115:39:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 23716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23713,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23682,
                              "src": "19184:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                              }
                            },
                            "id": 23714,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19189:12:61",
                            "memberName": "cooldownSecs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28146,
                            "src": "19184:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19205:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19184:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23719,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23682,
                            "src": "19234:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23720,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19239:12:61",
                          "memberName": "cooldownSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28146,
                          "src": "19234:17:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 23721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "19184:67:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23717,
                            "name": "__default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "19209:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23718,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19219:12:61",
                          "memberName": "cooldownSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28146,
                          "src": "19209:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 23725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23722,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23682,
                              "src": "19281:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                              }
                            },
                            "id": 23723,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19286:13:61",
                            "memberName": "heartbeatSecs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28148,
                            "src": "19281:18:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19303:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19281:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23728,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23682,
                            "src": "19333:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23729,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19338:13:61",
                          "memberName": "heartbeatSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28148,
                          "src": "19333:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 23730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "19281:70:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23726,
                            "name": "__default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "19307:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23727,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19317:13:61",
                          "memberName": "heartbeatSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28148,
                          "src": "19307:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 23734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23731,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23682,
                              "src": "19384:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                              }
                            },
                            "id": 23732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19389:16:61",
                            "memberName": "maxDeviation1000",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28150,
                            "src": "19384:21:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19409:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19384:26:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23737,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23682,
                            "src": "19442:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23738,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19447:16:61",
                          "memberName": "maxDeviation1000",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28150,
                          "src": "19442:21:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 23739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "19384:79:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23735,
                            "name": "__default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "19413:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23736,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19423:16:61",
                          "memberName": "maxDeviation1000",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28150,
                          "src": "19413:26:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 23743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23740,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23682,
                              "src": "19492:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                              }
                            },
                            "id": 23741,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19497:12:61",
                            "memberName": "minWitnesses",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28152,
                            "src": "19492:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19513:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19492:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23746,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23682,
                            "src": "19542:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23747,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19547:12:61",
                          "memberName": "minWitnesses",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28152,
                          "src": "19542:17:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 23748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "19492:67:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23744,
                            "name": "__default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "19517:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                            }
                          },
                          "id": 23745,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19527:12:61",
                          "memberName": "minWitnesses",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28152,
                          "src": "19517:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 23697,
                        "name": "IWitPriceFeedsTypes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28156,
                        "src": "18959:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                          "typeString": "type(contract IWitPriceFeedsTypes)"
                        }
                      },
                      "id": 23698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18979:16:61",
                      "memberName": "UpdateConditions",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28153,
                      "src": "18959:36:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_UpdateConditions_$28153_storage_ptr_$",
                        "typeString": "type(struct IWitPriceFeedsTypes.UpdateConditions storage pointer)"
                      }
                    },
                    "id": 23749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "19011:11:61",
                      "19103:10:61",
                      "19169:12:61",
                      "19266:13:61",
                      "19366:16:61",
                      "19478:12:61"
                    ],
                    "names": [
                      "callbackGas",
                      "computeEma",
                      "cooldownSecs",
                      "heartbeatSecs",
                      "maxDeviation1000",
                      "minWitnesses"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "18959:628:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                    }
                  },
                  "functionReturnParameters": 23687,
                  "id": 23750,
                  "nodeType": "Return",
                  "src": "18952:635:61"
                }
              ]
            },
            "id": 23752,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "coalesce",
            "nameLocation": "18690:8:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23682,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "18744:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23752,
                  "src": "18699:49:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  },
                  "typeName": {
                    "id": 23681,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23680,
                      "name": "IWitPriceFeedsTypes.UpdateConditions",
                      "nameLocations": [
                        "18699:19:61",
                        "18719:16:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28153,
                      "src": "18699:36:61"
                    },
                    "referencedDeclaration": 28153,
                    "src": "18699:36:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18698:51:61"
            },
            "returnParameters": {
              "id": 23687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23686,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23752,
                  "src": "18793:43:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  },
                  "typeName": {
                    "id": 23685,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23684,
                      "name": "IWitPriceFeedsTypes.UpdateConditions",
                      "nameLocations": [
                        "18793:19:61",
                        "18813:16:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28153,
                      "src": "18793:36:61"
                    },
                    "referencedDeclaration": 28153,
                    "src": "18793:36:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18792:45:61"
            },
            "scope": 25111,
            "src": "18681:914:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23825,
              "nodeType": "Block",
              "src": "19856:710:61",
              "statements": [
                {
                  "assignments": [
                    23768
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23768,
                      "mutability": "mutable",
                      "name": "_self",
                      "nameLocation": "19911:5:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23825,
                      "src": "19867:49:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                        "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                      },
                      "typeName": {
                        "id": 23767,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23766,
                          "name": "IWitPriceFeedsTypes.UpdateConditions",
                          "nameLocations": [
                            "19867:19:61",
                            "19887:16:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 28153,
                          "src": "19867:36:61"
                        },
                        "referencedDeclaration": 28153,
                        "src": "19867:36:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                          "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23770,
                  "initialValue": {
                    "id": 23769,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23755,
                    "src": "19919:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19867:56:61"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 23776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23773,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23768,
                              "src": "20006:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                              }
                            },
                            "id": 23774,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20012:11:61",
                            "memberName": "callbackGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28142,
                            "src": "20006:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20027:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20006:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23779,
                            "name": "_self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23768,
                            "src": "20054:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23780,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20060:11:61",
                          "memberName": "callbackGas",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28142,
                          "src": "20054:17:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 23781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "20006:65:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23777,
                            "name": "_default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23758,
                            "src": "20031:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23778,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20040:11:61",
                          "memberName": "callbackGas",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28142,
                          "src": "20031:20:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 23782,
                            "name": "_self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23768,
                            "src": "20098:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23783,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20104:10:61",
                          "memberName": "computeEma",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28144,
                          "src": "20098:16:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "expression": {
                            "id": 23784,
                            "name": "_default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23758,
                            "src": "20118:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23785,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20127:10:61",
                          "memberName": "computeEma",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28144,
                          "src": "20118:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "20098:39:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 23790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23787,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23768,
                              "src": "20167:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                              }
                            },
                            "id": 23788,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20173:12:61",
                            "memberName": "cooldownSecs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28146,
                            "src": "20167:18:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20189:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20167:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23793,
                            "name": "_self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23768,
                            "src": "20217:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23794,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20223:12:61",
                          "memberName": "cooldownSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28146,
                          "src": "20217:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 23795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "20167:68:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23791,
                            "name": "_default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23758,
                            "src": "20193:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23792,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20202:12:61",
                          "memberName": "cooldownSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28146,
                          "src": "20193:21:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 23799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23796,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23768,
                              "src": "20265:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                              }
                            },
                            "id": 23797,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20271:13:61",
                            "memberName": "heartbeatSecs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28148,
                            "src": "20265:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20288:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20265:24:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23802,
                            "name": "_self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23768,
                            "src": "20317:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23803,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20323:13:61",
                          "memberName": "heartbeatSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28148,
                          "src": "20317:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 23804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "20265:71:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23800,
                            "name": "_default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23758,
                            "src": "20292:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23801,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20301:13:61",
                          "memberName": "heartbeatSecs",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28148,
                          "src": "20292:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 23808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23805,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23768,
                              "src": "20369:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                              }
                            },
                            "id": 23806,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20375:16:61",
                            "memberName": "maxDeviation1000",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28150,
                            "src": "20369:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20395:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20369:27:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23811,
                            "name": "_self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23768,
                            "src": "20427:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23812,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20433:16:61",
                          "memberName": "maxDeviation1000",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28150,
                          "src": "20427:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 23813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "20369:80:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23809,
                            "name": "_default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23758,
                            "src": "20399:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23810,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20408:16:61",
                          "memberName": "maxDeviation1000",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28150,
                          "src": "20399:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 23817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23814,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23768,
                              "src": "20478:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                                "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                              }
                            },
                            "id": 23815,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20484:12:61",
                            "memberName": "minWitnesses",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28152,
                            "src": "20478:18:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20500:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20478:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "expression": {
                            "id": 23820,
                            "name": "_self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23768,
                            "src": "20528:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23821,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20534:12:61",
                          "memberName": "minWitnesses",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28152,
                          "src": "20528:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 23822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "20478:68:61",
                        "trueExpression": {
                          "expression": {
                            "id": 23818,
                            "name": "_default",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23758,
                            "src": "20504:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                              "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                            }
                          },
                          "id": 23819,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20513:12:61",
                          "memberName": "minWitnesses",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28152,
                          "src": "20504:21:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 23771,
                        "name": "IWitPriceFeedsTypes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28156,
                        "src": "19941:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                          "typeString": "type(contract IWitPriceFeedsTypes)"
                        }
                      },
                      "id": 23772,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "19961:16:61",
                      "memberName": "UpdateConditions",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28153,
                      "src": "19941:36:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_UpdateConditions_$28153_storage_ptr_$",
                        "typeString": "type(struct IWitPriceFeedsTypes.UpdateConditions storage pointer)"
                      }
                    },
                    "id": 23823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "19993:11:61",
                      "20086:10:61",
                      "20152:12:61",
                      "20250:13:61",
                      "20351:16:61",
                      "20464:12:61"
                    ],
                    "names": [
                      "callbackGas",
                      "computeEma",
                      "cooldownSecs",
                      "heartbeatSecs",
                      "maxDeviation1000",
                      "minWitnesses"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "19941:617:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions memory"
                    }
                  },
                  "functionReturnParameters": 23763,
                  "id": 23824,
                  "nodeType": "Return",
                  "src": "19934:624:61"
                }
              ]
            },
            "id": 23826,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "coalesce",
            "nameLocation": "19612:8:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23759,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23755,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "19680:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23826,
                  "src": "19635:49:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  },
                  "typeName": {
                    "id": 23754,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23753,
                      "name": "IWitPriceFeedsTypes.UpdateConditions",
                      "nameLocations": [
                        "19635:19:61",
                        "19655:16:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28153,
                      "src": "19635:36:61"
                    },
                    "referencedDeclaration": 28153,
                    "src": "19635:36:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23758,
                  "mutability": "mutable",
                  "name": "_default",
                  "nameLocation": "19744:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23826,
                  "src": "19700:52:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  },
                  "typeName": {
                    "id": 23757,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23756,
                      "name": "IWitPriceFeedsTypes.UpdateConditions",
                      "nameLocations": [
                        "19700:19:61",
                        "19720:16:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28153,
                      "src": "19700:36:61"
                    },
                    "referencedDeclaration": 28153,
                    "src": "19700:36:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19620:143:61"
            },
            "returnParameters": {
              "id": 23763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23762,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23826,
                  "src": "19806:43:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  },
                  "typeName": {
                    "id": 23761,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23760,
                      "name": "IWitPriceFeedsTypes.UpdateConditions",
                      "nameLocations": [
                        "19806:19:61",
                        "19826:16:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28153,
                      "src": "19806:36:61"
                    },
                    "referencedDeclaration": 28153,
                    "src": "19806:36:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19805:45:61"
            },
            "scope": 25111,
            "src": "19603:963:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23834,
              "nodeType": "Block",
              "src": "20711:90:61",
              "statements": [
                {
                  "AST": {
                    "nativeSrc": "20731:63:61",
                    "nodeType": "YulBlock",
                    "src": "20731:63:61",
                    "statements": [
                      {
                        "nativeSrc": "20746:37:61",
                        "nodeType": "YulAssignment",
                        "src": "20746:37:61",
                        "value": {
                          "name": "_WIT_FEEDS_DATA_SLOTHASH",
                          "nativeSrc": "20759:24:61",
                          "nodeType": "YulIdentifier",
                          "src": "20759:24:61"
                        },
                        "variableNames": [
                          {
                            "name": "_ptr.slot",
                            "nativeSrc": "20746:9:61",
                            "nodeType": "YulIdentifier",
                            "src": "20746:9:61"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 22305,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "20759:24:61",
                      "valueSize": 1
                    },
                    {
                      "declaration": 23831,
                      "isOffset": false,
                      "isSlot": true,
                      "src": "20746:9:61",
                      "suffix": "slot",
                      "valueSize": 1
                    }
                  ],
                  "id": 23833,
                  "nodeType": "InlineAssembly",
                  "src": "20722:72:61"
                }
              ]
            },
            "documentation": {
              "id": 23827,
              "nodeType": "StructuredDocumentation",
              "src": "20574:70:61",
              "text": "@notice Returns storage pointer to where Storage data is located. "
            },
            "id": 23835,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "data",
            "nameLocation": "20659:4:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23828,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20663:2:61"
            },
            "returnParameters": {
              "id": 23832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23831,
                  "mutability": "mutable",
                  "name": "_ptr",
                  "nameLocation": "20705:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23835,
                  "src": "20689:20:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.Storage"
                  },
                  "typeName": {
                    "id": 23830,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23829,
                      "name": "Storage",
                      "nameLocations": [
                        "20689:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22336,
                      "src": "20689:7:61"
                    },
                    "referencedDeclaration": 22336,
                    "src": "20689:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.Storage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20688:22:61"
            },
            "scope": 25111,
            "src": "20650:151:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23906,
              "nodeType": "Block",
              "src": "21326:577:61",
              "statements": [
                {
                  "assignments": [
                    23847
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23847,
                      "mutability": "mutable",
                      "name": "_solverDepsFlag",
                      "nameLocation": "21345:15:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23906,
                      "src": "21337:23:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 23846,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "21337:7:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23854,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 23848,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23835,
                            "src": "21363:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                              "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                            }
                          },
                          "id": 23849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21363:6:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                          }
                        },
                        "id": 23850,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21370:7:61",
                        "memberName": "records",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22315,
                        "src": "21363:14:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                          "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed storage ref)"
                        }
                      },
                      "id": 23852,
                      "indexExpression": {
                        "id": 23851,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23839,
                        "src": "21378:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "21363:20:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage ref"
                      }
                    },
                    "id": 23853,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "21384:10:61",
                    "memberName": "mapperDeps",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 22386,
                    "src": "21363:31:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21337:57:61"
                },
                {
                  "expression": {
                    "id": 23862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23855,
                      "name": "_deps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23844,
                      "src": "21405:5:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                        "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "38",
                          "id": 23860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21443:1:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 23859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "21413:29:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (IWitPriceFeedsTypes.ID4[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23857,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 23856,
                              "name": "IWitPriceFeedsTypes.ID4",
                              "nameLocations": [
                                "21417:19:61",
                                "21437:3:61"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 28155,
                              "src": "21417:23:61"
                            },
                            "referencedDeclaration": 28155,
                            "src": "21417:23:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                              "typeString": "IWitPriceFeedsTypes.ID4"
                            }
                          },
                          "id": 23858,
                          "nodeType": "ArrayTypeName",
                          "src": "21417:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                            "typeString": "IWitPriceFeedsTypes.ID4[]"
                          }
                        }
                      },
                      "id": 23861,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21413:32:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                        "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                      }
                    },
                    "src": "21405:40:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                    }
                  },
                  "id": 23863,
                  "nodeType": "ExpressionStatement",
                  "src": "21405:40:61"
                },
                {
                  "assignments": [
                    23865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23865,
                      "mutability": "mutable",
                      "name": "_len",
                      "nameLocation": "21461:4:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 23906,
                      "src": "21456:9:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 23864,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21456:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23866,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21456:9:61"
                },
                {
                  "body": {
                    "id": 23903,
                    "nodeType": "Block",
                    "src": "21506:263:61",
                    "statements": [
                      {
                        "assignments": [
                          23876
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23876,
                            "mutability": "mutable",
                            "name": "_id4",
                            "nameLocation": "21528:4:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 23903,
                            "src": "21521:11:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 23875,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "21521:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23881,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 23879,
                              "name": "_solverDepsFlag",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23847,
                              "src": "21542:15:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 23878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "21535:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes4_$",
                              "typeString": "type(bytes4)"
                            },
                            "typeName": {
                              "id": 23877,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "21535:6:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21535:23:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21521:37:61"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 23884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 23882,
                            "name": "_id4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23876,
                            "src": "21577:4:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 23883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21585:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21577:9:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 23901,
                          "nodeType": "Block",
                          "src": "21634:124:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 23895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 23887,
                                    "name": "_deps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23844,
                                    "src": "21653:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                    }
                                  },
                                  "id": 23889,
                                  "indexExpression": {
                                    "id": 23888,
                                    "name": "_len",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23865,
                                    "src": "21659:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21653:11:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 23893,
                                      "name": "_id4",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23876,
                                      "src": "21696:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 23890,
                                        "name": "IWitPriceFeedsTypes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28156,
                                        "src": "21667:19:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                          "typeString": "type(contract IWitPriceFeedsTypes)"
                                        }
                                      },
                                      "id": 23891,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "21687:3:61",
                                      "memberName": "ID4",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 28155,
                                      "src": "21667:23:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                        "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                      }
                                    },
                                    "id": 23892,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "21691:4:61",
                                    "memberName": "wrap",
                                    "nodeType": "MemberAccess",
                                    "src": "21667:28:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                      "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                                    }
                                  },
                                  "id": 23894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21667:34:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                },
                                "src": "21653:48:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                }
                              },
                              "id": 23896,
                              "nodeType": "ExpressionStatement",
                              "src": "21653:48:61"
                            },
                            {
                              "expression": {
                                "id": 23899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 23897,
                                  "name": "_solverDepsFlag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23847,
                                  "src": "21720:15:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "<<=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 23898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21740:2:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "21720:22:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 23900,
                              "nodeType": "ExpressionStatement",
                              "src": "21720:22:61"
                            }
                          ]
                        },
                        "id": 23902,
                        "nodeType": "IfStatement",
                        "src": "21573:185:61",
                        "trueBody": {
                          "id": 23886,
                          "nodeType": "Block",
                          "src": "21588:40:61",
                          "statements": [
                            {
                              "id": 23885,
                              "nodeType": "Break",
                              "src": "21607:5:61"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 23869,
                      "name": "_len",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23865,
                      "src": "21487:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "38",
                      "id": 23870,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21494:1:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "21487:8:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 23904,
                  "initializationExpression": {
                    "expression": {
                      "id": 23867,
                      "name": "_len",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23865,
                      "src": "21481:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 23868,
                    "nodeType": "ExpressionStatement",
                    "src": "21481:4:61"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 23873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "21497:7:61",
                      "subExpression": {
                        "id": 23872,
                        "name": "_len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23865,
                        "src": "21500:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 23874,
                    "nodeType": "ExpressionStatement",
                    "src": "21497:7:61"
                  },
                  "nodeType": "ForStatement",
                  "src": "21476:293:61"
                },
                {
                  "AST": {
                    "nativeSrc": "21788:108:61",
                    "nodeType": "YulBlock",
                    "src": "21788:108:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_deps",
                              "nativeSrc": "21873:5:61",
                              "nodeType": "YulIdentifier",
                              "src": "21873:5:61"
                            },
                            {
                              "name": "_len",
                              "nativeSrc": "21880:4:61",
                              "nodeType": "YulIdentifier",
                              "src": "21880:4:61"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "21866:6:61",
                            "nodeType": "YulIdentifier",
                            "src": "21866:6:61"
                          },
                          "nativeSrc": "21866:19:61",
                          "nodeType": "YulFunctionCall",
                          "src": "21866:19:61"
                        },
                        "nativeSrc": "21866:19:61",
                        "nodeType": "YulExpressionStatement",
                        "src": "21866:19:61"
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 23844,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21873:5:61",
                      "valueSize": 1
                    },
                    {
                      "declaration": 23865,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21880:4:61",
                      "valueSize": 1
                    }
                  ],
                  "id": 23905,
                  "nodeType": "InlineAssembly",
                  "src": "21779:117:61"
                }
              ]
            },
            "documentation": {
              "id": 23836,
              "nodeType": "StructuredDocumentation",
              "src": "20809:404:61",
              "text": "@notice Returns array of price feed ids from which given feed's value depends.\n @dev Returns empty array on either unsupported or not-routed feeds.\n @dev The maximum number of dependencies is hard-limited to 8, as to limit number\n @dev of SSTORE operations (`__storage().records[feedId].solverDepsFlag`), \n @dev no matter the actual number of depending feeds involved."
            },
            "id": 23907,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deps",
            "nameLocation": "21228:4:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23839,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "21257:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23907,
                  "src": "21233:28:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 23838,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23837,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "21233:19:61",
                        "21253:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "21233:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "21233:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21232:30:61"
            },
            "returnParameters": {
              "id": 23845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23844,
                  "mutability": "mutable",
                  "name": "_deps",
                  "nameLocation": "21319:5:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23907,
                  "src": "21286:38:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                    "typeString": "IWitPriceFeedsTypes.ID4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 23842,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 23841,
                        "name": "IWitPriceFeedsTypes.ID4",
                        "nameLocations": [
                          "21286:19:61",
                          "21306:3:61"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 28155,
                        "src": "21286:23:61"
                      },
                      "referencedDeclaration": 28155,
                      "src": "21286:23:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      }
                    },
                    "id": 23843,
                    "nodeType": "ArrayTypeName",
                    "src": "21286:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                      "typeString": "IWitPriceFeedsTypes.ID4[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21285:40:61"
            },
            "scope": 25111,
            "src": "21219:684:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23931,
              "nodeType": "Block",
              "src": "22010:139:61",
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 23928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 23921,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23910,
                              "src": "22074:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 23918,
                                "name": "IWitPriceFeedsTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28156,
                                "src": "22043:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                  "typeString": "type(contract IWitPriceFeedsTypes)"
                                }
                              },
                              "id": 23919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22063:3:61",
                              "memberName": "ID4",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28155,
                              "src": "22043:23:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                "typeString": "type(IWitPriceFeedsTypes.ID4)"
                              }
                            },
                            "id": 23920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "22067:6:61",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "src": "22043:30:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                              "typeString": "function (IWitPriceFeedsTypes.ID4) pure returns (bytes4)"
                            }
                          },
                          "id": 23922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22043:33:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 23926,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23913,
                              "src": "22128:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 23923,
                                "name": "IWitPriceFeedsTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28156,
                                "src": "22097:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                  "typeString": "type(contract IWitPriceFeedsTypes)"
                                }
                              },
                              "id": 23924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22117:3:61",
                              "memberName": "ID4",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28155,
                              "src": "22097:23:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                "typeString": "type(IWitPriceFeedsTypes.ID4)"
                              }
                            },
                            "id": 23925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "22121:6:61",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "src": "22097:30:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                              "typeString": "function (IWitPriceFeedsTypes.ID4) pure returns (bytes4)"
                            }
                          },
                          "id": 23927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22097:33:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "22043:87:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 23929,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "22028:113:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 23917,
                  "id": 23930,
                  "nodeType": "Return",
                  "src": "22021:120:61"
                }
              ]
            },
            "id": 23932,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "equals",
            "nameLocation": "21920:6:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23910,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "21951:1:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23932,
                  "src": "21927:25:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 23909,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23908,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "21927:19:61",
                        "21947:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "21927:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "21927:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23913,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "21978:1:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 23932,
                  "src": "21954:25:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 23912,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23911,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "21954:19:61",
                        "21974:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "21954:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "21954:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21926:54:61"
            },
            "returnParameters": {
              "id": 23917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23916,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23932,
                  "src": "22004:4:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23915,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22004:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22003:6:61"
            },
            "scope": 25111,
            "src": "21911:238:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24293,
              "nodeType": "Block",
              "src": "22412:2709:61",
              "statements": [
                {
                  "assignments": [
                    23952
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23952,
                      "mutability": "mutable",
                      "name": "_deps",
                      "nameLocation": "22456:5:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 24293,
                      "src": "22423:38:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                        "typeString": "IWitPriceFeedsTypes.ID4[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 23950,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 23949,
                            "name": "IWitPriceFeedsTypes.ID4",
                            "nameLocations": [
                              "22423:19:61",
                              "22443:3:61"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 28155,
                            "src": "22423:23:61"
                          },
                          "referencedDeclaration": 28155,
                          "src": "22423:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                            "typeString": "IWitPriceFeedsTypes.ID4"
                          }
                        },
                        "id": 23951,
                        "nodeType": "ArrayTypeName",
                        "src": "22423:25:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                          "typeString": "IWitPriceFeedsTypes.ID4[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23956,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23954,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23935,
                        "src": "22469:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 23953,
                      "name": "deps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23907,
                      "src": "22464:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (IWitPriceFeedsTypes.ID4[] memory)"
                      }
                    },
                    "id": 23955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22464:9:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22423:50:61"
                },
                {
                  "assignments": [
                    23962
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23962,
                      "mutability": "mutable",
                      "name": "_regs",
                      "nameLocation": "22498:5:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 24293,
                      "src": "22484:19:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                        "typeString": "int256[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 23960,
                          "name": "int",
                          "nodeType": "ElementaryTypeName",
                          "src": "22484:3:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 23961,
                        "length": {
                          "hexValue": "33",
                          "id": 23959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22488:1:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "22484:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$3_storage_ptr",
                          "typeString": "int256[3]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23963,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22484:19:61"
                },
                {
                  "id": 24100,
                  "nodeType": "UncheckedBlock",
                  "src": "22621:1333:61",
                  "statements": [
                    {
                      "body": {
                        "id": 24098,
                        "nodeType": "Block",
                        "src": "22689:1254:61",
                        "statements": [
                          {
                            "assignments": [
                              23976
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 23976,
                                "mutability": "mutable",
                                "name": "_depLastUpdate",
                                "nameLocation": "22725:14:61",
                                "nodeType": "VariableDeclaration",
                                "scope": 24098,
                                "src": "22708:31:61",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData"
                                },
                                "typeName": {
                                  "id": 23975,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 23974,
                                    "name": "PriceData",
                                    "nameLocations": [
                                      "22708:9:61"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 22357,
                                    "src": "22708:9:61"
                                  },
                                  "referencedDeclaration": 22357,
                                  "src": "22708:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 23988,
                            "initialValue": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 23979,
                                        "name": "_deps",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23952,
                                        "src": "22772:5:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                          "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                        }
                                      },
                                      "id": 23981,
                                      "indexExpression": {
                                        "id": 23980,
                                        "name": "_ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23965,
                                        "src": "22778:3:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "22772:10:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      }
                                    ],
                                    "id": 23978,
                                    "name": "seekPriceFeed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24598,
                                    "src": "22758:13:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                                      "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                                    }
                                  },
                                  "id": 23982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22758:25:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 23983,
                                    "name": "_deps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23952,
                                    "src": "22785:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                    }
                                  },
                                  "id": 23985,
                                  "indexExpression": {
                                    "id": 23984,
                                    "name": "_ix",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23965,
                                    "src": "22791:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "22785:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                },
                                {
                                  "id": 23986,
                                  "name": "heartbeat",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23937,
                                  "src": "22797:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                ],
                                "id": 23977,
                                "name": "fetchLastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22762,
                                "src": "22742:15:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                                  "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,IWitPriceFeedsTypes.ID4,uint24) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                                }
                              },
                              "id": 23987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22742:65:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "22708:99:61"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23989,
                                "name": "_ix",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23965,
                                "src": "22830:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 23990,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22837:1:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22830:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 24084,
                              "nodeType": "Block",
                              "src": "23264:572:61",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 24038,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 24034,
                                        "name": "_regs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23962,
                                        "src": "23291:5:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                          "typeString": "int256[3] memory"
                                        }
                                      },
                                      "id": 24036,
                                      "indexExpression": {
                                        "hexValue": "31",
                                        "id": 24035,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "23297:1:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "23291:8:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 24037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "23302:1:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "23291:12:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 24060,
                                    "nodeType": "Block",
                                    "src": "23404:90:61",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 24058,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 24050,
                                              "name": "_regs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23962,
                                              "src": "23431:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                "typeString": "int256[3] memory"
                                              }
                                            },
                                            "id": 24052,
                                            "indexExpression": {
                                              "hexValue": "30",
                                              "id": 24051,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "23437:1:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "23431:8:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "*=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 24055,
                                                  "name": "_depLastUpdate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 23976,
                                                  "src": "23449:14:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                                  }
                                                },
                                                "id": 24056,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "23464:5:61",
                                                "memberName": "price",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22342,
                                                "src": "23449:20:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              ],
                                              "id": 24054,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "23443:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_int64_$",
                                                "typeString": "type(int64)"
                                              },
                                              "typeName": {
                                                "id": 24053,
                                                "name": "int64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "23443:5:61",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 24057,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "23443:27:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int64",
                                              "typeString": "int64"
                                            }
                                          },
                                          "src": "23431:39:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "id": 24059,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23431:39:61"
                                      }
                                    ]
                                  },
                                  "id": 24061,
                                  "nodeType": "IfStatement",
                                  "src": "23287:207:61",
                                  "trueBody": {
                                    "id": 24049,
                                    "nodeType": "Block",
                                    "src": "23305:93:61",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 24047,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 24039,
                                              "name": "_regs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23962,
                                              "src": "23332:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                "typeString": "int256[3] memory"
                                              }
                                            },
                                            "id": 24041,
                                            "indexExpression": {
                                              "hexValue": "31",
                                              "id": 24040,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "23338:1:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "23332:8:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "*=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 24044,
                                                  "name": "_depLastUpdate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 23976,
                                                  "src": "23350:14:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                                  }
                                                },
                                                "id": 24045,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "23365:8:61",
                                                "memberName": "emaPrice",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22339,
                                                "src": "23350:23:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              ],
                                              "id": 24043,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "23344:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_int64_$",
                                                "typeString": "type(int64)"
                                              },
                                              "typeName": {
                                                "id": 24042,
                                                "name": "int64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "23344:5:61",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 24046,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "23344:30:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int64",
                                              "typeString": "int64"
                                            }
                                          },
                                          "src": "23332:42:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "id": 24048,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23332:42:61"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 24065,
                                          "name": "_depLastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23976,
                                          "src": "23545:14:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24066,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "23560:9:61",
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22352,
                                        "src": "23545:24:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                          "typeString": "Witnet.Timestamp"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                          "typeString": "Witnet.Timestamp"
                                        }
                                      ],
                                      "expression": {
                                        "expression": {
                                          "id": 24062,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23945,
                                          "src": "23520:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24063,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "23532:9:61",
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22352,
                                        "src": "23520:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                          "typeString": "Witnet.Timestamp"
                                        }
                                      },
                                      "id": 24064,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "23542:2:61",
                                      "memberName": "gt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 39037,
                                      "src": "23520:24:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_Timestamp_$37157_$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Timestamp_$37157_$",
                                        "typeString": "function (Witnet.Timestamp,Witnet.Timestamp) pure returns (bool)"
                                      }
                                    },
                                    "id": 24067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23520:50:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 24083,
                                  "nodeType": "IfStatement",
                                  "src": "23516:301:61",
                                  "trueBody": {
                                    "id": 24082,
                                    "nodeType": "Block",
                                    "src": "23572:245:61",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 24073,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 24068,
                                              "name": "_lastUpdate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23945,
                                              "src": "23678:11:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                              }
                                            },
                                            "id": 24070,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "23690:9:61",
                                            "memberName": "timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22352,
                                            "src": "23678:21:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                              "typeString": "Witnet.Timestamp"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 24071,
                                              "name": "_depLastUpdate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23976,
                                              "src": "23702:14:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                              }
                                            },
                                            "id": 24072,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "23717:9:61",
                                            "memberName": "timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22352,
                                            "src": "23702:24:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                              "typeString": "Witnet.Timestamp"
                                            }
                                          },
                                          "src": "23678:48:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                            "typeString": "Witnet.Timestamp"
                                          }
                                        },
                                        "id": 24074,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23678:48:61"
                                      },
                                      {
                                        "expression": {
                                          "id": 24080,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 24075,
                                              "name": "_lastUpdate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23945,
                                              "src": "23753:11:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                              }
                                            },
                                            "id": 24077,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "23765:5:61",
                                            "memberName": "trail",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22356,
                                            "src": "23753:17:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                                              "typeString": "Witnet.TransactionHash"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 24078,
                                              "name": "_depLastUpdate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23976,
                                              "src": "23773:14:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                              }
                                            },
                                            "id": 24079,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "23788:5:61",
                                            "memberName": "trail",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22356,
                                            "src": "23773:20:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                                              "typeString": "Witnet.TransactionHash"
                                            }
                                          },
                                          "src": "23753:40:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                                            "typeString": "Witnet.TransactionHash"
                                          }
                                        },
                                        "id": 24081,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23753:40:61"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "id": 24085,
                            "nodeType": "IfStatement",
                            "src": "22826:1010:61",
                            "trueBody": {
                              "id": 24033,
                              "nodeType": "Block",
                              "src": "22840:418:61",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    "id": 23995,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 23992,
                                        "name": "_depLastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23976,
                                        "src": "22867:14:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 23993,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "22882:8:61",
                                      "memberName": "emaPrice",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22339,
                                      "src": "22867:23:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 23994,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22893:1:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "22867:27:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 24017,
                                    "nodeType": "Block",
                                    "src": "22994:89:61",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 24015,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 24007,
                                              "name": "_regs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23962,
                                              "src": "23021:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                "typeString": "int256[3] memory"
                                              }
                                            },
                                            "id": 24009,
                                            "indexExpression": {
                                              "hexValue": "30",
                                              "id": 24008,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "23027:1:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "23021:8:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 24012,
                                                  "name": "_depLastUpdate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 23976,
                                                  "src": "23038:14:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                                  }
                                                },
                                                "id": 24013,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "23053:5:61",
                                                "memberName": "price",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22342,
                                                "src": "23038:20:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              ],
                                              "id": 24011,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "23032:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_int64_$",
                                                "typeString": "type(int64)"
                                              },
                                              "typeName": {
                                                "id": 24010,
                                                "name": "int64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "23032:5:61",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 24014,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "23032:27:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int64",
                                              "typeString": "int64"
                                            }
                                          },
                                          "src": "23021:38:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "id": 24016,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23021:38:61"
                                      }
                                    ]
                                  },
                                  "id": 24018,
                                  "nodeType": "IfStatement",
                                  "src": "22863:220:61",
                                  "trueBody": {
                                    "id": 24006,
                                    "nodeType": "Block",
                                    "src": "22896:92:61",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 24004,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 23996,
                                              "name": "_regs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23962,
                                              "src": "22923:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                "typeString": "int256[3] memory"
                                              }
                                            },
                                            "id": 23998,
                                            "indexExpression": {
                                              "hexValue": "31",
                                              "id": 23997,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "22929:1:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "22923:8:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 24001,
                                                  "name": "_depLastUpdate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 23976,
                                                  "src": "22940:14:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                                  }
                                                },
                                                "id": 24002,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "22955:8:61",
                                                "memberName": "emaPrice",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22339,
                                                "src": "22940:23:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              ],
                                              "id": 24000,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "22934:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_int64_$",
                                                "typeString": "type(int64)"
                                              },
                                              "typeName": {
                                                "id": 23999,
                                                "name": "int64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "22934:5:61",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 24003,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "22934:30:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int64",
                                              "typeString": "int64"
                                            }
                                          },
                                          "src": "22923:41:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "id": 24005,
                                        "nodeType": "ExpressionStatement",
                                        "src": "22923:41:61"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 24024,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 24019,
                                        "name": "_lastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23945,
                                        "src": "23105:11:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 24021,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "23117:9:61",
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22352,
                                      "src": "23105:21:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                        "typeString": "Witnet.Timestamp"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 24022,
                                        "name": "_depLastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23976,
                                        "src": "23129:14:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 24023,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "23144:9:61",
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22352,
                                      "src": "23129:24:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                        "typeString": "Witnet.Timestamp"
                                      }
                                    },
                                    "src": "23105:48:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                      "typeString": "Witnet.Timestamp"
                                    }
                                  },
                                  "id": 24025,
                                  "nodeType": "ExpressionStatement",
                                  "src": "23105:48:61"
                                },
                                {
                                  "expression": {
                                    "id": 24031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 24026,
                                        "name": "_lastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23945,
                                        "src": "23176:11:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 24028,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "23188:5:61",
                                      "memberName": "trail",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22356,
                                      "src": "23176:17:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                                        "typeString": "Witnet.TransactionHash"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 24029,
                                        "name": "_depLastUpdate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23976,
                                        "src": "23196:14:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                        }
                                      },
                                      "id": 24030,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "23211:5:61",
                                      "memberName": "trail",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22356,
                                      "src": "23196:20:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                                        "typeString": "Witnet.TransactionHash"
                                      }
                                    },
                                    "src": "23176:40:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                                      "typeString": "Witnet.TransactionHash"
                                    }
                                  },
                                  "id": 24032,
                                  "nodeType": "ExpressionStatement",
                                  "src": "23176:40:61"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "id": 24096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 24086,
                                  "name": "_regs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23962,
                                  "src": "23854:5:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                    "typeString": "int256[3] memory"
                                  }
                                },
                                "id": 24088,
                                "indexExpression": {
                                  "hexValue": "32",
                                  "id": 24087,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23860:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "23854:8:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "condition": {
                                  "id": 24089,
                                  "name": "inverse",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23941,
                                  "src": "23866:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "id": 24094,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "23902:25:61",
                                  "subExpression": {
                                    "expression": {
                                      "id": 24092,
                                      "name": "_depLastUpdate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23976,
                                      "src": "23904:14:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                      }
                                    },
                                    "id": 24093,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "23919:8:61",
                                    "memberName": "exponent",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22348,
                                    "src": "23904:23:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int8",
                                      "typeString": "int8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "id": 24095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "23866:61:61",
                                "trueExpression": {
                                  "expression": {
                                    "id": 24090,
                                    "name": "_depLastUpdate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23976,
                                    "src": "23876:14:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                    }
                                  },
                                  "id": 24091,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "23891:8:61",
                                  "memberName": "exponent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22348,
                                  "src": "23876:23:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int8",
                                  "typeString": "int8"
                                }
                              },
                              "src": "23854:73:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 24097,
                            "nodeType": "ExpressionStatement",
                            "src": "23854:73:61"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23967,
                          "name": "_ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23965,
                          "src": "22661:3:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 23968,
                            "name": "_deps",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23952,
                            "src": "22667:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                              "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                            }
                          },
                          "id": 23969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "22673:6:61",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "22667:12:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22661:18:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 24099,
                      "initializationExpression": {
                        "assignments": [
                          23965
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23965,
                            "mutability": "mutable",
                            "name": "_ix",
                            "nameLocation": "22656:3:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 24099,
                            "src": "22651:8:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23964,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "22651:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23966,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22651:8:61"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 23972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "22681:6:61",
                          "subExpression": {
                            "id": 23971,
                            "name": "_ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23965,
                            "src": "22684:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23973,
                        "nodeType": "ExpressionStatement",
                        "src": "22681:6:61"
                      },
                      "nodeType": "ForStatement",
                      "src": "22646:1297:61"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 24105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24101,
                        "name": "_regs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23962,
                        "src": "23964:5:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                          "typeString": "int256[3] memory"
                        }
                      },
                      "id": 24103,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 24102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23970:1:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "23964:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 24104,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23939,
                      "src": "23976:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "src": "23964:20:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 24106,
                  "nodeType": "ExpressionStatement",
                  "src": "23964:20:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 24111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 24107,
                        "name": "_regs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23962,
                        "src": "23999:5:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                          "typeString": "int256[3] memory"
                        }
                      },
                      "id": 24109,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 24108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24005:1:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23999:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 24110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24011:1:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "23999:13:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 24285,
                    "nodeType": "Block",
                    "src": "24795:277:61",
                    "statements": [
                      {
                        "assignments": [
                          24235
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24235,
                            "mutability": "mutable",
                            "name": "_factor",
                            "nameLocation": "24815:7:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 24285,
                            "src": "24810:12:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24234,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "24810:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 24244,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "3130",
                            "id": 24236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24825:2:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 24239,
                                  "name": "_regs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23962,
                                  "src": "24836:5:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                    "typeString": "int256[3] memory"
                                  }
                                },
                                "id": 24241,
                                "indexExpression": {
                                  "hexValue": "32",
                                  "id": 24240,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24842:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24836:8:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 24238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24831:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 24237,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "24831:4:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 24242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24831:14:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24825:20:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24810:35:61"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 24249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 24245,
                              "name": "_regs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23962,
                              "src": "24864:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                "typeString": "int256[3] memory"
                              }
                            },
                            "id": 24247,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 24246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24870:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "24864:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 24248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24875:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "24864:12:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24283,
                          "nodeType": "Block",
                          "src": "24974:87:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 24267,
                                    "name": "_lastUpdate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23945,
                                    "src": "24993:11:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                    }
                                  },
                                  "id": 24269,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "25005:5:61",
                                  "memberName": "price",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22342,
                                  "src": "24993:17:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 24279,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 24274,
                                              "name": "_regs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23962,
                                              "src": "25025:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                "typeString": "int256[3] memory"
                                              }
                                            },
                                            "id": 24276,
                                            "indexExpression": {
                                              "hexValue": "30",
                                              "id": 24275,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "25031:1:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "25025:8:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 24273,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "25020:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 24272,
                                            "name": "uint",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "25020:4:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 24277,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25020:14:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 24278,
                                        "name": "_factor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24235,
                                        "src": "25037:7:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25020:24:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 24271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "25013:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint64_$",
                                      "typeString": "type(uint64)"
                                    },
                                    "typeName": {
                                      "id": 24270,
                                      "name": "uint64",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "25013:6:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25013:32:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "24993:52:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 24282,
                              "nodeType": "ExpressionStatement",
                              "src": "24993:52:61"
                            }
                          ]
                        },
                        "id": 24284,
                        "nodeType": "IfStatement",
                        "src": "24860:201:61",
                        "trueBody": {
                          "id": 24266,
                          "nodeType": "Block",
                          "src": "24878:90:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24264,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 24250,
                                    "name": "_lastUpdate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23945,
                                    "src": "24897:11:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                    }
                                  },
                                  "id": 24252,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "24909:8:61",
                                  "memberName": "emaPrice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22339,
                                  "src": "24897:20:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 24262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 24257,
                                              "name": "_regs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23962,
                                              "src": "24932:5:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                "typeString": "int256[3] memory"
                                              }
                                            },
                                            "id": 24259,
                                            "indexExpression": {
                                              "hexValue": "31",
                                              "id": 24258,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "24938:1:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "24932:8:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 24256,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "24927:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 24255,
                                            "name": "uint",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "24927:4:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 24260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24927:14:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 24261,
                                        "name": "_factor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24235,
                                        "src": "24944:7:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24927:24:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 24254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24920:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint64_$",
                                      "typeString": "type(uint64)"
                                    },
                                    "typeName": {
                                      "id": 24253,
                                      "name": "uint64",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24920:6:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24920:32:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "24897:55:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 24265,
                              "nodeType": "ExpressionStatement",
                              "src": "24897:55:61"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 24286,
                  "nodeType": "IfStatement",
                  "src": "23995:1077:61",
                  "trueBody": {
                    "id": 24233,
                    "nodeType": "Block",
                    "src": "24014:775:61",
                    "statements": [
                      {
                        "condition": {
                          "id": 24112,
                          "name": "inverse",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23941,
                          "src": "24033:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24231,
                          "nodeType": "Block",
                          "src": "24469:309:61",
                          "statements": [
                            {
                              "assignments": [
                                24180
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 24180,
                                  "mutability": "mutable",
                                  "name": "_divisor",
                                  "nameLocation": "24493:8:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24231,
                                  "src": "24488:13:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 24179,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24488:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 24190,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 24181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24504:2:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 24187,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "24515:9:61",
                                      "subExpression": {
                                        "baseExpression": {
                                          "id": 24184,
                                          "name": "_regs",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23962,
                                          "src": "24516:5:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                            "typeString": "int256[3] memory"
                                          }
                                        },
                                        "id": 24186,
                                        "indexExpression": {
                                          "hexValue": "32",
                                          "id": 24185,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24522:1:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24516:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 24183,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24510:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 24182,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24510:4:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24510:15:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24504:21:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "24488:37:61"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 24195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 24191,
                                    "name": "_regs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23962,
                                    "src": "24548:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                      "typeString": "int256[3] memory"
                                    }
                                  },
                                  "id": 24193,
                                  "indexExpression": {
                                    "hexValue": "31",
                                    "id": 24192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24554:1:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "24548:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 24194,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24559:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "24548:12:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 24229,
                                "nodeType": "Block",
                                "src": "24667:96:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 24227,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 24213,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23945,
                                          "src": "24690:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24215,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "24702:5:61",
                                        "memberName": "price",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22342,
                                        "src": "24690:17:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 24225,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "arguments": [
                                                {
                                                  "baseExpression": {
                                                    "id": 24220,
                                                    "name": "_regs",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 23962,
                                                    "src": "24722:5:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                      "typeString": "int256[3] memory"
                                                    }
                                                  },
                                                  "id": 24222,
                                                  "indexExpression": {
                                                    "hexValue": "30",
                                                    "id": 24221,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "24728:1:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "24722:8:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                ],
                                                "id": 24219,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "24717:4:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 24218,
                                                  "name": "uint",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "24717:4:61",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 24223,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "24717:14:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "id": 24224,
                                              "name": "_divisor",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24180,
                                              "src": "24734:8:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24717:25:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 24217,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "24710:6:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint64_$",
                                            "typeString": "type(uint64)"
                                          },
                                          "typeName": {
                                            "id": 24216,
                                            "name": "uint64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "24710:6:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 24226,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24710:33:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "24690:53:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "id": 24228,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24690:53:61"
                                  }
                                ]
                              },
                              "id": 24230,
                              "nodeType": "IfStatement",
                              "src": "24544:219:61",
                              "trueBody": {
                                "id": 24212,
                                "nodeType": "Block",
                                "src": "24562:99:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 24210,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 24196,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23945,
                                          "src": "24585:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24198,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "24597:8:61",
                                        "memberName": "emaPrice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22339,
                                        "src": "24585:20:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 24208,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "arguments": [
                                                {
                                                  "baseExpression": {
                                                    "id": 24203,
                                                    "name": "_regs",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 23962,
                                                    "src": "24620:5:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                      "typeString": "int256[3] memory"
                                                    }
                                                  },
                                                  "id": 24205,
                                                  "indexExpression": {
                                                    "hexValue": "31",
                                                    "id": 24204,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "24626:1:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "24620:8:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                ],
                                                "id": 24202,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "24615:4:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 24201,
                                                  "name": "uint",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "24615:4:61",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 24206,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "24615:14:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "id": 24207,
                                              "name": "_divisor",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24180,
                                              "src": "24632:8:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24615:25:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 24200,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "24608:6:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint64_$",
                                            "typeString": "type(uint64)"
                                          },
                                          "typeName": {
                                            "id": 24199,
                                            "name": "uint64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "24608:6:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 24209,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24608:33:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "24585:56:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "id": 24211,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24585:56:61"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 24232,
                        "nodeType": "IfStatement",
                        "src": "24029:749:61",
                        "trueBody": {
                          "id": 24178,
                          "nodeType": "Block",
                          "src": "24042:421:61",
                          "statements": [
                            {
                              "assignments": [
                                24114
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 24114,
                                  "mutability": "mutable",
                                  "name": "_factor",
                                  "nameLocation": "24066:7:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24178,
                                  "src": "24061:12:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 24113,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24061:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 24124,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 24115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24076:2:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 24121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "24087:9:61",
                                      "subExpression": {
                                        "baseExpression": {
                                          "id": 24118,
                                          "name": "_regs",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23962,
                                          "src": "24088:5:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                            "typeString": "int256[3] memory"
                                          }
                                        },
                                        "id": 24120,
                                        "indexExpression": {
                                          "hexValue": "32",
                                          "id": 24119,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24094:1:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24088:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 24117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24082:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 24116,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24082:4:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24082:15:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24076:21:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "24061:36:61"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 24129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 24125,
                                    "name": "_regs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23962,
                                    "src": "24120:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                      "typeString": "int256[3] memory"
                                    }
                                  },
                                  "id": 24127,
                                  "indexExpression": {
                                    "hexValue": "31",
                                    "id": 24126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24126:1:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "24120:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 24128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24131:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "24120:12:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 24151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 24147,
                                      "name": "_regs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23962,
                                      "src": "24242:5:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                        "typeString": "int256[3] memory"
                                      }
                                    },
                                    "id": 24149,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 24148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "24248:1:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24242:8:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 24150,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24253:1:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "24242:12:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 24175,
                                  "nodeType": "Block",
                                  "src": "24357:91:61",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 24173,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "expression": {
                                            "id": 24169,
                                            "name": "_lastUpdate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23945,
                                            "src": "24380:11:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                            }
                                          },
                                          "id": 24171,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "memberLocation": "24392:5:61",
                                          "memberName": "price",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22342,
                                          "src": "24380:17:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "hexValue": "30",
                                          "id": 24172,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24400:1:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "24380:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "id": 24174,
                                      "nodeType": "ExpressionStatement",
                                      "src": "24380:21:61"
                                    }
                                  ]
                                },
                                "id": 24176,
                                "nodeType": "IfStatement",
                                "src": "24238:210:61",
                                "trueBody": {
                                  "id": 24168,
                                  "nodeType": "Block",
                                  "src": "24256:95:61",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 24166,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "expression": {
                                            "id": 24152,
                                            "name": "_lastUpdate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23945,
                                            "src": "24279:11:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                            }
                                          },
                                          "id": 24154,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "memberLocation": "24291:5:61",
                                          "memberName": "price",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22342,
                                          "src": "24279:17:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 24164,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 24157,
                                                "name": "_factor",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24114,
                                                "src": "24306:7:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "arguments": [
                                                  {
                                                    "baseExpression": {
                                                      "id": 24160,
                                                      "name": "_regs",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 23962,
                                                      "src": "24321:5:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                        "typeString": "int256[3] memory"
                                                      }
                                                    },
                                                    "id": 24162,
                                                    "indexExpression": {
                                                      "hexValue": "30",
                                                      "id": 24161,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "24327:1:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      },
                                                      "value": "0"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "24321:8:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "id": 24159,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "24316:4:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                    "typeString": "type(uint256)"
                                                  },
                                                  "typeName": {
                                                    "id": 24158,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "24316:4:61",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 24163,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "24316:14:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "24306:24:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 24156,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "24299:6:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint64_$",
                                              "typeString": "type(uint64)"
                                            },
                                            "typeName": {
                                              "id": 24155,
                                              "name": "uint64",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "24299:6:61",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 24165,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "24299:32:61",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "src": "24279:52:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "id": 24167,
                                      "nodeType": "ExpressionStatement",
                                      "src": "24279:52:61"
                                    }
                                  ]
                                }
                              },
                              "id": 24177,
                              "nodeType": "IfStatement",
                              "src": "24116:332:61",
                              "trueBody": {
                                "id": 24146,
                                "nodeType": "Block",
                                "src": "24134:98:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 24144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 24130,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23945,
                                          "src": "24157:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24132,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "24169:8:61",
                                        "memberName": "emaPrice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22339,
                                        "src": "24157:20:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 24142,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 24135,
                                              "name": "_factor",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24114,
                                              "src": "24187:7:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "baseExpression": {
                                                    "id": 24138,
                                                    "name": "_regs",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 23962,
                                                    "src": "24202:5:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_int256_$3_memory_ptr",
                                                      "typeString": "int256[3] memory"
                                                    }
                                                  },
                                                  "id": 24140,
                                                  "indexExpression": {
                                                    "hexValue": "31",
                                                    "id": 24139,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "24208:1:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "24202:8:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                ],
                                                "id": 24137,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "24197:4:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 24136,
                                                  "name": "uint",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "24197:4:61",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 24141,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "24197:14:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24187:24:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 24134,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "24180:6:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint64_$",
                                            "typeString": "type(uint64)"
                                          },
                                          "typeName": {
                                            "id": 24133,
                                            "name": "uint64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "24180:6:61",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 24143,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24180:32:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "24157:55:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "id": 24145,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24157:55:61"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 24291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24287,
                        "name": "_lastUpdate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23945,
                        "src": "25082:11:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                        }
                      },
                      "id": 24289,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "25094:8:61",
                      "memberName": "exponent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22348,
                      "src": "25082:20:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24290,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23939,
                      "src": "25105:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "src": "25082:31:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "id": 24292,
                  "nodeType": "ExpressionStatement",
                  "src": "25082:31:61"
                }
              ]
            },
            "id": 24294,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchLastUpdateFromProduct",
            "nameLocation": "22166:26:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23935,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "22231:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24294,
                  "src": "22207:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 23934,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23933,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "22207:19:61",
                        "22227:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "22207:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "22207:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23937,
                  "mutability": "mutable",
                  "name": "heartbeat",
                  "nameLocation": "22257:9:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24294,
                  "src": "22250:16:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 23936,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "22250:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23939,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "22287:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24294,
                  "src": "22282:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 23938,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "22282:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23941,
                  "mutability": "mutable",
                  "name": "inverse",
                  "nameLocation": "22316:7:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24294,
                  "src": "22311:12:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23940,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22311:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22192:142:61"
            },
            "returnParameters": {
              "id": 23946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23945,
                  "mutability": "mutable",
                  "name": "_lastUpdate",
                  "nameLocation": "22394:11:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24294,
                  "src": "22377:28:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  },
                  "typeName": {
                    "id": 23944,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23943,
                      "name": "PriceData",
                      "nameLocations": [
                        "22377:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22357,
                      "src": "22377:9:61"
                    },
                    "referencedDeclaration": 22357,
                    "src": "22377:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22376:30:61"
            },
            "scope": 25111,
            "src": "22157:2964:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24418,
              "nodeType": "Block",
              "src": "25304:829:61",
              "statements": [
                {
                  "assignments": [
                    24312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 24312,
                      "mutability": "mutable",
                      "name": "_deps",
                      "nameLocation": "25348:5:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 24418,
                      "src": "25315:38:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                        "typeString": "IWitPriceFeedsTypes.ID4[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 24310,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 24309,
                            "name": "IWitPriceFeedsTypes.ID4",
                            "nameLocations": [
                              "25315:19:61",
                              "25335:3:61"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 28155,
                            "src": "25315:23:61"
                          },
                          "referencedDeclaration": 28155,
                          "src": "25315:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                            "typeString": "IWitPriceFeedsTypes.ID4"
                          }
                        },
                        "id": 24311,
                        "nodeType": "ArrayTypeName",
                        "src": "25315:25:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                          "typeString": "IWitPriceFeedsTypes.ID4[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 24316,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 24314,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24297,
                        "src": "25361:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 24313,
                      "name": "deps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23907,
                      "src": "25356:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (IWitPriceFeedsTypes.ID4[] memory)"
                      }
                    },
                    "id": 24315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25356:9:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25315:50:61"
                },
                {
                  "body": {
                    "id": 24358,
                    "nodeType": "Block",
                    "src": "25419:325:61",
                    "statements": [
                      {
                        "assignments": [
                          24329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24329,
                            "mutability": "mutable",
                            "name": "_depLastUpdate",
                            "nameLocation": "25451:14:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 24358,
                            "src": "25434:31:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData"
                            },
                            "typeName": {
                              "id": 24328,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 24327,
                                "name": "PriceData",
                                "nameLocations": [
                                  "25434:9:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22357,
                                "src": "25434:9:61"
                              },
                              "referencedDeclaration": 22357,
                              "src": "25434:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 24341,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 24332,
                                    "name": "_deps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24312,
                                    "src": "25498:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                    }
                                  },
                                  "id": 24334,
                                  "indexExpression": {
                                    "id": 24333,
                                    "name": "_ix",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24318,
                                    "src": "25504:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "25498:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                ],
                                "id": 24331,
                                "name": "seekPriceFeed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24598,
                                "src": "25484:13:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                                  "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                                }
                              },
                              "id": 24335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25484:25:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 24336,
                                "name": "_deps",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24312,
                                "src": "25512:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                  "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                }
                              },
                              "id": 24338,
                              "indexExpression": {
                                "id": 24337,
                                "name": "_ix",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24318,
                                "src": "25518:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "25512:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            },
                            {
                              "id": 24339,
                              "name": "heartbeat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24299,
                              "src": "25524:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              },
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              },
                              {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            ],
                            "id": 24330,
                            "name": "fetchLastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22762,
                            "src": "25468:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                              "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,IWitPriceFeedsTypes.ID4,uint24) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                            }
                          },
                          "id": 24340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25468:66:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25434:100:61"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 24351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 24344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 24342,
                              "name": "_ix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24318,
                              "src": "25571:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 24343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25578:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "25571:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 24348,
                                  "name": "_lastUpdate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24305,
                                  "src": "25632:11:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                  }
                                },
                                "id": 24349,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "25644:9:61",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22352,
                                "src": "25632:21:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                  "typeString": "Witnet.Timestamp"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                  "typeString": "Witnet.Timestamp"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 24345,
                                  "name": "_depLastUpdate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24329,
                                  "src": "25604:14:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                  }
                                },
                                "id": 24346,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "25619:9:61",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22352,
                                "src": "25604:24:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                  "typeString": "Witnet.Timestamp"
                                }
                              },
                              "id": 24347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25629:2:61",
                              "memberName": "gt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39037,
                              "src": "25604:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_Timestamp_$37157_$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Timestamp_$37157_$",
                                "typeString": "function (Witnet.Timestamp,Witnet.Timestamp) pure returns (bool)"
                              }
                            },
                            "id": 24350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25604:50:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "25571:83:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24357,
                        "nodeType": "IfStatement",
                        "src": "25549:184:61",
                        "trueBody": {
                          "id": 24356,
                          "nodeType": "Block",
                          "src": "25670:63:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 24352,
                                  "name": "_lastUpdate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24305,
                                  "src": "25689:11:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 24353,
                                  "name": "_depLastUpdate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24329,
                                  "src": "25703:14:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                    "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                  }
                                },
                                "src": "25689:28:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 24355,
                              "nodeType": "ExpressionStatement",
                              "src": "25689:28:61"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 24323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 24320,
                      "name": "_ix",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24318,
                      "src": "25391:3:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 24321,
                        "name": "_deps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24312,
                        "src": "25397:5:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                          "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                        }
                      },
                      "id": 24322,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25403:6:61",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "25397:12:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25391:18:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 24359,
                  "initializationExpression": {
                    "assignments": [
                      24318
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 24318,
                        "mutability": "mutable",
                        "name": "_ix",
                        "nameLocation": "25386:3:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24359,
                        "src": "25381:8:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24317,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25381:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 24319,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25381:8:61"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 24325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "25411:6:61",
                      "subExpression": {
                        "id": 24324,
                        "name": "_ix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24318,
                        "src": "25414:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 24326,
                    "nodeType": "ExpressionStatement",
                    "src": "25411:6:61"
                  },
                  "nodeType": "ForStatement",
                  "src": "25376:368:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    },
                    "id": 24363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 24360,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24301,
                      "src": "25758:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 24361,
                        "name": "_lastUpdate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24305,
                        "src": "25769:11:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                        }
                      },
                      "id": 24362,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25781:8:61",
                      "memberName": "exponent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22348,
                      "src": "25769:20:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "src": "25758:31:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      },
                      "id": 24391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 24388,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24301,
                        "src": "25947:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "expression": {
                          "id": 24389,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24305,
                          "src": "25958:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 24390,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25970:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22348,
                        "src": "25958:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "src": "25947:31:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 24416,
                    "nodeType": "IfStatement",
                    "src": "25943:183:61",
                    "trueBody": {
                      "id": 24415,
                      "nodeType": "Block",
                      "src": "25980:146:61",
                      "statements": [
                        {
                          "expression": {
                            "id": 24407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 24392,
                                "name": "_lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24305,
                                "src": "25995:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 24394,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberLocation": "26007:5:61",
                              "memberName": "price",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22342,
                              "src": "25995:17:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "/=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 24405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3130",
                                    "id": 24397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26023:2:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        },
                                        "id": 24403,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 24400,
                                          "name": "exponent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24301,
                                          "src": "26035:8:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int8",
                                            "typeString": "int8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 24401,
                                            "name": "_lastUpdate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24305,
                                            "src": "26046:11:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                            }
                                          },
                                          "id": 24402,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "26058:8:61",
                                          "memberName": "exponent",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22348,
                                          "src": "26046:20:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int8",
                                            "typeString": "int8"
                                          }
                                        },
                                        "src": "26035:31:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      ],
                                      "id": 24399,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "26029:5:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 24398,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26029:5:61",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 24404,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26029:38:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "26023:44:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 24396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "26016:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint64_$",
                                  "typeString": "type(uint64)"
                                },
                                "typeName": {
                                  "id": 24395,
                                  "name": "uint64",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26016:6:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 24406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26016:52:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "25995:73:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "id": 24408,
                          "nodeType": "ExpressionStatement",
                          "src": "25995:73:61"
                        },
                        {
                          "expression": {
                            "id": 24413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 24409,
                                "name": "_lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24305,
                                "src": "26083:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 24411,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberLocation": "26095:8:61",
                              "memberName": "exponent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22348,
                              "src": "26083:20:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int8",
                                "typeString": "int8"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 24412,
                              "name": "exponent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24301,
                              "src": "26106:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int8",
                                "typeString": "int8"
                              }
                            },
                            "src": "26083:31:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "id": 24414,
                          "nodeType": "ExpressionStatement",
                          "src": "26083:31:61"
                        }
                      ]
                    }
                  },
                  "id": 24417,
                  "nodeType": "IfStatement",
                  "src": "25754:372:61",
                  "trueBody": {
                    "id": 24387,
                    "nodeType": "Block",
                    "src": "25791:146:61",
                    "statements": [
                      {
                        "expression": {
                          "id": 24379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 24364,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24305,
                              "src": "25806:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 24366,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "25818:5:61",
                            "memberName": "price",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22342,
                            "src": "25806:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 24369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25834:2:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      },
                                      "id": 24375,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 24372,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24305,
                                          "src": "25846:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24373,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "25858:8:61",
                                        "memberName": "exponent",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22348,
                                        "src": "25846:20:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 24374,
                                        "name": "exponent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24301,
                                        "src": "25869:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      },
                                      "src": "25846:31:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    ],
                                    "id": 24371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "25840:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 24370,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "25840:5:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25840:38:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "25834:44:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 24368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25827:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 24367,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "25827:6:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 24378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25827:52:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "25806:73:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 24380,
                        "nodeType": "ExpressionStatement",
                        "src": "25806:73:61"
                      },
                      {
                        "expression": {
                          "id": 24385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 24381,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24305,
                              "src": "25894:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 24383,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "25906:8:61",
                            "memberName": "exponent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22348,
                            "src": "25894:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 24384,
                            "name": "exponent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24301,
                            "src": "25917:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "25894:31:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "id": 24386,
                        "nodeType": "ExpressionStatement",
                        "src": "25894:31:61"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 24419,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchLastUpdateFromHottest",
            "nameLocation": "25138:26:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24297,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "25189:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24419,
                  "src": "25165:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24296,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24295,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "25165:19:61",
                        "25185:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "25165:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "25165:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24299,
                  "mutability": "mutable",
                  "name": "heartbeat",
                  "nameLocation": "25201:9:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24419,
                  "src": "25194:16:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 24298,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "25194:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24301,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "25217:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24419,
                  "src": "25212:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 24300,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "25212:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25164:62:61"
            },
            "returnParameters": {
              "id": 24306,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24305,
                  "mutability": "mutable",
                  "name": "_lastUpdate",
                  "nameLocation": "25286:11:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24419,
                  "src": "25269:28:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  },
                  "typeName": {
                    "id": 24304,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24303,
                      "name": "PriceData",
                      "nameLocations": [
                        "25269:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22357,
                      "src": "25269:9:61"
                    },
                    "referencedDeclaration": 22357,
                    "src": "25269:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25268:30:61"
            },
            "scope": 25111,
            "src": "25129:1004:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24549,
              "nodeType": "Block",
              "src": "26317:864:61",
              "statements": [
                {
                  "assignments": [
                    24437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 24437,
                      "mutability": "mutable",
                      "name": "_deps",
                      "nameLocation": "26361:5:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 24549,
                      "src": "26328:38:61",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                        "typeString": "IWitPriceFeedsTypes.ID4[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 24435,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 24434,
                            "name": "IWitPriceFeedsTypes.ID4",
                            "nameLocations": [
                              "26328:19:61",
                              "26348:3:61"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 28155,
                            "src": "26328:23:61"
                          },
                          "referencedDeclaration": 28155,
                          "src": "26328:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                            "typeString": "IWitPriceFeedsTypes.ID4"
                          }
                        },
                        "id": 24436,
                        "nodeType": "ArrayTypeName",
                        "src": "26328:25:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_ptr",
                          "typeString": "IWitPriceFeedsTypes.ID4[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 24441,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 24439,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24422,
                        "src": "26374:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 24438,
                      "name": "deps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23907,
                      "src": "26369:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (IWitPriceFeedsTypes.ID4[] memory)"
                      }
                    },
                    "id": 24440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26369:9:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26328:50:61"
                },
                {
                  "body": {
                    "id": 24489,
                    "nodeType": "Block",
                    "src": "26432:360:61",
                    "statements": [
                      {
                        "assignments": [
                          24454
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24454,
                            "mutability": "mutable",
                            "name": "_depLastUpdate",
                            "nameLocation": "26464:14:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 24489,
                            "src": "26447:31:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData"
                            },
                            "typeName": {
                              "id": 24453,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 24452,
                                "name": "PriceData",
                                "nameLocations": [
                                  "26447:9:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22357,
                                "src": "26447:9:61"
                              },
                              "referencedDeclaration": 22357,
                              "src": "26447:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 24466,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 24457,
                                    "name": "_deps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24437,
                                    "src": "26511:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                      "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                    }
                                  },
                                  "id": 24459,
                                  "indexExpression": {
                                    "id": 24458,
                                    "name": "_ix",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24443,
                                    "src": "26517:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "26511:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                    "typeString": "IWitPriceFeedsTypes.ID4"
                                  }
                                ],
                                "id": 24456,
                                "name": "seekPriceFeed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24598,
                                "src": "26497:13:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                                  "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                                }
                              },
                              "id": 24460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26497:25:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 24461,
                                "name": "_deps",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24437,
                                "src": "26524:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                                  "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                                }
                              },
                              "id": 24463,
                              "indexExpression": {
                                "id": 24462,
                                "name": "_ix",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24443,
                                "src": "26530:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26524:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              }
                            },
                            {
                              "id": 24464,
                              "name": "heartbeat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24424,
                              "src": "26536:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              },
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                "typeString": "IWitPriceFeedsTypes.ID4"
                              },
                              {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            ],
                            "id": 24455,
                            "name": "fetchLastUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22762,
                            "src": "26481:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$_t_userDefinedValueType$_ID4_$28155_$_t_uint24_$returns$_t_struct$_PriceData_$22357_memory_ptr_$",
                              "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer,IWitPriceFeedsTypes.ID4,uint24) view returns (struct WitPriceFeedsDataLib.PriceData memory)"
                            }
                          },
                          "id": 24465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26481:65:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26447:99:61"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 24484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            },
                            "id": 24469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 24467,
                              "name": "heartbeat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24424,
                              "src": "26583:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 24468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26596:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "26583:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 24483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 24473,
                                    "name": "_depLastUpdate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24454,
                                    "src": "26646:14:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                    }
                                  },
                                  "id": 24474,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26661:9:61",
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22352,
                                  "src": "26646:24:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                    "typeString": "Witnet.Timestamp"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                                    "typeString": "Witnet.Timestamp"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 24470,
                                    "name": "Witnet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40741,
                                    "src": "26622:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                                      "typeString": "type(library Witnet)"
                                    }
                                  },
                                  "id": 24471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26629:9:61",
                                  "memberName": "Timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 37157,
                                  "src": "26622:16:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$37157_$",
                                    "typeString": "type(Witnet.Timestamp)"
                                  }
                                },
                                "id": 24472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "26639:6:61",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "src": "26622:23:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$37157_$returns$_t_uint64_$",
                                  "typeString": "function (Witnet.Timestamp) pure returns (uint64)"
                                }
                              },
                              "id": 24475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26622:49:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 24481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 24478,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967292,
                                      "src": "26681:5:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 24479,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "26687:9:61",
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "26681:15:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 24480,
                                    "name": "heartbeat",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24424,
                                    "src": "26699:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint24",
                                      "typeString": "uint24"
                                    }
                                  },
                                  "src": "26681:27:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 24477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "26674:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint64_$",
                                  "typeString": "type(uint64)"
                                },
                                "typeName": {
                                  "id": 24476,
                                  "name": "uint64",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26674:6:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 24482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26674:35:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "26622:87:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "26583:126:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24488,
                        "nodeType": "IfStatement",
                        "src": "26561:220:61",
                        "trueBody": {
                          "id": 24487,
                          "nodeType": "Block",
                          "src": "26725:56:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24485,
                                "name": "_depLastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24454,
                                "src": "26751:14:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "functionReturnParameters": 24431,
                              "id": 24486,
                              "nodeType": "Return",
                              "src": "26744:21:61"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 24448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 24445,
                      "name": "_ix",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24443,
                      "src": "26404:3:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 24446,
                        "name": "_deps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24437,
                        "src": "26410:5:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_memory_ptr",
                          "typeString": "IWitPriceFeedsTypes.ID4[] memory"
                        }
                      },
                      "id": 24447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "26416:6:61",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "26410:12:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26404:18:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 24490,
                  "initializationExpression": {
                    "assignments": [
                      24443
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 24443,
                        "mutability": "mutable",
                        "name": "_ix",
                        "nameLocation": "26399:3:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24490,
                        "src": "26394:8:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24442,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26394:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 24444,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26394:8:61"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 24450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "26424:6:61",
                      "subExpression": {
                        "id": 24449,
                        "name": "_ix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24443,
                        "src": "26427:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 24451,
                    "nodeType": "ExpressionStatement",
                    "src": "26424:6:61"
                  },
                  "nodeType": "ForStatement",
                  "src": "26389:403:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    },
                    "id": 24494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 24491,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24426,
                      "src": "26806:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 24492,
                        "name": "_lastUpdate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24430,
                        "src": "26817:11:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                        }
                      },
                      "id": 24493,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "26829:8:61",
                      "memberName": "exponent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22348,
                      "src": "26817:20:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "src": "26806:31:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      },
                      "id": 24522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 24519,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24426,
                        "src": "26995:8:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "expression": {
                          "id": 24520,
                          "name": "_lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24430,
                          "src": "27006:11:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                          }
                        },
                        "id": 24521,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27018:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22348,
                        "src": "27006:20:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "src": "26995:31:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 24547,
                    "nodeType": "IfStatement",
                    "src": "26991:183:61",
                    "trueBody": {
                      "id": 24546,
                      "nodeType": "Block",
                      "src": "27028:146:61",
                      "statements": [
                        {
                          "expression": {
                            "id": 24538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 24523,
                                "name": "_lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24430,
                                "src": "27043:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 24525,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberLocation": "27055:5:61",
                              "memberName": "price",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22342,
                              "src": "27043:17:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "/=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 24536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3130",
                                    "id": 24528,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27071:2:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        },
                                        "id": 24534,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 24531,
                                          "name": "exponent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24426,
                                          "src": "27083:8:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int8",
                                            "typeString": "int8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 24532,
                                            "name": "_lastUpdate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24430,
                                            "src": "27094:11:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                              "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                            }
                                          },
                                          "id": 24533,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "27106:8:61",
                                          "memberName": "exponent",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22348,
                                          "src": "27094:20:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int8",
                                            "typeString": "int8"
                                          }
                                        },
                                        "src": "27083:31:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      ],
                                      "id": 24530,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "27077:5:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 24529,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "27077:5:61",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 24535,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "27077:38:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "27071:44:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 24527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "27064:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint64_$",
                                  "typeString": "type(uint64)"
                                },
                                "typeName": {
                                  "id": 24526,
                                  "name": "uint64",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "27064:6:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 24537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27064:52:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "27043:73:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "id": 24539,
                          "nodeType": "ExpressionStatement",
                          "src": "27043:73:61"
                        },
                        {
                          "expression": {
                            "id": 24544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 24540,
                                "name": "_lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24430,
                                "src": "27131:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                }
                              },
                              "id": 24542,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberLocation": "27143:8:61",
                              "memberName": "exponent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22348,
                              "src": "27131:20:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int8",
                                "typeString": "int8"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 24543,
                              "name": "exponent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24426,
                              "src": "27154:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int8",
                                "typeString": "int8"
                              }
                            },
                            "src": "27131:31:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "id": 24545,
                          "nodeType": "ExpressionStatement",
                          "src": "27131:31:61"
                        }
                      ]
                    }
                  },
                  "id": 24548,
                  "nodeType": "IfStatement",
                  "src": "26802:372:61",
                  "trueBody": {
                    "id": 24518,
                    "nodeType": "Block",
                    "src": "26839:146:61",
                    "statements": [
                      {
                        "expression": {
                          "id": 24510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 24495,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24430,
                              "src": "26854:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 24497,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "26866:5:61",
                            "memberName": "price",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22342,
                            "src": "26854:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 24500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26882:2:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      },
                                      "id": 24506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 24503,
                                          "name": "_lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24430,
                                          "src": "26894:11:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                            "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                                          }
                                        },
                                        "id": 24504,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "26906:8:61",
                                        "memberName": "exponent",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22348,
                                        "src": "26894:20:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 24505,
                                        "name": "exponent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24426,
                                        "src": "26917:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int8",
                                          "typeString": "int8"
                                        }
                                      },
                                      "src": "26894:31:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    ],
                                    "id": 24502,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "26888:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 24501,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "26888:5:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26888:38:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "26882:44:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 24499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "26875:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 24498,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "26875:6:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 24509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26875:52:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "26854:73:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 24511,
                        "nodeType": "ExpressionStatement",
                        "src": "26854:73:61"
                      },
                      {
                        "expression": {
                          "id": 24516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 24512,
                              "name": "_lastUpdate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24430,
                              "src": "26942:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                              }
                            },
                            "id": 24514,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "26954:8:61",
                            "memberName": "exponent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22348,
                            "src": "26942:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 24515,
                            "name": "exponent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24426,
                            "src": "26965:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "26942:31:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "id": 24517,
                        "nodeType": "ExpressionStatement",
                        "src": "26942:31:61"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 24550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchLastUpdateFromFallback",
            "nameLocation": "26150:27:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24427,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24422,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "26202:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24550,
                  "src": "26178:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24421,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24420,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "26178:19:61",
                        "26198:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "26178:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "26178:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24424,
                  "mutability": "mutable",
                  "name": "heartbeat",
                  "nameLocation": "26214:9:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24550,
                  "src": "26207:16:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 24423,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "26207:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24426,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "26230:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24550,
                  "src": "26225:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 24425,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "26225:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26177:62:61"
            },
            "returnParameters": {
              "id": 24431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24430,
                  "mutability": "mutable",
                  "name": "_lastUpdate",
                  "nameLocation": "26299:11:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24550,
                  "src": "26282:28:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  },
                  "typeName": {
                    "id": 24429,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24428,
                      "name": "PriceData",
                      "nameLocations": [
                        "26282:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22357,
                      "src": "26282:9:61"
                    },
                    "referencedDeclaration": 22357,
                    "src": "26282:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26281:30:61"
            },
            "scope": 25111,
            "src": "26141:1040:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24564,
              "nodeType": "Block",
              "src": "27257:55:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 24560,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24552,
                            "src": "27296:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 24558,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "27285:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27289:6:61",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "27285:10:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 24561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27285:18:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24557,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "27275:9:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 24562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27275:29:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 24556,
                  "id": 24563,
                  "nodeType": "Return",
                  "src": "27268:36:61"
                }
              ]
            },
            "id": 24565,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hash",
            "nameLocation": "27198:4:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24552,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "27217:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24565,
                  "src": "27203:20:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24551,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27203:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27202:22:61"
            },
            "returnParameters": {
              "id": 24556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24555,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24565,
                  "src": "27248:7:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24554,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "27248:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27247:9:61"
            },
            "scope": 25111,
            "src": "27189:123:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24581,
              "nodeType": "Block",
              "src": "27394:66:61",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "id": 24579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 24576,
                          "name": "id4",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24568,
                          "src": "27443:3:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                            "typeString": "IWitPriceFeedsTypes.ID4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                            "typeString": "IWitPriceFeedsTypes.ID4"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 24573,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "27412:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 24574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "27432:3:61",
                          "memberName": "ID4",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28155,
                          "src": "27412:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                            "typeString": "type(IWitPriceFeedsTypes.ID4)"
                          }
                        },
                        "id": 24575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "27436:6:61",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "27412:30:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                          "typeString": "function (IWitPriceFeedsTypes.ID4) pure returns (bytes4)"
                        }
                      },
                      "id": 24577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "27412:35:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 24578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "27451:1:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "27412:40:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 24572,
                  "id": 24580,
                  "nodeType": "Return",
                  "src": "27405:47:61"
                }
              ]
            },
            "id": 24582,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isZero",
            "nameLocation": "27329:6:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24568,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "27360:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24582,
                  "src": "27336:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24567,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24566,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "27336:19:61",
                        "27356:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "27336:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "27336:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27335:29:61"
            },
            "returnParameters": {
              "id": 24572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24571,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24582,
                  "src": "27388:4:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24570,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27388:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27387:6:61"
            },
            "scope": 25111,
            "src": "27320:140:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24597,
              "nodeType": "Block",
              "src": "29080:45:61",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 24591,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23835,
                          "src": "29098:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                            "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                          }
                        },
                        "id": 24592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29098:6:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                        }
                      },
                      "id": 24593,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "29105:7:61",
                      "memberName": "records",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22315,
                      "src": "29098:14:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                        "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed storage ref)"
                      }
                    },
                    "id": 24595,
                    "indexExpression": {
                      "id": 24594,
                      "name": "id4",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24585,
                      "src": "29113:3:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "29098:19:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage ref"
                    }
                  },
                  "functionReturnParameters": 24590,
                  "id": 24596,
                  "nodeType": "Return",
                  "src": "29091:26:61"
                }
              ]
            },
            "id": 24598,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "seekPriceFeed",
            "nameLocation": "28995:13:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24585,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "29033:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24598,
                  "src": "29009:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24584,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24583,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "29009:19:61",
                        "29029:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "29009:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "29009:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29008:29:61"
            },
            "returnParameters": {
              "id": 24590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24589,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24598,
                  "src": "29061:17:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                  },
                  "typeName": {
                    "id": 24588,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24587,
                      "name": "PriceFeed",
                      "nameLocations": [
                        "29061:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22395,
                      "src": "29061:9:61"
                    },
                    "referencedDeclaration": 22395,
                    "src": "29061:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29060:19:61"
            },
            "scope": 25111,
            "src": "28986:139:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24631,
              "nodeType": "Block",
              "src": "29203:180:61",
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 24628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 24620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 24612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 24606,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24601,
                                "src": "29235:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                }
                              },
                              "id": 24607,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29240:13:61",
                              "memberName": "oracleSources",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22383,
                              "src": "29235:18:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 24610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29265:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 24609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "29257:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 24608,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "29257:7:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 24611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29257:10:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "29235:32:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 24619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 24615,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24601,
                                    "src": "29294:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                    }
                                  },
                                  "id": 24616,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "29299:6:61",
                                  "memberName": "mapper",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22373,
                                  "src": "29294:11:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Mappers_$28087",
                                    "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Mappers_$28087",
                                    "typeString": "enum IWitPriceFeedsTypes.Mappers"
                                  }
                                ],
                                "id": 24614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "29288:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 24613,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "29288:5:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 24617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29288:18:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 24618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "29310:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "29288:23:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "29235:76:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 24621,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24601,
                              "src": "29332:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 24622,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "29337:13:61",
                            "memberName": "oracleAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22380,
                            "src": "29332:18:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 24625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "29362:1:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 24624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29354:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24623,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "29354:7:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 24626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29354:10:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "29332:32:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "29235:129:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 24629,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "29220:155:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 24605,
                  "id": 24630,
                  "nodeType": "Return",
                  "src": "29214:161:61"
                }
              ]
            },
            "id": 24632,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settled",
            "nameLocation": "29142:7:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24601,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "29168:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24632,
                  "src": "29150:22:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                  },
                  "typeName": {
                    "id": 24600,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24599,
                      "name": "PriceFeed",
                      "nameLocations": [
                        "29150:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22395,
                      "src": "29150:9:61"
                    },
                    "referencedDeclaration": 22395,
                    "src": "29150:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29149:24:61"
            },
            "returnParameters": {
              "id": 24605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24604,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24632,
                  "src": "29197:4:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24603,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29197:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29196:6:61"
            },
            "scope": 25111,
            "src": "29133:250:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24671,
              "nodeType": "Block",
              "src": "29596:167:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "29615:15:61",
                        "subExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 24646,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24635,
                              "src": "29616:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 24647,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "29621:7:61",
                            "memberName": "settled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24632,
                            "src": "29616:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                              "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                            }
                          },
                          "id": 24648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29616:14:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "616c726561647920736574746c6564",
                        "id": 24650,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29632:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        },
                        "value": "already settled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        }
                      ],
                      "id": 24645,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "29607:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29607:43:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24652,
                  "nodeType": "ExpressionStatement",
                  "src": "29607:43:61"
                },
                {
                  "expression": {
                    "id": 24657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24653,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24635,
                        "src": "29661:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24655,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "29666:8:61",
                      "memberName": "exponent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22366,
                      "src": "29661:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24656,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24637,
                      "src": "29677:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "src": "29661:24:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "id": 24658,
                  "nodeType": "ExpressionStatement",
                  "src": "29661:24:61"
                },
                {
                  "expression": {
                    "id": 24663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24659,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24635,
                        "src": "29696:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24661,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "29701:6:61",
                      "memberName": "mapper",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22373,
                      "src": "29696:11:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24662,
                      "name": "mapper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24640,
                      "src": "29710:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mappers_$28087",
                        "typeString": "enum IWitPriceFeedsTypes.Mappers"
                      }
                    },
                    "src": "29696:20:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    }
                  },
                  "id": 24664,
                  "nodeType": "ExpressionStatement",
                  "src": "29696:20:61"
                },
                {
                  "expression": {
                    "id": 24669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24665,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24635,
                        "src": "29727:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24667,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "29732:10:61",
                      "memberName": "mapperDeps",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22386,
                      "src": "29727:15:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24668,
                      "name": "mapperDeps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24642,
                      "src": "29745:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "29727:28:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 24670,
                  "nodeType": "ExpressionStatement",
                  "src": "29727:28:61"
                }
              ]
            },
            "id": 24672,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settleMapper",
            "nameLocation": "29400:12:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24635,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "29445:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24672,
                  "src": "29427:22:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                  },
                  "typeName": {
                    "id": 24634,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24633,
                      "name": "PriceFeed",
                      "nameLocations": [
                        "29427:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22395,
                      "src": "29427:9:61"
                    },
                    "referencedDeclaration": 22395,
                    "src": "29427:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24637,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "29470:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24672,
                  "src": "29465:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 24636,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "29465:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24640,
                  "mutability": "mutable",
                  "name": "mapper",
                  "nameLocation": "29521:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24672,
                  "src": "29493:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Mappers_$28087",
                    "typeString": "enum IWitPriceFeedsTypes.Mappers"
                  },
                  "typeName": {
                    "id": 24639,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24638,
                      "name": "IWitPriceFeedsTypes.Mappers",
                      "nameLocations": [
                        "29493:19:61",
                        "29513:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28087,
                      "src": "29493:27:61"
                    },
                    "referencedDeclaration": 28087,
                    "src": "29493:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Mappers_$28087",
                      "typeString": "enum IWitPriceFeedsTypes.Mappers"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24642,
                  "mutability": "mutable",
                  "name": "mapperDeps",
                  "nameLocation": "29551:10:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24672,
                  "src": "29543:18:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24641,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29543:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29412:160:61"
            },
            "returnParameters": {
              "id": 24644,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29596:0:61"
            },
            "scope": 25111,
            "src": "29391:372:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24719,
              "nodeType": "Block",
              "src": "30013:218:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "30032:15:61",
                        "subExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 24688,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24675,
                              "src": "30033:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 24689,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "30038:7:61",
                            "memberName": "settled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24632,
                            "src": "30033:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                              "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                            }
                          },
                          "id": 24690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30033:14:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "616c726561647920736574746c6564",
                        "id": 24692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30049:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        },
                        "value": "already settled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eb21810b03ce338d5aefa85361fb6ccf25fa4805c134f9dfc0fc5c50a3572b6c",
                          "typeString": "literal_string \"already settled\""
                        }
                      ],
                      "id": 24687,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "30024:7:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30024:43:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24694,
                  "nodeType": "ExpressionStatement",
                  "src": "30024:43:61"
                },
                {
                  "expression": {
                    "id": 24699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24695,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24675,
                        "src": "30078:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24697,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "30083:8:61",
                      "memberName": "exponent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22366,
                      "src": "30078:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24698,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24677,
                      "src": "30094:8:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int8",
                        "typeString": "int8"
                      }
                    },
                    "src": "30078:24:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "id": 24700,
                  "nodeType": "ExpressionStatement",
                  "src": "30078:24:61"
                },
                {
                  "expression": {
                    "id": 24705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24701,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24675,
                        "src": "30113:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24703,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "30118:6:61",
                      "memberName": "oracle",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22377,
                      "src": "30113:11:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24704,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24680,
                      "src": "30127:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      }
                    },
                    "src": "30113:20:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    }
                  },
                  "id": 24706,
                  "nodeType": "ExpressionStatement",
                  "src": "30113:20:61"
                },
                {
                  "expression": {
                    "id": 24711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24707,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24675,
                        "src": "30144:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24709,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "30149:13:61",
                      "memberName": "oracleAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22380,
                      "src": "30144:18:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24710,
                      "name": "oracleAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24682,
                      "src": "30165:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "30144:34:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 24712,
                  "nodeType": "ExpressionStatement",
                  "src": "30144:34:61"
                },
                {
                  "expression": {
                    "id": 24717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 24713,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24675,
                        "src": "30189:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24715,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "30194:13:61",
                      "memberName": "oracleSources",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22383,
                      "src": "30189:18:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24716,
                      "name": "oracleSources",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24684,
                      "src": "30210:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "30189:34:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 24718,
                  "nodeType": "ExpressionStatement",
                  "src": "30189:34:61"
                }
              ]
            },
            "id": 24720,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settleOracle",
            "nameLocation": "29780:12:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24685,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24675,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "29825:4:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24720,
                  "src": "29807:22:61",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                  },
                  "typeName": {
                    "id": 24674,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24673,
                      "name": "PriceFeed",
                      "nameLocations": [
                        "29807:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22395,
                      "src": "29807:9:61"
                    },
                    "referencedDeclaration": 22395,
                    "src": "29807:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24677,
                  "mutability": "mutable",
                  "name": "exponent",
                  "nameLocation": "29849:8:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24720,
                  "src": "29844:13:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 24676,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "29844:4:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24680,
                  "mutability": "mutable",
                  "name": "oracle",
                  "nameLocation": "29900:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24720,
                  "src": "29872:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Oracles_$28092",
                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                  },
                  "typeName": {
                    "id": 24679,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24678,
                      "name": "IWitPriceFeedsTypes.Oracles",
                      "nameLocations": [
                        "29872:19:61",
                        "29892:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28092,
                      "src": "29872:27:61"
                    },
                    "referencedDeclaration": 28092,
                    "src": "29872:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24682,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "29929:13:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24720,
                  "src": "29921:21:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29921:7:61",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24684,
                  "mutability": "mutable",
                  "name": "oracleSources",
                  "nameLocation": "29965:13:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24720,
                  "src": "29957:21:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24683,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29957:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29792:197:61"
            },
            "returnParameters": {
              "id": 24686,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30013:0:61"
            },
            "scope": 25111,
            "src": "29771:460:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24779,
              "nodeType": "Block",
              "src": "30858:577:61",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    },
                    "id": 24732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 24728,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24723,
                      "src": "30873:6:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 24729,
                          "name": "IWitPriceFeedsTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28156,
                          "src": "30883:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                            "typeString": "type(contract IWitPriceFeedsTypes)"
                          }
                        },
                        "id": 24730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "30903:7:61",
                        "memberName": "Oracles",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28092,
                        "src": "30883:27:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                          "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                        }
                      },
                      "id": 24731,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "30911:6:61",
                      "memberName": "Witnet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28088,
                      "src": "30883:34:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      }
                    },
                    "src": "30873:44:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_enum$_Oracles_$28092",
                        "typeString": "enum IWitPriceFeedsTypes.Oracles"
                      },
                      "id": 24743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 24739,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24723,
                        "src": "31001:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "expression": {
                            "id": 24740,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "31011:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 24741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "31031:7:61",
                          "memberName": "Oracles",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28092,
                          "src": "31011:27:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                            "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                          }
                        },
                        "id": 24742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "31039:7:61",
                        "memberName": "ERC2362",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28089,
                        "src": "31011:35:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        }
                      },
                      "src": "31001:45:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_enum$_Oracles_$28092",
                          "typeString": "enum IWitPriceFeedsTypes.Oracles"
                        },
                        "id": 24754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 24750,
                          "name": "oracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24723,
                          "src": "31128:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "expression": {
                              "id": 24751,
                              "name": "IWitPriceFeedsTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28156,
                              "src": "31138:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                "typeString": "type(contract IWitPriceFeedsTypes)"
                              }
                            },
                            "id": 24752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "31158:7:61",
                            "memberName": "Oracles",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28092,
                            "src": "31138:27:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                              "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                            }
                          },
                          "id": 24753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31166:9:61",
                          "memberName": "Chainlink",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28090,
                          "src": "31138:37:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          }
                        },
                        "src": "31128:47:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Oracles_$28092",
                            "typeString": "enum IWitPriceFeedsTypes.Oracles"
                          },
                          "id": 24765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 24761,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24723,
                            "src": "31271:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 24762,
                                "name": "IWitPriceFeedsTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28156,
                                "src": "31281:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                  "typeString": "type(contract IWitPriceFeedsTypes)"
                                }
                              },
                              "id": 24763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "31301:7:61",
                              "memberName": "Oracles",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28092,
                              "src": "31281:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Oracles_$28092_$",
                                "typeString": "type(enum IWitPriceFeedsTypes.Oracles)"
                              }
                            },
                            "id": 24764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "31309:4:61",
                            "memberName": "Pyth",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28091,
                            "src": "31281:32:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Oracles_$28092",
                              "typeString": "enum IWitPriceFeedsTypes.Oracles"
                            }
                          },
                          "src": "31271:42:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24774,
                          "nodeType": "Block",
                          "src": "31391:37:61",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "307830",
                                "id": 24772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "31413:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              },
                              "functionReturnParameters": 24727,
                              "id": 24773,
                              "nodeType": "Return",
                              "src": "31406:10:61"
                            }
                          ]
                        },
                        "id": 24775,
                        "nodeType": "IfStatement",
                        "src": "31267:161:61",
                        "trueBody": {
                          "id": 24771,
                          "nodeType": "Block",
                          "src": "31315:70:61",
                          "statements": [
                            {
                              "expression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 24767,
                                      "name": "IWitPyth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 29643,
                                      "src": "31342:8:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                        "typeString": "type(contract IWitPyth)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                        "typeString": "type(contract IWitPyth)"
                                      }
                                    ],
                                    "id": 24766,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967269,
                                    "src": "31337:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 24768,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "31337:14:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IWitPyth_$29643",
                                    "typeString": "type(contract IWitPyth)"
                                  }
                                },
                                "id": 24769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "31352:11:61",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "31337:26:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 24727,
                              "id": 24770,
                              "nodeType": "Return",
                              "src": "31330:33:61"
                            }
                          ]
                        }
                      },
                      "id": 24776,
                      "nodeType": "IfStatement",
                      "src": "31124:304:61",
                      "trueBody": {
                        "id": 24760,
                        "nodeType": "Block",
                        "src": "31177:84:61",
                        "statements": [
                          {
                            "expression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 24756,
                                    "name": "IChainlinkAggregatorV3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28507,
                                    "src": "31204:22:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregatorV3_$28507_$",
                                      "typeString": "type(contract IChainlinkAggregatorV3)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregatorV3_$28507_$",
                                      "typeString": "type(contract IChainlinkAggregatorV3)"
                                    }
                                  ],
                                  "id": 24755,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "31199:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 24757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31199:28:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IChainlinkAggregatorV3_$28507",
                                  "typeString": "type(contract IChainlinkAggregatorV3)"
                                }
                              },
                              "id": 24758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "31228:11:61",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "31199:40:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "functionReturnParameters": 24727,
                            "id": 24759,
                            "nodeType": "Return",
                            "src": "31192:47:61"
                          }
                        ]
                      }
                    },
                    "id": 24777,
                    "nodeType": "IfStatement",
                    "src": "30997:431:61",
                    "trueBody": {
                      "id": 24749,
                      "nodeType": "Block",
                      "src": "31048:70:61",
                      "statements": [
                        {
                          "expression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 24745,
                                  "name": "IERC2362",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 644,
                                  "src": "31075:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC2362_$644_$",
                                    "typeString": "type(contract IERC2362)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC2362_$644_$",
                                    "typeString": "type(contract IERC2362)"
                                  }
                                ],
                                "id": 24744,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967269,
                                "src": "31070:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 24746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31070:14:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2362_$644",
                                "typeString": "type(contract IERC2362)"
                              }
                            },
                            "id": 24747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "31085:11:61",
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "31070:26:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "functionReturnParameters": 24727,
                          "id": 24748,
                          "nodeType": "Return",
                          "src": "31063:33:61"
                        }
                      ]
                    }
                  },
                  "id": 24778,
                  "nodeType": "IfStatement",
                  "src": "30869:559:61",
                  "trueBody": {
                    "id": 24738,
                    "nodeType": "Block",
                    "src": "30919:72:61",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 24734,
                                "name": "IWitOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26581,
                                "src": "30946:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWitOracle_$26581_$",
                                  "typeString": "type(contract IWitOracle)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IWitOracle_$26581_$",
                                  "typeString": "type(contract IWitOracle)"
                                }
                              ],
                              "id": 24733,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "30941:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 24735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30941:16:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IWitOracle_$26581",
                              "typeString": "type(contract IWitOracle)"
                            }
                          },
                          "id": 24736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30958:11:61",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "30941:28:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 24727,
                        "id": 24737,
                        "nodeType": "Return",
                        "src": "30934:35:61"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "cab8a78e",
            "id": 24780,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toERC165Id",
            "nameLocation": "30782:10:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24724,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24723,
                  "mutability": "mutable",
                  "name": "oracle",
                  "nameLocation": "30821:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24780,
                  "src": "30793:34:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Oracles_$28092",
                    "typeString": "enum IWitPriceFeedsTypes.Oracles"
                  },
                  "typeName": {
                    "id": 24722,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24721,
                      "name": "IWitPriceFeedsTypes.Oracles",
                      "nameLocations": [
                        "30793:19:61",
                        "30813:7:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28092,
                      "src": "30793:27:61"
                    },
                    "referencedDeclaration": 28092,
                    "src": "30793:27:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Oracles_$28092",
                      "typeString": "enum IWitPriceFeedsTypes.Oracles"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30792:36:61"
            },
            "returnParameters": {
              "id": 24727,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24726,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24780,
                  "src": "30850:6:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 24725,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "30850:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30849:8:61"
            },
            "scope": 25111,
            "src": "30773:662:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 24833,
              "nodeType": "Block",
              "src": "31769:305:61",
              "statements": [
                {
                  "assignments": [
                    24786
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 24786,
                      "mutability": "mutable",
                      "name": "_totalIds",
                      "nameLocation": "31785:9:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 24833,
                      "src": "31780:14:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 24785,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "31780:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 24791,
                  "initialValue": {
                    "expression": {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 24787,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23835,
                          "src": "31797:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                            "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                          }
                        },
                        "id": 24788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31797:6:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                        }
                      },
                      "id": 24789,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "31804:3:61",
                      "memberName": "ids",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22309,
                      "src": "31797:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                        "typeString": "IWitPyth.ID[] storage ref"
                      }
                    },
                    "id": 24790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "31808:6:61",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "31797:17:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "31780:34:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 24794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 24792,
                      "name": "_totalIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24786,
                      "src": "31829:9:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 24793,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "31841:1:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "31829:13:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 24832,
                  "nodeType": "IfStatement",
                  "src": "31825:242:61",
                  "trueBody": {
                    "id": 24831,
                    "nodeType": "Block",
                    "src": "31844:223:61",
                    "statements": [
                      {
                        "expression": {
                          "id": 24805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 24795,
                            "name": "_footprint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24783,
                            "src": "31859:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "expression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 24798,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23835,
                                          "src": "31894:4:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                            "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                          }
                                        },
                                        "id": 24799,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "31894:6:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                        }
                                      },
                                      "id": 24800,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "31901:3:61",
                                      "memberName": "ids",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22309,
                                      "src": "31894:10:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                        "typeString": "IWitPyth.ID[] storage ref"
                                      }
                                    },
                                    "id": 24802,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 24801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "31905:1:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "31894:13:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                      "typeString": "IWitPyth.ID"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                      "typeString": "IWitPyth.ID"
                                    }
                                  ],
                                  "id": 24797,
                                  "name": "_intoID4",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24941,
                                  "src": "31885:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ID_$29561_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                    "typeString": "function (IWitPyth.ID) pure returns (IWitPriceFeedsTypes.ID4)"
                                  }
                                },
                                "id": 24803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31885:23:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                }
                              ],
                              "id": 24796,
                              "name": "_footprintOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24918,
                              "src": "31872:12:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                                "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (bytes4)"
                              }
                            },
                            "id": 24804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31872:37:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "31859:50:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 24806,
                        "nodeType": "ExpressionStatement",
                        "src": "31859:50:61"
                      },
                      {
                        "body": {
                          "id": 24829,
                          "nodeType": "Block",
                          "src": "31968:88:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 24817,
                                  "name": "_footprint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24783,
                                  "src": "31987:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "^=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "expression": {
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 24820,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 23835,
                                                "src": "32023:4:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                                  "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                                }
                                              },
                                              "id": 24821,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "32023:6:61",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                              }
                                            },
                                            "id": 24822,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "32030:3:61",
                                            "memberName": "ids",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22309,
                                            "src": "32023:10:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                              "typeString": "IWitPyth.ID[] storage ref"
                                            }
                                          },
                                          "id": 24824,
                                          "indexExpression": {
                                            "id": 24823,
                                            "name": "_ix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24808,
                                            "src": "32034:3:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "32023:15:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                            "typeString": "IWitPyth.ID"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                            "typeString": "IWitPyth.ID"
                                          }
                                        ],
                                        "id": 24819,
                                        "name": "_intoID4",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24941,
                                        "src": "32014:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ID_$29561_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                                          "typeString": "function (IWitPyth.ID) pure returns (IWitPriceFeedsTypes.ID4)"
                                        }
                                      },
                                      "id": 24825,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "32014:25:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                        "typeString": "IWitPriceFeedsTypes.ID4"
                                      }
                                    ],
                                    "id": 24818,
                                    "name": "_footprintOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24918,
                                    "src": "32001:12:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                                      "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (bytes4)"
                                    }
                                  },
                                  "id": 24826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "32001:39:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "31987:53:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 24828,
                              "nodeType": "ExpressionStatement",
                              "src": "31987:53:61"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 24811,
                            "name": "_ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24808,
                            "src": "31943:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 24812,
                            "name": "_totalIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24786,
                            "src": "31949:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31943:15:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24830,
                        "initializationExpression": {
                          "assignments": [
                            24808
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 24808,
                              "mutability": "mutable",
                              "name": "_ix",
                              "nameLocation": "31934:3:61",
                              "nodeType": "VariableDeclaration",
                              "scope": 24830,
                              "src": "31929:8:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 24807,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "31929:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 24810,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 24809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31940:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "31929:12:61"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 24815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "31960:6:61",
                            "subExpression": {
                              "id": 24814,
                              "name": "_ix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24808,
                              "src": "31963:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 24816,
                          "nodeType": "ExpressionStatement",
                          "src": "31960:6:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "31924:132:61"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 24834,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_computePriceFeedsFootprint",
            "nameLocation": "31698:27:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24781,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31725:2:61"
            },
            "returnParameters": {
              "id": 24784,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24783,
                  "mutability": "mutable",
                  "name": "_footprint",
                  "nameLocation": "31757:10:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24834,
                  "src": "31750:17:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 24782,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "31750:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31749:19:61"
            },
            "scope": 25111,
            "src": "31689:385:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 24917,
              "nodeType": "Block",
              "src": "32163:775:61",
              "statements": [
                {
                  "assignments": [
                    24846
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 24846,
                      "mutability": "mutable",
                      "name": "self",
                      "nameLocation": "32213:4:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 24917,
                      "src": "32174:43:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 24845,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 24844,
                          "name": "WitPriceFeedsDataLib.PriceFeed",
                          "nameLocations": [
                            "32174:20:61",
                            "32195:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "32174:30:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "32174:30:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 24850,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 24848,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24837,
                        "src": "32234:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 24847,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "32220:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 24849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32220:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32174:64:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 24857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 24851,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24846,
                        "src": "32253:4:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                        }
                      },
                      "id": 24852,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "32258:13:61",
                      "memberName": "oracleSources",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22383,
                      "src": "32253:18:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 24855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32283:1:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 24854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "32275:7:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 24853,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "32275:7:61",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 24856,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32275:10:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "32253:32:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 24915,
                    "nodeType": "Block",
                    "src": "32755:176:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 24907,
                                          "name": "id4",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24837,
                                          "src": "32860:3:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                            "typeString": "IWitPriceFeedsTypes.ID4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                            "typeString": "IWitPriceFeedsTypes.ID4"
                                          }
                                        ],
                                        "expression": {
                                          "expression": {
                                            "id": 24904,
                                            "name": "IWitPriceFeedsTypes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 28156,
                                            "src": "32829:19:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                              "typeString": "type(contract IWitPriceFeedsTypes)"
                                            }
                                          },
                                          "id": 24905,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "32849:3:61",
                                          "memberName": "ID4",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 28155,
                                          "src": "32829:23:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                            "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                          }
                                        },
                                        "id": 24906,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "32853:6:61",
                                        "memberName": "unwrap",
                                        "nodeType": "MemberAccess",
                                        "src": "32829:30:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                                          "typeString": "function (IWitPriceFeedsTypes.ID4) pure returns (bytes4)"
                                        }
                                      },
                                      "id": 24908,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "32829:35:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 24909,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24846,
                                        "src": "32884:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                        }
                                      },
                                      "id": 24910,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "32889:13:61",
                                      "memberName": "oracleSources",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22383,
                                      "src": "32884:18:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 24902,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "32794:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 24903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "32798:12:61",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "32794:16:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 24911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "32794:123:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 24901,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "32784:9:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 24912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32784:134:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 24900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "32777:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes4_$",
                              "typeString": "type(bytes4)"
                            },
                            "typeName": {
                              "id": 24899,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "32777:6:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 24913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32777:142:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 24841,
                        "id": 24914,
                        "nodeType": "Return",
                        "src": "32770:149:61"
                      }
                    ]
                  },
                  "id": 24916,
                  "nodeType": "IfStatement",
                  "src": "32249:682:61",
                  "trueBody": {
                    "id": 24898,
                    "nodeType": "Block",
                    "src": "32287:462:61",
                    "statements": [
                      {
                        "expression": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Mappers_$28087",
                              "typeString": "enum IWitPriceFeedsTypes.Mappers"
                            },
                            "id": 24863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 24858,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24846,
                                "src": "32309:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                }
                              },
                              "id": 24859,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "32314:6:61",
                              "memberName": "mapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22373,
                              "src": "32309:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "expression": {
                                  "id": 24860,
                                  "name": "IWitPriceFeedsTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28156,
                                  "src": "32324:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                  }
                                },
                                "id": 24861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "32344:7:61",
                                "memberName": "Mappers",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28087,
                                "src": "32324:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Mappers_$28087_$",
                                  "typeString": "type(enum IWitPriceFeedsTypes.Mappers)"
                                }
                              },
                              "id": 24862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "32352:4:61",
                              "memberName": "None",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28082,
                              "src": "32324:32:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Mappers_$28087",
                                "typeString": "enum IWitPriceFeedsTypes.Mappers"
                              }
                            },
                            "src": "32309:47:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "components": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 24888,
                                                "name": "id4",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24837,
                                                "src": "32653:3:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                                }
                                              ],
                                              "expression": {
                                                "expression": {
                                                  "id": 24885,
                                                  "name": "IWitPriceFeedsTypes",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 28156,
                                                  "src": "32622:19:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                                  }
                                                },
                                                "id": 24886,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "32642:3:61",
                                                "memberName": "ID4",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 28155,
                                                "src": "32622:23:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                                  "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                                }
                                              },
                                              "id": 24887,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "32646:6:61",
                                              "memberName": "unwrap",
                                              "nodeType": "MemberAccess",
                                              "src": "32622:30:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                                                "typeString": "function (IWitPriceFeedsTypes.ID4) pure returns (bytes4)"
                                              }
                                            },
                                            "id": 24889,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "32622:35:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 24890,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24846,
                                              "src": "32681:4:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                              }
                                            },
                                            "id": 24891,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "32686:13:61",
                                            "memberName": "oracleAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22380,
                                            "src": "32681:18:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "id": 24883,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967295,
                                            "src": "32583:3:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 24884,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "32587:12:61",
                                          "memberName": "encodePacked",
                                          "nodeType": "MemberAccess",
                                          "src": "32583:16:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 24892,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "32583:135:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 24882,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967288,
                                      "src": "32573:9:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 24893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "32573:146:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 24881,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "32566:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes4_$",
                                    "typeString": "type(bytes4)"
                                  },
                                  "typeName": {
                                    "id": 24880,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "32566:6:61",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 24894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32566:154:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "id": 24895,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "32547:188:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 24896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "32309:426:61",
                          "trueExpression": {
                            "components": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 24872,
                                                "name": "id4",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24837,
                                                "src": "32465:3:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                                  "typeString": "IWitPriceFeedsTypes.ID4"
                                                }
                                              ],
                                              "expression": {
                                                "expression": {
                                                  "id": 24869,
                                                  "name": "IWitPriceFeedsTypes",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 28156,
                                                  "src": "32434:19:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                                                    "typeString": "type(contract IWitPriceFeedsTypes)"
                                                  }
                                                },
                                                "id": 24870,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "32454:3:61",
                                                "memberName": "ID4",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 28155,
                                                "src": "32434:23:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                                                  "typeString": "type(IWitPriceFeedsTypes.ID4)"
                                                }
                                              },
                                              "id": 24871,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "32458:6:61",
                                              "memberName": "unwrap",
                                              "nodeType": "MemberAccess",
                                              "src": "32434:30:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID4_$28155_$returns$_t_bytes4_$",
                                                "typeString": "function (IWitPriceFeedsTypes.ID4) pure returns (bytes4)"
                                              }
                                            },
                                            "id": 24873,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "32434:35:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 24874,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24846,
                                              "src": "32493:4:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                              }
                                            },
                                            "id": 24875,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "32498:10:61",
                                            "memberName": "mapperDeps",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22386,
                                            "src": "32493:15:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "expression": {
                                            "id": 24867,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967295,
                                            "src": "32395:3:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 24868,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "32399:12:61",
                                          "memberName": "encodePacked",
                                          "nodeType": "MemberAccess",
                                          "src": "32395:16:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 24876,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "32395:132:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 24866,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967288,
                                      "src": "32385:9:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 24877,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "32385:143:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 24865,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "32378:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes4_$",
                                    "typeString": "type(bytes4)"
                                  },
                                  "typeName": {
                                    "id": 24864,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "32378:6:61",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 24878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32378:151:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "id": 24879,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "32359:185:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 24841,
                        "id": 24897,
                        "nodeType": "Return",
                        "src": "32302:433:61"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 24918,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_footprintOf",
            "nameLocation": "32091:12:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24837,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "32128:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24918,
                  "src": "32104:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24836,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24835,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "32104:19:61",
                        "32124:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "32104:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "32104:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32103:29:61"
            },
            "returnParameters": {
              "id": 24841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24840,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24918,
                  "src": "32155:6:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 24839,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "32155:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32154:8:61"
            },
            "scope": 25111,
            "src": "32082:856:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 24940,
              "nodeType": "Block",
              "src": "33027:86:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 24935,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24921,
                                "src": "33100:2:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                  "typeString": "IWitPyth.ID"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                  "typeString": "IWitPyth.ID"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 24932,
                                  "name": "IWitPyth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29643,
                                  "src": "33081:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                    "typeString": "type(contract IWitPyth)"
                                  }
                                },
                                "id": 24933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "33090:2:61",
                                "memberName": "ID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 29561,
                                "src": "33081:11:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_ID_$29561_$",
                                  "typeString": "type(IWitPyth.ID)"
                                }
                              },
                              "id": 24934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "33093:6:61",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "33081:18:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ID_$29561_$returns$_t_bytes32_$",
                                "typeString": "function (IWitPyth.ID) pure returns (bytes32)"
                              }
                            },
                            "id": 24936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33081:22:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 24931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "33074:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": {
                            "id": 24930,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "33074:6:61",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33074:30:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 24927,
                          "name": "IWitPriceFeedsTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28156,
                          "src": "33045:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                            "typeString": "type(contract IWitPriceFeedsTypes)"
                          }
                        },
                        "id": 24928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33065:3:61",
                        "memberName": "ID4",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28155,
                        "src": "33045:23:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                          "typeString": "type(IWitPriceFeedsTypes.ID4)"
                        }
                      },
                      "id": 24929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "33069:4:61",
                      "memberName": "wrap",
                      "nodeType": "MemberAccess",
                      "src": "33045:28:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                        "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                      }
                    },
                    "id": 24938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33045:60:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "functionReturnParameters": 24926,
                  "id": 24939,
                  "nodeType": "Return",
                  "src": "33038:67:61"
                }
              ]
            },
            "id": 24941,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_intoID4",
            "nameLocation": "32955:8:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24921,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "32976:2:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24941,
                  "src": "32964:14:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                    "typeString": "IWitPyth.ID"
                  },
                  "typeName": {
                    "id": 24920,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24919,
                      "name": "IWitPyth.ID",
                      "nameLocations": [
                        "32964:8:61",
                        "32973:2:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 29561,
                      "src": "32964:11:61"
                    },
                    "referencedDeclaration": 29561,
                    "src": "32964:11:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                      "typeString": "IWitPyth.ID"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32963:16:61"
            },
            "returnParameters": {
              "id": 24926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24925,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24941,
                  "src": "33002:23:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24924,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24923,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "33002:19:61",
                        "33022:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "33002:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "33002:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33001:25:61"
            },
            "scope": 25111,
            "src": "32946:167:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 24961,
              "nodeType": "Block",
              "src": "33209:63:61",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 24950,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23835,
                          "src": "33227:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                            "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                          }
                        },
                        "id": 24951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33227:6:61",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                        }
                      },
                      "id": 24952,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "33234:3:61",
                      "memberName": "ids",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22309,
                      "src": "33227:10:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                        "typeString": "IWitPyth.ID[] storage ref"
                      }
                    },
                    "id": 24959,
                    "indexExpression": {
                      "expression": {
                        "baseExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 24953,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23835,
                              "src": "33238:4:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                              }
                            },
                            "id": 24954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33238:6:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                              "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                            }
                          },
                          "id": 24955,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "33245:7:61",
                          "memberName": "records",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22315,
                          "src": "33238:14:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_struct$_PriceFeed_$22395_storage_$",
                            "typeString": "mapping(IWitPriceFeedsTypes.ID4 => struct WitPriceFeedsDataLib.PriceFeed storage ref)"
                          }
                        },
                        "id": 24957,
                        "indexExpression": {
                          "id": 24956,
                          "name": "id4",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24944,
                          "src": "33253:3:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                            "typeString": "IWitPriceFeedsTypes.ID4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "33238:19:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage ref"
                        }
                      },
                      "id": 24958,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "33258:5:61",
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22363,
                      "src": "33238:25:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "33227:37:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                      "typeString": "IWitPyth.ID"
                    }
                  },
                  "functionReturnParameters": 24949,
                  "id": 24960,
                  "nodeType": "Return",
                  "src": "33220:44:61"
                }
              ]
            },
            "id": 24962,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_intoWitPythID",
            "nameLocation": "33130:14:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24944,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "33169:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24962,
                  "src": "33145:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 24943,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24942,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "33145:19:61",
                        "33165:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "33145:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "33145:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33144:29:61"
            },
            "returnParameters": {
              "id": 24949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24948,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24962,
                  "src": "33196:11:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                    "typeString": "IWitPyth.ID"
                  },
                  "typeName": {
                    "id": 24947,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24946,
                      "name": "IWitPyth.ID",
                      "nameLocations": [
                        "33196:8:61",
                        "33205:2:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 29561,
                      "src": "33196:11:61"
                    },
                    "referencedDeclaration": 29561,
                    "src": "33196:11:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                      "typeString": "IWitPyth.ID"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33195:13:61"
            },
            "scope": 25111,
            "src": "33121:151:61",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 24985,
              "nodeType": "Block",
              "src": "33390:268:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 24972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "33443:1:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "expression": {
                          "id": 24973,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24965,
                          "src": "33466:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 24974,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33473:5:61",
                        "memberName": "price",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28096,
                        "src": "33466:12:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "expression": {
                          "id": 24975,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24965,
                          "src": "33505:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 24976,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33512:10:61",
                        "memberName": "deltaPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28098,
                        "src": "33505:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      {
                        "expression": {
                          "id": 24977,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24965,
                          "src": "33548:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 24978,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33555:9:61",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28101,
                        "src": "33548:16:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        }
                      },
                      {
                        "expression": {
                          "id": 24979,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24965,
                          "src": "33586:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 24980,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33593:5:61",
                        "memberName": "trail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28104,
                        "src": "33586:12:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      },
                      {
                        "expression": {
                          "id": 24981,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24965,
                          "src": "33623:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 24982,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33630:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28094,
                        "src": "33623:15:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        },
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      ],
                      "id": 24971,
                      "name": "PriceData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22357,
                      "src": "33408:9:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_PriceData_$22357_storage_ptr_$",
                        "typeString": "type(struct WitPriceFeedsDataLib.PriceData storage pointer)"
                      }
                    },
                    "id": 24983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "33433:8:61",
                      "33459:5:61",
                      "33493:10:61",
                      "33537:9:61",
                      "33579:5:61",
                      "33613:8:61"
                    ],
                    "names": [
                      "emaPrice",
                      "price",
                      "deltaPrice",
                      "timestamp",
                      "trail",
                      "exponent"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "33408:242:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                    }
                  },
                  "functionReturnParameters": 24970,
                  "id": 24984,
                  "nodeType": "Return",
                  "src": "33401:249:61"
                }
              ]
            },
            "id": 24986,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_intoPriceData",
            "nameLocation": "33293:14:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24965,
                  "mutability": "mutable",
                  "name": "_price",
                  "nameLocation": "33341:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24986,
                  "src": "33308:39:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 24964,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24963,
                      "name": "IWitPriceFeedsTypes.Price",
                      "nameLocations": [
                        "33308:19:61",
                        "33328:5:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "33308:25:61"
                    },
                    "referencedDeclaration": 28105,
                    "src": "33308:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33307:41:61"
            },
            "returnParameters": {
              "id": 24970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24969,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24986,
                  "src": "33372:16:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  },
                  "typeName": {
                    "id": 24968,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24967,
                      "name": "PriceData",
                      "nameLocations": [
                        "33372:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22357,
                      "src": "33372:9:61"
                    },
                    "referencedDeclaration": 22357,
                    "src": "33372:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33371:18:61"
            },
            "scope": 25111,
            "src": "33284:374:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 25009,
              "nodeType": "Block",
              "src": "33775:268:61",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 24996,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24989,
                          "src": "33828:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 24997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33835:5:61",
                        "memberName": "price",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28096,
                        "src": "33828:12:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 24998,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "33862:1:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "expression": {
                          "id": 24999,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24989,
                          "src": "33890:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 25000,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33897:10:61",
                        "memberName": "deltaPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28098,
                        "src": "33890:17:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      {
                        "expression": {
                          "id": 25001,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24989,
                          "src": "33933:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 25002,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33940:9:61",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28101,
                        "src": "33933:16:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        }
                      },
                      {
                        "expression": {
                          "id": 25003,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24989,
                          "src": "33971:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 25004,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "33978:5:61",
                        "memberName": "trail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28104,
                        "src": "33971:12:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        }
                      },
                      {
                        "expression": {
                          "id": 25005,
                          "name": "_price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24989,
                          "src": "34008:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                            "typeString": "struct IWitPriceFeedsTypes.Price memory"
                          }
                        },
                        "id": 25006,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "34015:8:61",
                        "memberName": "exponent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28094,
                        "src": "34008:15:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_Timestamp_$37157",
                          "typeString": "Witnet.Timestamp"
                        },
                        {
                          "typeIdentifier": "t_userDefinedValueType$_TransactionHash_$37159",
                          "typeString": "Witnet.TransactionHash"
                        },
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      ],
                      "id": 24995,
                      "name": "PriceData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22357,
                      "src": "33793:9:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_PriceData_$22357_storage_ptr_$",
                        "typeString": "type(struct WitPriceFeedsDataLib.PriceData storage pointer)"
                      }
                    },
                    "id": 25007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "33818:8:61",
                      "33855:5:61",
                      "33878:10:61",
                      "33922:9:61",
                      "33964:5:61",
                      "33998:8:61"
                    ],
                    "names": [
                      "emaPrice",
                      "price",
                      "deltaPrice",
                      "timestamp",
                      "trail",
                      "exponent"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "33793:242:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData memory"
                    }
                  },
                  "functionReturnParameters": 24994,
                  "id": 25008,
                  "nodeType": "Return",
                  "src": "33786:249:61"
                }
              ]
            },
            "id": 25010,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_intoEmaPriceData",
            "nameLocation": "33675:17:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24989,
                  "mutability": "mutable",
                  "name": "_price",
                  "nameLocation": "33726:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 25010,
                  "src": "33693:39:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 24988,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24987,
                      "name": "IWitPriceFeedsTypes.Price",
                      "nameLocations": [
                        "33693:19:61",
                        "33713:5:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "33693:25:61"
                    },
                    "referencedDeclaration": 28105,
                    "src": "33693:25:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33692:41:61"
            },
            "returnParameters": {
              "id": 24994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24993,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 25010,
                  "src": "33757:16:61",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PriceData_$22357_memory_ptr",
                    "typeString": "struct WitPriceFeedsDataLib.PriceData"
                  },
                  "typeName": {
                    "id": 24992,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24991,
                      "name": "PriceData",
                      "nameLocations": [
                        "33757:9:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22357,
                      "src": "33757:9:61"
                    },
                    "referencedDeclaration": 22357,
                    "src": "33757:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceData_$22357_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33756:18:61"
            },
            "scope": 25111,
            "src": "33666:377:61",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 25109,
              "nodeType": "Block",
              "src": "35487:787:61",
              "statements": [
                {
                  "assignments": [
                    25019
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25019,
                      "mutability": "mutable",
                      "name": "_id",
                      "nameLocation": "35506:3:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 25109,
                      "src": "35498:11:61",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 25018,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "35498:7:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 25023,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 25021,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25012,
                        "src": "35517:6:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 25020,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24565,
                      "src": "35512:4:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 25022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35512:12:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35498:26:61"
                },
                {
                  "expression": {
                    "id": 25033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 25024,
                      "name": "id4",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25016,
                      "src": "35535:3:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 25030,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25019,
                              "src": "35577:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 25029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "35570:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes4_$",
                              "typeString": "type(bytes4)"
                            },
                            "typeName": {
                              "id": 25028,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "35570:6:61",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 25031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35570:11:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 25025,
                            "name": "IWitPriceFeedsTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28156,
                            "src": "35541:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitPriceFeedsTypes_$28156_$",
                              "typeString": "type(contract IWitPriceFeedsTypes)"
                            }
                          },
                          "id": 25026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "35561:3:61",
                          "memberName": "ID4",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28155,
                          "src": "35541:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_ID4_$28155_$",
                            "typeString": "type(IWitPriceFeedsTypes.ID4)"
                          }
                        },
                        "id": 25027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "35565:4:61",
                        "memberName": "wrap",
                        "nodeType": "MemberAccess",
                        "src": "35541:28:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_wrap_pure$_t_bytes4_$returns$_t_userDefinedValueType$_ID4_$28155_$",
                          "typeString": "function (bytes4) pure returns (IWitPriceFeedsTypes.ID4)"
                        }
                      },
                      "id": 25032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "35541:41:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                        "typeString": "IWitPriceFeedsTypes.ID4"
                      }
                    },
                    "src": "35535:47:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "id": 25034,
                  "nodeType": "ExpressionStatement",
                  "src": "35535:47:61"
                },
                {
                  "assignments": [
                    25037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25037,
                      "mutability": "mutable",
                      "name": "__record",
                      "nameLocation": "35611:8:61",
                      "nodeType": "VariableDeclaration",
                      "scope": 25109,
                      "src": "35593:26:61",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                        "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                      },
                      "typeName": {
                        "id": 25036,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 25035,
                          "name": "PriceFeed",
                          "nameLocations": [
                            "35593:9:61"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 22395,
                          "src": "35593:9:61"
                        },
                        "referencedDeclaration": 22395,
                        "src": "35593:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                          "typeString": "struct WitPriceFeedsDataLib.PriceFeed"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 25041,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 25039,
                        "name": "id4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25016,
                        "src": "35636:3:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                          "typeString": "IWitPriceFeedsTypes.ID4"
                        }
                      ],
                      "id": 25038,
                      "name": "seekPriceFeed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24598,
                      "src": "35622:13:61",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_ID4_$28155_$returns$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                        "typeString": "function (IWitPriceFeedsTypes.ID4) view returns (struct WitPriceFeedsDataLib.PriceFeed storage pointer)"
                      }
                    },
                    "id": 25040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35622:18:61",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                      "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35593:47:61"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 25055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 25045,
                              "name": "symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25012,
                              "src": "35690:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "expression": {
                              "id": 25043,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967295,
                              "src": "35679:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 25044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "35683:6:61",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "35679:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 25046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35679:18:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 25042,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967288,
                        "src": "35669:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 25047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "35669:29:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 25051,
                                "name": "__record",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25037,
                                "src": "35740:8:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                                }
                              },
                              "id": 25052,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35749:6:61",
                              "memberName": "symbol",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22360,
                              "src": "35740:15:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "expression": {
                              "id": 25049,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967295,
                              "src": "35729:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 25050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "35733:6:61",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "35729:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 25053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35729:27:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 25048,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967288,
                        "src": "35719:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 25054,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "35719:38:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "35669:88:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 25091,
                  "nodeType": "IfStatement",
                  "src": "35651:430:61",
                  "trueBody": {
                    "id": 25090,
                    "nodeType": "Block",
                    "src": "35769:312:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 25057,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23835,
                                        "src": "35810:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                          "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                        }
                                      },
                                      "id": 25058,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "35810:6:61",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                        "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                      }
                                    },
                                    "id": 25059,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "35817:11:61",
                                    "memberName": "reverseDeps",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22322,
                                    "src": "35810:18:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_userDefinedValueType$_ID4_$28155_$_t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage_$",
                                      "typeString": "mapping(IWitPriceFeedsTypes.ID4 => IWitPriceFeedsTypes.ID4[] storage ref)"
                                    }
                                  },
                                  "id": 25061,
                                  "indexExpression": {
                                    "id": 25060,
                                    "name": "id4",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25016,
                                    "src": "35829:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                                      "typeString": "IWitPriceFeedsTypes.ID4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "35810:23:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_userDefinedValueType$_ID4_$28155_$dyn_storage",
                                    "typeString": "IWitPriceFeedsTypes.ID4[] storage ref"
                                  }
                                },
                                "id": 25062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "35834:6:61",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "35810:30:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 25063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "35844:1:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "35810:35:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "63616e6e6f74207265666163746f72206578697369746e672073796d626f6c206966206d6170706564206279206f7468657273",
                              "id": 25065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "35864:53:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5d61cd11ae3989756f34b547e8030531ec22ae7f78845e3c2df1ed1a1a0bef68",
                                "typeString": "literal_string \"cannot refactor exisitng symbol if mapped by others\""
                              },
                              "value": "cannot refactor exisitng symbol if mapped by others"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5d61cd11ae3989756f34b547e8030531ec22ae7f78845e3c2df1ed1a1a0bef68",
                                "typeString": "literal_string \"cannot refactor exisitng symbol if mapped by others\""
                              }
                            ],
                            "id": 25056,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "35784:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35784:148:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25067,
                        "nodeType": "ExpressionStatement",
                        "src": "35784:148:61"
                      },
                      {
                        "expression": {
                          "id": 25072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 25068,
                              "name": "__record",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25037,
                              "src": "35947:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 25070,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35956:6:61",
                            "memberName": "symbol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22360,
                            "src": "35947:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 25071,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25012,
                            "src": "35965:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "35947:24:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 25073,
                        "nodeType": "ExpressionStatement",
                        "src": "35947:24:61"
                      },
                      {
                        "expression": {
                          "id": 25084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 25074,
                              "name": "__record",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25037,
                              "src": "35986:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 25076,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35995:5:61",
                            "memberName": "index",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22363,
                            "src": "35986:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "expression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 25079,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23835,
                                      "src": "36010:4:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                        "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                      }
                                    },
                                    "id": 25080,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "36010:6:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                      "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                    }
                                  },
                                  "id": 25081,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "36017:3:61",
                                  "memberName": "ids",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22309,
                                  "src": "36010:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                    "typeString": "IWitPyth.ID[] storage ref"
                                  }
                                },
                                "id": 25082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "36021:6:61",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "36010:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 25078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "36003:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 25077,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "36003:6:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 25083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "36003:25:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "35986:42:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 25085,
                        "nodeType": "ExpressionStatement",
                        "src": "35986:42:61"
                      },
                      {
                        "expression": {
                          "id": 25088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "36043:26:61",
                          "subExpression": {
                            "expression": {
                              "id": 25086,
                              "name": "__record",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25037,
                              "src": "36050:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                                "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                              }
                            },
                            "id": 25087,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "36059:10:61",
                            "memberName": "lastUpdate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22394,
                            "src": "36050:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PriceData_$22357_storage",
                              "typeString": "struct WitPriceFeedsDataLib.PriceData storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25089,
                        "nodeType": "ExpressionStatement",
                        "src": "36043:26:61"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "id": 25095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "36095:19:61",
                    "subExpression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 25092,
                          "name": "__record",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25037,
                          "src": "36096:8:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PriceFeed_$22395_storage_ptr",
                            "typeString": "struct WitPriceFeedsDataLib.PriceFeed storage pointer"
                          }
                        },
                        "id": 25093,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "36105:7:61",
                        "memberName": "settled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24632,
                        "src": "36096:16:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_PriceFeed_$22395_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_PriceFeed_$22395_storage_ptr_$",
                          "typeString": "function (struct WitPriceFeedsDataLib.PriceFeed storage pointer) view returns (bool)"
                        }
                      },
                      "id": 25094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "36096:18:61",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 25108,
                  "nodeType": "IfStatement",
                  "src": "36091:176:61",
                  "trueBody": {
                    "id": 25107,
                    "nodeType": "Block",
                    "src": "36116:151:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 25103,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25019,
                                  "src": "36250:3:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 25100,
                                    "name": "IWitPyth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 29643,
                                    "src": "36233:8:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWitPyth_$29643_$",
                                      "typeString": "type(contract IWitPyth)"
                                    }
                                  },
                                  "id": 25101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "36242:2:61",
                                  "memberName": "ID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 29561,
                                  "src": "36233:11:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_userDefinedValueType$_ID_$29561_$",
                                    "typeString": "type(IWitPyth.ID)"
                                  }
                                },
                                "id": 25102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "36245:4:61",
                                "memberName": "wrap",
                                "nodeType": "MemberAccess",
                                "src": "36233:16:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ID_$29561_$",
                                  "typeString": "function (bytes32) pure returns (IWitPyth.ID)"
                                }
                              },
                              "id": 25104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36233:21:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                "typeString": "IWitPyth.ID"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                                "typeString": "IWitPyth.ID"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 25096,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23835,
                                  "src": "36217:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Storage_$22336_storage_ptr_$",
                                    "typeString": "function () pure returns (struct WitPriceFeedsDataLib.Storage storage pointer)"
                                  }
                                },
                                "id": 25097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "36217:6:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Storage_$22336_storage_ptr",
                                  "typeString": "struct WitPriceFeedsDataLib.Storage storage pointer"
                                }
                              },
                              "id": 25098,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "36224:3:61",
                              "memberName": "ids",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22309,
                              "src": "36217:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage",
                                "typeString": "IWitPyth.ID[] storage ref"
                              }
                            },
                            "id": 25099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36228:4:61",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "36217:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage_ptr_$_t_userDefinedValueType$_ID_$29561_$returns$__$attached_to$_t_array$_t_userDefinedValueType$_ID_$29561_$dyn_storage_ptr_$",
                              "typeString": "function (IWitPyth.ID[] storage pointer,IWitPyth.ID)"
                            }
                          },
                          "id": 25105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36217:38:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25106,
                        "nodeType": "ExpressionStatement",
                        "src": "36217:38:61"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 25110,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_settlePriceFeedSymbol",
            "nameLocation": "35394:22:61",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 25013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25012,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "35433:6:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 25110,
                  "src": "35417:22:61",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 25011,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35417:6:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35416:24:61"
            },
            "returnParameters": {
              "id": 25017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25016,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "35482:3:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 25110,
                  "src": "35458:27:61",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 25015,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 25014,
                      "name": "IWitPriceFeedsTypes.ID4",
                      "nameLocations": [
                        "35458:19:61",
                        "35478:3:61"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "35458:23:61"
                    },
                    "referencedDeclaration": 28155,
                    "src": "35458:23:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35457:29:61"
            },
            "scope": 25111,
            "src": "35385:889:61",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 25112,
        "src": "611:35666:61",
        "usedErrors": [
          29690,
          29696
        ],
        "usedEvents": []
      }
    ],
    "src": "35:36244:61"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x98B7D3282aa217148afC94Dfb8a6D0Ad1A91FBA7",
      "transactionHash": "0x887df374c98494add4177f33afadc7ce5a7f2fae0dc6959065fc1f456e437595"
    },
    "1285": {
      "events": {},
      "links": {},
      "address": "0x7AA219C444f68eDBD5789d89076efA8A3f09996b"
    },
    "1287": {
      "events": {},
      "links": {},
      "address": "0xAb72a4B22404CE09A29E8A97D828317885Bb83B7",
      "transactionHash": "0x702c539175482e1868ae1974fa5ad429c22354eece40093272fdcec4a3b44e5a"
    },
    "4801": {
      "events": {},
      "links": {},
      "address": "0xe04408124498F5812Ad341Df6038f11f18dC538e",
      "transactionHash": "0xa13b6de71dcf5164d0c09e405d18ae2cc3399e0cb149636c4cfd2e5d891b1369"
    },
    "84532": {
      "events": {},
      "links": {},
      "address": "0xFB36b14df6D319A5A7F418C80b0700664A4f9e6a",
      "transactionHash": "0x89529386bf6a0fd77408cffffc19bac0fd2e1c5d4322cd555db8418a5b555e09"
    },
    "11142220": {
      "events": {},
      "links": {},
      "address": "0x705E076F3387cFd59708D8D8508CECe3e1C65C87"
    },
    "11155111": {
      "events": {},
      "links": {},
      "address": "0x9C3b7240ed85b3B88952D1e1d4DD108F85756E8d",
      "transactionHash": "0x90cb6c411cf3b3a8edca059b12df8fc3d38c4de258cb2344bf17c165f497df80"
    },
    "11155420": {
      "events": {},
      "links": {},
      "address": "0xAC2b6752DDba0Ca723075EacC4cCF57d674dBB0e",
      "transactionHash": "0xa37c7f3a44133030b01c9bd8676c7da2cfafdf8fb0d323b39d456467710c9cce"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.864Z",
  "devdoc": {
    "author": "The Witnet Foundation.",
    "errors": {
      "PriceFeedNotFound()": [
        {
          "details": "Signature: 0x14aebe68"
        }
      ],
      "StalePrice()": [
        {
          "details": "Signature: 0x19abf40e"
        }
      ]
    },
    "kind": "dev",
    "methods": {},
    "title": "WitPriceFeeds data model.",
    "version": 1
  },
  "userdoc": {
    "errors": {
      "PriceFeedNotFound()": [
        {
          "notice": "Price feed not found or it is not pushed on-chain yet."
        }
      ],
      "StalePrice()": [
        {
          "notice": "Requested price is stale."
        }
      ]
    },
    "kind": "user",
    "methods": {},
    "version": 1
  }
}