{
  "contractName": "FutarchyOracleData",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "LONG",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "winningMarketIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "markets",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "categoricalEvent",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isSet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tradingPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "funding",
          "type": "uint256"
        }
      ],
      "name": "FutarchyFunding",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "FutarchyClosing",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "winningMarketIndex",
          "type": "uint256"
        }
      ],
      "name": "OutcomeAssignment",
      "type": "event"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"LONG\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"winningMarketIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"markets\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"categoricalEvent\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isSet\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tradingPeriod\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"funding\",\"type\":\"uint256\"}],\"name\":\"FutarchyFunding\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FutarchyClosing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"winningMarketIndex\",\"type\":\"uint256\"}],\"name\":\"OutcomeAssignment\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/FutarchyOracle.sol\":\"FutarchyOracleData\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/CategoricalEvent.sol\":{\"keccak256\":\"0x0d618ff0e76444e82eb38603d60798a2ca697ca0262ef541ed0987503ed493da\",\"urls\":[\"bzzr://a8677480e10d1c369ab348a093598f84d85a51f400d114ece3d1d5055a09267a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/Event.sol\":{\"keccak256\":\"0xdcacfa25145426b5681ad7d8bafb3c117c92a37b7a0175d72a10b42f130fb8c1\",\"urls\":[\"bzzr://bd10fbdb82f0d50866442c9e95317b3176c8ee067def27d764529973fb36420a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/EventFactory.sol\":{\"keccak256\":\"0xd9c190f46a1f260cb6ca7aa455444cb79f4d0e732bbaa4485e36e7b6c344739c\",\"urls\":[\"bzzr://f84bccd78e77be6288cf97d3fc0cb4808d161f75d291b89df3f2232d394082f0\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/ScalarEvent.sol\":{\"keccak256\":\"0xb8113f1a3f63ec0b6ae2d1a833fbffcf2b2af9470d4d7591d8e2c2784a163b32\",\"urls\":[\"bzzr://feb468d84fdda273585ba31abbbf8cceb906df5a9142695ec30c98f000a05bd4\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/MarketMakers/MarketMaker.sol\":{\"keccak256\":\"0xa71f8ce92412033d0900d44c01f0702aefced87d860cf116c6a4d3efe86913cf\",\"urls\":[\"bzzr://63c5bf60b931bb032fcab23514a3db171b680b11d8c6c05ac8caa88752e3be41\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/Market.sol\":{\"keccak256\":\"0x7bc1ebf0ea0f4cd9b6e9bfff6c6ac9088c253bcfca4e27f31e5845799f0278d8\",\"urls\":[\"bzzr://5e3f86d96ab269d284b34563501469d539cc436d62f070dd0abda2519d5e60c0\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarket.sol\":{\"keccak256\":\"0x527abf1b0997e2d38ce3c97f7ed647b9e913424828594287e2b068f2fb41ad4c\",\"urls\":[\"bzzr://16756e1b212fd40f21de50d99c8b7a5dde0acc2b0b047af8beead831a1274bd7\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLogger.sol\":{\"keccak256\":\"0xac611de823e324e444a9749619091be1f81edfd67af6109581c2f8655251fb8e\",\"urls\":[\"bzzr://feb7902d610a1e499e0330780e0e9638d4372ad941e5d5896cb1730df791405a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLoggerFactory.sol\":{\"keccak256\":\"0x81f233b1b25619bf83726af248a65e713660eb817098af83874cd93fddc7a4c4\",\"urls\":[\"bzzr://c37407f5fdc24b6fdcc5b7fad83b99da925ee9dcf0c4da1c8f4c7a7a4afe69a2\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/FutarchyOracle.sol\":{\"keccak256\":\"0x1873d44361476b4aec9203cf43db48690eebf9c1bb91ebc1730bed8b8d4ea072\",\"urls\":[\"bzzr://f5563fc2b82e53157b49f06d61333cf3cd9f4a9e7cf60237f53549241d3b4d3a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Tokens/OutcomeToken.sol\":{\"keccak256\":\"0x3d4c9ec14a60cf7577d366da5116e919a4331da8d6d993174f7d599f84ae74e0\",\"urls\":[\"bzzr://20f87450259a3af24ff1769faa9ab3b714d01921e9d8fa4efa75a0c277837a8a\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]},\"openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol\":{\"keccak256\":\"0xb4b45cd5475c318722ac0f8d7e2b9e77fee6f4f36374c1110fe615d50fbc0650\",\"urls\":[\"bzzr://a90fb457269c8a03ec5b811c71acef08a2751a4d2019b0661328610f9357dae7\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzzr://07fb42206812a17c1f71e548cfa5cec6f9aa1ae0ca5df870718ca4aa9759d1a5\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610253806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063561cce0a1461006757806356cfb75f1461008b578063b1283e77146100a9578063c3730d0314610117578063c65fb38014610161578063f86e315314610183575b600080fd5b61006f6101a1565b604051808260ff1660ff16815260200191505060405180910390f35b6100936101a6565b6040518082815260200191505060405180910390f35b6100d5600480360360208110156100bf57600080fd5b81019080803590602001909291905050506101ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61011f6101e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016961020e565b604051808215151515815260200191505060405180910390f35b61018b610221565b6040518082815260200191505060405180910390f35b600181565b60045481565b600181815481106101b957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900460ff1681565b6003548156fea165627a7a72305820d77e9fab41ebf3c371c5aec0711945c5879b9593c9c723c95252230f76d5135f0029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063561cce0a1461006757806356cfb75f1461008b578063b1283e77146100a9578063c3730d0314610117578063c65fb38014610161578063f86e315314610183575b600080fd5b61006f6101a1565b604051808260ff1660ff16815260200191505060405180910390f35b6100936101a6565b6040518082815260200191505060405180910390f35b6100d5600480360360208110156100bf57600080fd5b81019080803590602001909291905050506101ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61011f6101e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016961020e565b604051808215151515815260200191505060405180910390f35b61018b610221565b6040518082815260200191505060405180910390f35b600181565b60045481565b600181815481106101b957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900460ff1681565b6003548156fea165627a7a72305820d77e9fab41ebf3c371c5aec0711945c5879b9593c9c723c95252230f76d5135f0029",
  "sourceMap": "213:661:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;213:661:18;;;;;;;",
  "deployedSourceMap": "213:661:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;213:661:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;436:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;654;;;:::i;:::-;;;;;;;;;;;;;;;;;;;525:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;525:46:18;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;577:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;690:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;623:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;436:30;465:1;436:30;:::o;654:::-;;;;:::o;525:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;577:40::-;;;;;;;;;;;;;:::o;690:17::-;;;;;;;;;;;;;:::o;623:25::-;;;;:::o",
  "source": "pragma solidity ^0.5.0;\nimport \"../Oracles/Oracle.sol\";\nimport \"../Events/EventFactory.sol\";\nimport \"../Markets/StandardMarketWithPriceLoggerFactory.sol\";\nimport \"@gnosis.pm/util-contracts/contracts/Proxy.sol\";\n\n\ncontract FutarchyOracleData {\n\n    /*\n     *  Events\n     */\n    event FutarchyFunding(uint funding);\n    event FutarchyClosing();\n    event OutcomeAssignment(uint winningMarketIndex);\n\n    /*\n     *  Constants\n     */\n    uint8 public constant LONG = 1;\n\n    /*\n     *  Storage\n     */\n    address creator;\n    StandardMarketWithPriceLogger[] public markets;\n    CategoricalEvent public categoricalEvent;\n    uint public tradingPeriod;\n    uint public winningMarketIndex;\n    bool public isSet;\n\n    /*\n     *  Modifiers\n     */\n    modifier isCreator() {\n        // Only creator is allowed to proceed\n        require(msg.sender == creator);\n        _;\n    }\n}\n\ncontract FutarchyOracleProxy is Proxy, FutarchyOracleData {\n\n    /// @dev Constructor creates events and markets for futarchy oracle\n    /// @param _creator Oracle creator\n    /// @param eventFactory Event factory contract\n    /// @param collateralToken Tokens used as collateral in exchange for outcome tokens\n    /// @param oracle Oracle contract used to resolve the event\n    /// @param outcomeCount Number of event outcomes\n    /// @param lowerBound Lower bound for event outcome\n    /// @param upperBound Lower bound for event outcome\n    /// @param marketFactory Market factory contract\n    /// @param marketMaker Market maker contract\n    /// @param fee Market fee\n    /// @param _tradingPeriod Trading period before decision can be determined\n    /// @param startDate Start date for price logging\n    constructor(\n        address proxied,\n        address _creator,\n        EventFactory eventFactory,\n        ERC20 collateralToken,\n        Oracle oracle,\n        uint8 outcomeCount,\n        int lowerBound,\n        int upperBound,\n        StandardMarketWithPriceLoggerFactory marketFactory,\n        MarketMaker marketMaker,\n        uint24 fee,\n        uint _tradingPeriod,\n        uint startDate\n    )\n        Proxy(proxied)\n        public\n    {\n        // trading period is at least a second\n        require(_tradingPeriod > 0);\n        // Create decision event\n        categoricalEvent = eventFactory.createCategoricalEvent(collateralToken, Oracle(address(this)), outcomeCount);\n        // Create outcome events\n        for (uint8 i = 0; i < categoricalEvent.getOutcomeCount(); i++) {\n            ScalarEvent scalarEvent = eventFactory.createScalarEvent(\n                categoricalEvent.outcomeTokens(i),\n                oracle,\n                lowerBound,\n                upperBound\n            );\n            markets.push(marketFactory.createMarket(scalarEvent, marketMaker, fee, startDate));\n        }\n        creator = _creator;\n        tradingPeriod = _tradingPeriod;\n    }\n}\n\n/// @title Futarchy oracle contract - Allows to create an oracle based on market behaviour\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract FutarchyOracle is Proxied, Oracle, FutarchyOracleData {\n    using SafeMath for *;\n\n    /*\n     *  Public functions\n     */\n    /// @dev Funds all markets with equal amount of funding\n    /// @param funding Amount of funding\n    function fund(uint funding)\n        public\n        isCreator\n    {\n        // Buy all outcomes\n        require(   categoricalEvent.collateralToken().transferFrom(creator, address(this), funding)\n                && categoricalEvent.collateralToken().approve(address(categoricalEvent), funding));\n        categoricalEvent.buyAllOutcomes(funding);\n        // Fund each market with outcome tokens from categorical event\n        for (uint8 i = 0; i < markets.length; i++) {\n            Market market = markets[i];\n            // Approve funding for market\n            require(market.eventContract().collateralToken().approve(address(market), funding));\n            market.fund(funding);\n        }\n        emit FutarchyFunding(funding);\n    }\n\n    /// @dev Closes market for winning outcome and redeems winnings and sends all collateral tokens to creator\n    function close()\n        public\n        isCreator\n    {\n        // Winning outcome has to be set\n        Market market = markets[uint(getOutcome())];\n        require(categoricalEvent.isOutcomeSet() && market.eventContract().isOutcomeSet());\n        // Close market and transfer all outcome tokens from winning outcome to this contract\n        market.close();\n        market.eventContract().redeemWinnings();\n        market.withdrawFees();\n        // Redeem collateral token for winning outcome tokens and transfer collateral tokens to creator\n        categoricalEvent.redeemWinnings();\n        require(categoricalEvent.collateralToken().transfer(creator, categoricalEvent.collateralToken().balanceOf(address(this))));\n        emit FutarchyClosing();\n    }\n\n    /// @dev Allows to set the oracle outcome based on the market with largest long position\n    function setOutcome()\n        public\n    {\n        // Outcome is not set yet and trading period is over\n        require(!isSet && markets[0].startDate() + tradingPeriod < now);\n        // Find market with highest marginal price for long outcome tokens\n        uint highestAvgPrice = markets[0].getAvgPrice();\n        uint highestIndex = 0;\n        for (uint8 i = 1; i < markets.length; i++) {\n            uint avgPrice = markets[i].getAvgPrice();\n            if (avgPrice > highestAvgPrice) {\n                highestAvgPrice = avgPrice;\n                highestIndex = i;\n            }\n        }\n        winningMarketIndex = highestIndex;\n        isSet = true;\n        emit OutcomeAssignment(winningMarketIndex);\n    }\n\n    /// @dev Returns if winning outcome is set\n    /// @return Is outcome set?\n    function isOutcomeSet()\n        public\n        view\n        returns (bool)\n    {\n        return isSet;\n    }\n\n    /// @dev Returns winning outcome\n    /// @return Outcome\n    function getOutcome()\n        public\n        view\n        returns (int)\n    {\n        return int(winningMarketIndex);\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/FutarchyOracle.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/FutarchyOracle.sol",
    "exportedSymbols": {
      "FutarchyOracle": [
        4380
      ],
      "FutarchyOracleData": [
        4023
      ],
      "FutarchyOracleProxy": [
        4127
      ]
    },
    "id": 4381,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3981,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:18"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol",
        "file": "../Oracles/Oracle.sol",
        "id": 3982,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 4842,
        "src": "24:31:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/EventFactory.sol",
        "file": "../Events/EventFactory.sol",
        "id": 3983,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 603,
        "src": "56:36:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLoggerFactory.sol",
        "file": "../Markets/StandardMarketWithPriceLoggerFactory.sol",
        "id": 3984,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 3623,
        "src": "93:61:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@gnosis.pm/util-contracts/contracts/Proxy.sol",
        "file": "@gnosis.pm/util-contracts/contracts/Proxy.sol",
        "id": 3985,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 6829,
        "src": "155:55:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4023,
        "linearizedBaseContracts": [
          4023
        ],
        "name": "FutarchyOracleData",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 3989,
            "name": "FutarchyFunding",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3987,
                  "indexed": false,
                  "name": "funding",
                  "nodeType": "VariableDeclaration",
                  "scope": 3989,
                  "src": "300:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3986,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "299:14:18"
            },
            "src": "278:36:18"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3991,
            "name": "FutarchyClosing",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3990,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "340:2:18"
            },
            "src": "319:24:18"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3995,
            "name": "OutcomeAssignment",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3993,
                  "indexed": false,
                  "name": "winningMarketIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "372:23:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3992,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "372:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "371:25:18"
            },
            "src": "348:49:18"
          },
          {
            "constant": true,
            "id": 3998,
            "name": "LONG",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "436:30:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 3996,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "436:5:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 3997,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "465:1:18",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4000,
            "name": "creator",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "504:15:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3999,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "504:7:18",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4003,
            "name": "markets",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "525:46:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
              "typeString": "contract StandardMarketWithPriceLogger[]"
            },
            "typeName": {
              "baseType": {
                "contractScope": null,
                "id": 4001,
                "name": "StandardMarketWithPriceLogger",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3549,
                "src": "525:29:18",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                  "typeString": "contract StandardMarketWithPriceLogger"
                }
              },
              "id": 4002,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "525:31:18",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage_ptr",
                "typeString": "contract StandardMarketWithPriceLogger[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4005,
            "name": "categoricalEvent",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "577:40:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_CategoricalEvent_$158",
              "typeString": "contract CategoricalEvent"
            },
            "typeName": {
              "contractScope": null,
              "id": 4004,
              "name": "CategoricalEvent",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 158,
              "src": "577:16:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                "typeString": "contract CategoricalEvent"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4007,
            "name": "tradingPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "623:25:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4006,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "623:4:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4009,
            "name": "winningMarketIndex",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "654:30:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4008,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "654:4:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4011,
            "name": "isSet",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "690:17:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4010,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "690:4:18",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4021,
              "nodeType": "Block",
              "src": "768:104:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4014,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7920,
                            "src": "832:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "832:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 4016,
                          "name": "creator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4000,
                          "src": "846:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "832:21:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4013,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "824:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "824:30:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4019,
                  "nodeType": "ExpressionStatement",
                  "src": "824:30:18"
                },
                {
                  "id": 4020,
                  "nodeType": "PlaceholderStatement",
                  "src": "864:1:18"
                }
              ]
            },
            "documentation": null,
            "id": 4022,
            "name": "isCreator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4012,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "765:2:18"
            },
            "src": "747:125:18",
            "visibility": "internal"
          }
        ],
        "scope": 4381,
        "src": "213:661:18"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4024,
              "name": "Proxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6828,
              "src": "908:5:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Proxy_$6828",
                "typeString": "contract Proxy"
              }
            },
            "id": 4025,
            "nodeType": "InheritanceSpecifier",
            "src": "908:5:18"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4026,
              "name": "FutarchyOracleData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4023,
              "src": "915:18:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FutarchyOracleData_$4023",
                "typeString": "contract FutarchyOracleData"
              }
            },
            "id": 4027,
            "nodeType": "InheritanceSpecifier",
            "src": "915:18:18"
          }
        ],
        "contractDependencies": [
          4023,
          6798,
          6828
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4127,
        "linearizedBaseContracts": [
          4127,
          4023,
          6828,
          6798
        ],
        "name": "FutarchyOracleProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4125,
              "nodeType": "Block",
              "src": "2127:737:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4060,
                          "name": "_tradingPeriod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4051,
                          "src": "2192:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2209:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2192:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4059,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "2184:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2184:27:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4064,
                  "nodeType": "ExpressionStatement",
                  "src": "2184:27:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4065,
                      "name": "categoricalEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4005,
                      "src": "2254:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                        "typeString": "contract CategoricalEvent"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4068,
                          "name": "collateralToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4035,
                          "src": "2309:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ERC20_$7778",
                            "typeString": "contract ERC20"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4071,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8022,
                                  "src": "2341:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FutarchyOracleProxy_$4127",
                                    "typeString": "contract FutarchyOracleProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FutarchyOracleProxy_$4127",
                                    "typeString": "contract FutarchyOracleProxy"
                                  }
                                ],
                                "id": 4070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2333:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2333:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4069,
                            "name": "Oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4841,
                            "src": "2326:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Oracle_$4841_$",
                              "typeString": "type(contract Oracle)"
                            }
                          },
                          "id": 4073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2326:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Oracle_$4841",
                            "typeString": "contract Oracle"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4074,
                          "name": "outcomeCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4039,
                          "src": "2349:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ERC20_$7778",
                            "typeString": "contract ERC20"
                          },
                          {
                            "typeIdentifier": "t_contract$_Oracle_$4841",
                            "typeString": "contract Oracle"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4066,
                          "name": "eventFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4033,
                          "src": "2273:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EventFactory_$602",
                            "typeString": "contract EventFactory"
                          }
                        },
                        "id": 4067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createCategoricalEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 527,
                        "src": "2273:35:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20_$7778_$_t_contract$_Oracle_$4841_$_t_uint8_$returns$_t_contract$_CategoricalEvent_$158_$",
                          "typeString": "function (contract ERC20,contract Oracle,uint8) external returns (contract CategoricalEvent)"
                        }
                      },
                      "id": 4075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2273:89:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                        "typeString": "contract CategoricalEvent"
                      }
                    },
                    "src": "2254:108:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                      "typeString": "contract CategoricalEvent"
                    }
                  },
                  "id": 4077,
                  "nodeType": "ExpressionStatement",
                  "src": "2254:108:18"
                },
                {
                  "body": {
                    "id": 4115,
                    "nodeType": "Block",
                    "src": "2468:322:18",
                    "statements": [
                      {
                        "assignments": [
                          4091
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4091,
                            "name": "scalarEvent",
                            "nodeType": "VariableDeclaration",
                            "scope": 4115,
                            "src": "2482:23:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ScalarEvent_$870",
                              "typeString": "contract ScalarEvent"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4090,
                              "name": "ScalarEvent",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 870,
                              "src": "2482:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ScalarEvent_$870",
                                "typeString": "contract ScalarEvent"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4102,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4096,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4079,
                                  "src": "2587:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4094,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "2556:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                },
                                "id": 4095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "outcomeTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 203,
                                "src": "2556:30:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_OutcomeToken_$5793_$",
                                  "typeString": "function (uint256) view external returns (contract OutcomeToken)"
                                }
                              },
                              "id": 4097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2556:33:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$5793",
                                "typeString": "contract OutcomeToken"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4098,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4037,
                              "src": "2607:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Oracle_$4841",
                                "typeString": "contract Oracle"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4099,
                              "name": "lowerBound",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4041,
                              "src": "2631:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4100,
                              "name": "upperBound",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4043,
                              "src": "2659:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_OutcomeToken_$5793",
                                "typeString": "contract OutcomeToken"
                              },
                              {
                                "typeIdentifier": "t_contract$_Oracle_$4841",
                                "typeString": "contract Oracle"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4092,
                              "name": "eventFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4033,
                              "src": "2508:12:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EventFactory_$602",
                                "typeString": "contract EventFactory"
                              }
                            },
                            "id": 4093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createScalarEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 601,
                            "src": "2508:30:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20_$7778_$_t_contract$_Oracle_$4841_$_t_int256_$_t_int256_$returns$_t_contract$_ScalarEvent_$870_$",
                              "typeString": "function (contract ERC20,contract Oracle,int256,int256) external returns (contract ScalarEvent)"
                            }
                          },
                          "id": 4101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2508:175:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ScalarEvent_$870",
                            "typeString": "contract ScalarEvent"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2482:201:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4108,
                                  "name": "scalarEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4091,
                                  "src": "2737:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ScalarEvent_$870",
                                    "typeString": "contract ScalarEvent"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4109,
                                  "name": "marketMaker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4047,
                                  "src": "2750:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                                    "typeString": "contract MarketMaker"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4110,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4049,
                                  "src": "2763:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4111,
                                  "name": "startDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4053,
                                  "src": "2768:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ScalarEvent_$870",
                                    "typeString": "contract ScalarEvent"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                                    "typeString": "contract MarketMaker"
                                  },
                                  {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4106,
                                  "name": "marketFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "2710:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerFactory_$3622",
                                    "typeString": "contract StandardMarketWithPriceLoggerFactory"
                                  }
                                },
                                "id": 4107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "createMarket",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3621,
                                "src": "2710:26:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Event_$392_$_t_contract$_MarketMaker_$1606_$_t_uint24_$_t_uint256_$returns$_t_contract$_StandardMarketWithPriceLogger_$3549_$",
                                  "typeString": "function (contract Event,contract MarketMaker,uint24,uint256) external returns (contract StandardMarketWithPriceLogger)"
                                }
                              },
                              "id": 4112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2710:68:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                "typeString": "contract StandardMarketWithPriceLogger"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                "typeString": "contract StandardMarketWithPriceLogger"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4103,
                              "name": "markets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4003,
                              "src": "2697:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                                "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                              }
                            },
                            "id": 4105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2697:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_StandardMarketWithPriceLogger_$3549_$returns$_t_uint256_$",
                              "typeString": "function (contract StandardMarketWithPriceLogger) returns (uint256)"
                            }
                          },
                          "id": 4113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2697:82:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4114,
                        "nodeType": "ExpressionStatement",
                        "src": "2697:82:18"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 4086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4082,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4079,
                      "src": "2423:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4083,
                          "name": "categoricalEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4005,
                          "src": "2427:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                            "typeString": "contract CategoricalEvent"
                          }
                        },
                        "id": 4084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutcomeCount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 331,
                        "src": "2427:32:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                          "typeString": "function () view external returns (uint8)"
                        }
                      },
                      "id": 4085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2427:34:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "2423:38:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4116,
                  "initializationExpression": {
                    "assignments": [
                      4079
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4079,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4116,
                        "src": "2410:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4078,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2410:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4081,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2420:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2410:11:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2463:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4087,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4079,
                        "src": "2463:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4089,
                    "nodeType": "ExpressionStatement",
                    "src": "2463:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "2405:385:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4117,
                      "name": "creator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4000,
                      "src": "2799:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4118,
                      "name": "_creator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4031,
                      "src": "2809:8:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2799:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4120,
                  "nodeType": "ExpressionStatement",
                  "src": "2799:18:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4121,
                      "name": "tradingPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4007,
                      "src": "2827:13:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4122,
                      "name": "_tradingPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4051,
                      "src": "2843:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2827:30:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4124,
                  "nodeType": "ExpressionStatement",
                  "src": "2827:30:18"
                }
              ]
            },
            "documentation": "@dev Constructor creates events and markets for futarchy oracle\n @param _creator Oracle creator\n @param eventFactory Event factory contract\n @param collateralToken Tokens used as collateral in exchange for outcome tokens\n @param oracle Oracle contract used to resolve the event\n @param outcomeCount Number of event outcomes\n @param lowerBound Lower bound for event outcome\n @param upperBound Lower bound for event outcome\n @param marketFactory Market factory contract\n @param marketMaker Market maker contract\n @param fee Market fee\n @param _tradingPeriod Trading period before decision can be determined\n @param startDate Start date for price logging",
            "id": 4126,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4056,
                    "name": "proxied",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4029,
                    "src": "2099:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4057,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4055,
                  "name": "Proxy",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6828,
                  "src": "2093:5:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Proxy_$6828_$",
                    "typeString": "type(contract Proxy)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2093:14:18"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4029,
                  "name": "proxied",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1706:15:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1706:7:18",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4031,
                  "name": "_creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1731:16:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4030,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:18",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4033,
                  "name": "eventFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1757:25:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EventFactory_$602",
                    "typeString": "contract EventFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4032,
                    "name": "EventFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 602,
                    "src": "1757:12:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventFactory_$602",
                      "typeString": "contract EventFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4035,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1792:21:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$7778",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4034,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7778,
                    "src": "1792:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$7778",
                      "typeString": "contract ERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4037,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1823:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Oracle_$4841",
                    "typeString": "contract Oracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4036,
                    "name": "Oracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "1823:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Oracle_$4841",
                      "typeString": "contract Oracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4039,
                  "name": "outcomeCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1846:18:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4038,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1846:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4041,
                  "name": "lowerBound",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1874:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4040,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1874:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4043,
                  "name": "upperBound",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1898:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4042,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4045,
                  "name": "marketFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1922:50:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerFactory_$3622",
                    "typeString": "contract StandardMarketWithPriceLoggerFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4044,
                    "name": "StandardMarketWithPriceLoggerFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3622,
                    "src": "1922:36:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerFactory_$3622",
                      "typeString": "contract StandardMarketWithPriceLoggerFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4047,
                  "name": "marketMaker",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1982:23:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                    "typeString": "contract MarketMaker"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4046,
                    "name": "MarketMaker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1606,
                    "src": "1982:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarketMaker_$1606",
                      "typeString": "contract MarketMaker"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4049,
                  "name": "fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "2015:10:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 4048,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "2015:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4051,
                  "name": "_tradingPeriod",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "2035:19:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4050,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2035:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4053,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "2064:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4052,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2064:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1696:388:18"
            },
            "returnParameters": {
              "id": 4058,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2127:0:18"
            },
            "scope": 4127,
            "src": "1685:1179:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4381,
        "src": "876:1990:18"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4128,
              "name": "Proxied",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6798,
              "src": "3033:7:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Proxied_$6798",
                "typeString": "contract Proxied"
              }
            },
            "id": 4129,
            "nodeType": "InheritanceSpecifier",
            "src": "3033:7:18"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4130,
              "name": "Oracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4841,
              "src": "3042:6:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Oracle_$4841",
                "typeString": "contract Oracle"
              }
            },
            "id": 4131,
            "nodeType": "InheritanceSpecifier",
            "src": "3042:6:18"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4132,
              "name": "FutarchyOracleData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4023,
              "src": "3050:18:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FutarchyOracleData_$4023",
                "typeString": "contract FutarchyOracleData"
              }
            },
            "id": 4133,
            "nodeType": "InheritanceSpecifier",
            "src": "3050:18:18"
          }
        ],
        "contractDependencies": [
          4023,
          4841,
          6798
        ],
        "contractKind": "contract",
        "documentation": "@title Futarchy oracle contract - Allows to create an oracle based on market behaviour\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 4380,
        "linearizedBaseContracts": [
          4380,
          4023,
          4841,
          6798
        ],
        "name": "FutarchyOracle",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4135,
            "libraryName": {
              "contractScope": null,
              "id": 4134,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7381,
              "src": "3081:8:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$7381",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "3075:21:18",
            "typeName": null
          },
          {
            "body": {
              "id": 4214,
              "nodeType": "Block",
              "src": "3308:671:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4147,
                              "name": "creator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4000,
                              "src": "3405:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4149,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8024,
                                  "src": "3422:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                    "typeString": "contract FutarchyOracle"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                    "typeString": "contract FutarchyOracle"
                                  }
                                ],
                                "id": 4148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3414:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3414:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4151,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3429:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4143,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "3357:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                },
                                "id": 4144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 194,
                                "src": "3357:32:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                  "typeString": "function () view external returns (contract ERC20)"
                                }
                              },
                              "id": 4145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3357:34:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$7778",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 4146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7511,
                            "src": "3357:47:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3357:80:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4158,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "3508:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                ],
                                "id": 4157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3500:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3500:25:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4160,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3527:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4153,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "3457:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                },
                                "id": 4154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 194,
                                "src": "3457:32:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                  "typeString": "function () view external returns (contract ERC20)"
                                }
                              },
                              "id": 4155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3457:34:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$7778",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 4156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7476,
                            "src": "3457:42:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 4161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3457:78:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3357:178:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4142,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "3346:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3346:190:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4164,
                  "nodeType": "ExpressionStatement",
                  "src": "3346:190:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4168,
                        "name": "funding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4137,
                        "src": "3578:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4165,
                        "name": "categoricalEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4005,
                        "src": "3546:16:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                          "typeString": "contract CategoricalEvent"
                        }
                      },
                      "id": 4167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "buyAllOutcomes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 251,
                      "src": "3546:31:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3546:40:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4170,
                  "nodeType": "ExpressionStatement",
                  "src": "3546:40:18"
                },
                {
                  "body": {
                    "id": 4208,
                    "nodeType": "Block",
                    "src": "3710:224:18",
                    "statements": [
                      {
                        "assignments": [
                          4183
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4183,
                            "name": "market",
                            "nodeType": "VariableDeclaration",
                            "scope": 4208,
                            "src": "3724:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Market_$2296",
                              "typeString": "contract Market"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4182,
                              "name": "Market",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2296,
                              "src": "3724:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Market_$2296",
                                "typeString": "contract Market"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4187,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4184,
                            "name": "markets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4003,
                            "src": "3740:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                              "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                            }
                          },
                          "id": 4186,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4185,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4172,
                            "src": "3748:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3740:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract StandardMarketWithPriceLogger"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3724:26:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4196,
                                      "name": "market",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4183,
                                      "src": "3871:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Market_$2296",
                                        "typeString": "contract Market"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Market_$2296",
                                        "typeString": "contract Market"
                                      }
                                    ],
                                    "id": 4195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3863:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 4197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3863:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4198,
                                  "name": "funding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4137,
                                  "src": "3880:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4189,
                                          "name": "market",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4183,
                                          "src": "3814:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Market_$2296",
                                            "typeString": "contract Market"
                                          }
                                        },
                                        "id": 4190,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "eventContract",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2214,
                                        "src": "3814:20:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Event_$392_$",
                                          "typeString": "function () view external returns (contract Event)"
                                        }
                                      },
                                      "id": 4191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3814:22:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Event_$392",
                                        "typeString": "contract Event"
                                      }
                                    },
                                    "id": 4192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 194,
                                    "src": "3814:38:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                      "typeString": "function () view external returns (contract ERC20)"
                                    }
                                  },
                                  "id": 4193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3814:40:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$7778",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 4194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "approve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7476,
                                "src": "3814:48:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3814:74:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4188,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7923,
                              7924
                            ],
                            "referencedDeclaration": 7923,
                            "src": "3806:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3806:83:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4201,
                        "nodeType": "ExpressionStatement",
                        "src": "3806:83:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4205,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3915:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4202,
                              "name": "market",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4183,
                              "src": "3903:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Market_$2296",
                                "typeString": "contract Market"
                              }
                            },
                            "id": 4204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fund",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2237,
                            "src": "3903:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 4206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3903:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4207,
                        "nodeType": "ExpressionStatement",
                        "src": "3903:20:18"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4175,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4172,
                      "src": "3685:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4176,
                        "name": "markets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4003,
                        "src": "3689:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                          "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                        }
                      },
                      "id": 4177,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3689:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3685:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4209,
                  "initializationExpression": {
                    "assignments": [
                      4172
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4172,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4209,
                        "src": "3672:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4171,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3672:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4174,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3682:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3672:11:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3705:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4179,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4172,
                        "src": "3705:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4181,
                    "nodeType": "ExpressionStatement",
                    "src": "3705:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "3667:267:18"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4211,
                        "name": "funding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4137,
                        "src": "3964:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4210,
                      "name": "FutarchyFunding",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3989,
                      "src": "3948:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3948:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4213,
                  "nodeType": "EmitStatement",
                  "src": "3943:29:18"
                }
              ]
            },
            "documentation": "@dev Funds all markets with equal amount of funding\n @param funding Amount of funding",
            "id": 4215,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4140,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4139,
                  "name": "isCreator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4022,
                  "src": "3294:9:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3294:9:18"
              }
            ],
            "name": "fund",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4137,
                  "name": "funding",
                  "nodeType": "VariableDeclaration",
                  "scope": 4215,
                  "src": "3257:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4136,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3257:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3256:14:18"
            },
            "returnParameters": {
              "id": 4141,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3308:0:18"
            },
            "scope": 4380,
            "src": "3243:736:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4283,
              "nodeType": "Block",
              "src": "4150:701:18",
              "statements": [
                {
                  "assignments": [
                    4221
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4221,
                      "name": "market",
                      "nodeType": "VariableDeclaration",
                      "scope": 4283,
                      "src": "4201:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Market_$2296",
                        "typeString": "contract Market"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4220,
                        "name": "Market",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2296,
                        "src": "4201:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Market_$2296",
                          "typeString": "contract Market"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4228,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4222,
                      "name": "markets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4003,
                      "src": "4217:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                        "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                      }
                    },
                    "id": 4227,
                    "indexExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4224,
                            "name": "getOutcome",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4379
                            ],
                            "referencedDeclaration": 4379,
                            "src": "4230:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_int256_$",
                              "typeString": "function () view returns (int256)"
                            }
                          },
                          "id": 4225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4230:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 4223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4225:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint"
                      },
                      "id": 4226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4225:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4217:27:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                      "typeString": "contract StandardMarketWithPriceLogger"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4201:43:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4230,
                              "name": "categoricalEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4005,
                              "src": "4262:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                "typeString": "contract CategoricalEvent"
                              }
                            },
                            "id": 4231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isOutcomeSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 198,
                            "src": "4262:29:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 4232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4262:31:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4233,
                                  "name": "market",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4221,
                                  "src": "4297:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Market_$2296",
                                    "typeString": "contract Market"
                                  }
                                },
                                "id": 4234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eventContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2214,
                                "src": "4297:20:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Event_$392_$",
                                  "typeString": "function () view external returns (contract Event)"
                                }
                              },
                              "id": 4235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4297:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Event_$392",
                                "typeString": "contract Event"
                              }
                            },
                            "id": 4236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isOutcomeSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 198,
                            "src": "4297:35:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 4237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4297:37:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4262:72:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4229,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "4254:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4254:81:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4240,
                  "nodeType": "ExpressionStatement",
                  "src": "4254:81:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4241,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4221,
                        "src": "4439:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Market_$2296",
                          "typeString": "contract Market"
                        }
                      },
                      "id": 4243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "close",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2240,
                      "src": "4439:12:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 4244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4439:14:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4245,
                  "nodeType": "ExpressionStatement",
                  "src": "4439:14:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4246,
                            "name": "market",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4221,
                            "src": "4463:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Market_$2296",
                              "typeString": "contract Market"
                            }
                          },
                          "id": 4248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "eventContract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2214,
                          "src": "4463:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Event_$392_$",
                            "typeString": "function () view external returns (contract Event)"
                          }
                        },
                        "id": 4249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4463:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Event_$392",
                          "typeString": "contract Event"
                        }
                      },
                      "id": 4250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redeemWinnings",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 391,
                      "src": "4463:37:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 4251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4463:39:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4252,
                  "nodeType": "ExpressionStatement",
                  "src": "4463:39:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4253,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4221,
                        "src": "4512:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Market_$2296",
                          "typeString": "contract Market"
                        }
                      },
                      "id": 4255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdrawFees",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2245,
                      "src": "4512:19:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 4256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4512:21:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4257,
                  "nodeType": "ExpressionStatement",
                  "src": "4512:21:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4258,
                        "name": "categoricalEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4005,
                        "src": "4647:16:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                          "typeString": "contract CategoricalEvent"
                        }
                      },
                      "id": 4260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redeemWinnings",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 141,
                      "src": "4647:31:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 4261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4647:33:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4262,
                  "nodeType": "ExpressionStatement",
                  "src": "4647:33:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4268,
                            "name": "creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4000,
                            "src": "4742:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4274,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8024,
                                    "src": "4804:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                      "typeString": "contract FutarchyOracle"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                      "typeString": "contract FutarchyOracle"
                                    }
                                  ],
                                  "id": 4273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4796:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 4275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4796:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4269,
                                    "name": "categoricalEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4005,
                                    "src": "4751:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                      "typeString": "contract CategoricalEvent"
                                    }
                                  },
                                  "id": 4270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateralToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 194,
                                  "src": "4751:32:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                    "typeString": "function () view external returns (contract ERC20)"
                                  }
                                },
                                "id": 4271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4751:34:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC20_$7778",
                                  "typeString": "contract ERC20"
                                }
                              },
                              "id": 4272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7422,
                              "src": "4751:44:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 4276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4751:59:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4264,
                                "name": "categoricalEvent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4005,
                                "src": "4698:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                  "typeString": "contract CategoricalEvent"
                                }
                              },
                              "id": 4265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 194,
                              "src": "4698:32:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                "typeString": "function () view external returns (contract ERC20)"
                              }
                            },
                            "id": 4266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4698:34:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$7778",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 4267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7441,
                          "src": "4698:43:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 4277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4698:113:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4263,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "4690:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4690:122:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4279,
                  "nodeType": "ExpressionStatement",
                  "src": "4690:122:18"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4280,
                      "name": "FutarchyClosing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3991,
                      "src": "4827:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4827:17:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4282,
                  "nodeType": "EmitStatement",
                  "src": "4822:22:18"
                }
              ]
            },
            "documentation": "@dev Closes market for winning outcome and redeems winnings and sends all collateral tokens to creator",
            "id": 4284,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4218,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4217,
                  "name": "isCreator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4022,
                  "src": "4136:9:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4136:9:18"
              }
            ],
            "name": "close",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4110:2:18"
            },
            "returnParameters": {
              "id": 4219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4150:0:18"
            },
            "scope": 4380,
            "src": "4096:755:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4360,
              "nodeType": "Block",
              "src": "4991:676:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5070:6:18",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4288,
                            "name": "isSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "5071:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4290,
                                    "name": "markets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4003,
                                    "src": "5080:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                                      "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                                    }
                                  },
                                  "id": 4292,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4291,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5088:1:18",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5080:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                    "typeString": "contract StandardMarketWithPriceLogger"
                                  }
                                },
                                "id": 4293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3277,
                                "src": "5080:20:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 4294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5080:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4295,
                              "name": "tradingPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4007,
                              "src": "5105:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5080:38:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4297,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7922,
                            "src": "5121:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5080:44:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5070:54:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "5062:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5062:63:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4301,
                  "nodeType": "ExpressionStatement",
                  "src": "5062:63:18"
                },
                {
                  "assignments": [
                    4303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4303,
                      "name": "highestAvgPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 4360,
                      "src": "5210:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4302,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5210:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4309,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4304,
                          "name": "markets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4003,
                          "src": "5233:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                            "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                          }
                        },
                        "id": 4306,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5241:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5233:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                          "typeString": "contract StandardMarketWithPriceLogger"
                        }
                      },
                      "id": 4307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAvgPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3514,
                      "src": "5233:22:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 4308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5233:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5210:47:18"
                },
                {
                  "assignments": [
                    4311
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4311,
                      "name": "highestIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 4360,
                      "src": "5267:17:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4310,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5267:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4313,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5287:1:18",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5267:21:18"
                },
                {
                  "body": {
                    "id": 4346,
                    "nodeType": "Block",
                    "src": "5341:203:18",
                    "statements": [
                      {
                        "assignments": [
                          4326
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4326,
                            "name": "avgPrice",
                            "nodeType": "VariableDeclaration",
                            "scope": 4346,
                            "src": "5355:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4325,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5355:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4332,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4327,
                                "name": "markets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4003,
                                "src": "5371:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                                  "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                                }
                              },
                              "id": 4329,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4328,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4315,
                                "src": "5379:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5371:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                "typeString": "contract StandardMarketWithPriceLogger"
                              }
                            },
                            "id": 4330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAvgPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3514,
                            "src": "5371:22:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 4331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5371:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5355:40:18"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4333,
                            "name": "avgPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4326,
                            "src": "5413:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4334,
                            "name": "highestAvgPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4303,
                            "src": "5424:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5413:26:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4345,
                        "nodeType": "IfStatement",
                        "src": "5409:125:18",
                        "trueBody": {
                          "id": 4344,
                          "nodeType": "Block",
                          "src": "5441:93:18",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4336,
                                  "name": "highestAvgPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4303,
                                  "src": "5459:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4337,
                                  "name": "avgPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4326,
                                  "src": "5477:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5459:26:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4339,
                              "nodeType": "ExpressionStatement",
                              "src": "5459:26:18"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4340,
                                  "name": "highestIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4311,
                                  "src": "5503:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4341,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4315,
                                  "src": "5518:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "5503:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4343,
                              "nodeType": "ExpressionStatement",
                              "src": "5503:16:18"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4318,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4315,
                      "src": "5316:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4319,
                        "name": "markets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4003,
                        "src": "5320:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                          "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                        }
                      },
                      "id": 4320,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5320:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5316:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4347,
                  "initializationExpression": {
                    "assignments": [
                      4315
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4315,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "5303:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4314,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5303:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4317,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5313:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5303:11:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4323,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5336:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4322,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4315,
                        "src": "5336:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4324,
                    "nodeType": "ExpressionStatement",
                    "src": "5336:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "5298:246:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4348,
                      "name": "winningMarketIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4009,
                      "src": "5553:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4349,
                      "name": "highestIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4311,
                      "src": "5574:12:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5553:33:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4351,
                  "nodeType": "ExpressionStatement",
                  "src": "5553:33:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4352,
                      "name": "isSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4011,
                      "src": "5596:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4353,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5604:4:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5596:12:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4355,
                  "nodeType": "ExpressionStatement",
                  "src": "5596:12:18"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4357,
                        "name": "winningMarketIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4009,
                        "src": "5641:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4356,
                      "name": "OutcomeAssignment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3995,
                      "src": "5623:17:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5623:37:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4359,
                  "nodeType": "EmitStatement",
                  "src": "5618:42:18"
                }
              ]
            },
            "documentation": "@dev Allows to set the oracle outcome based on the market with largest long position",
            "id": 4361,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setOutcome",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4285,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4969:2:18"
            },
            "returnParameters": {
              "id": 4286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4991:0:18"
            },
            "scope": 4380,
            "src": "4950:717:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4368,
              "nodeType": "Block",
              "src": "5831:29:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4366,
                    "name": "isSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4011,
                    "src": "5848:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4365,
                  "id": 4367,
                  "nodeType": "Return",
                  "src": "5841:12:18"
                }
              ]
            },
            "documentation": "@dev Returns if winning outcome is set\n @return Is outcome set?",
            "id": 4369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOutcomeSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4362,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5773:2:18"
            },
            "returnParameters": {
              "id": 4365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4364,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4369,
                  "src": "5821:4:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4363,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5821:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5820:6:18"
            },
            "scope": 4380,
            "src": "5752:108:18",
            "stateMutability": "view",
            "superFunction": 4835,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4378,
              "nodeType": "Block",
              "src": "6003:47:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4375,
                        "name": "winningMarketIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4009,
                        "src": "6024:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6020:3:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": "int"
                    },
                    "id": 4376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6020:23:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 4373,
                  "id": 4377,
                  "nodeType": "Return",
                  "src": "6013:30:18"
                }
              ]
            },
            "documentation": "@dev Returns winning outcome\n @return Outcome",
            "id": 4379,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutcome",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5946:2:18"
            },
            "returnParameters": {
              "id": 4373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4372,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4379,
                  "src": "5994:3:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4371,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5993:5:18"
            },
            "scope": 4380,
            "src": "5927:123:18",
            "stateMutability": "view",
            "superFunction": 4840,
            "visibility": "public"
          }
        ],
        "scope": 4381,
        "src": "3006:3046:18"
      }
    ],
    "src": "0:6053:18"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/FutarchyOracle.sol",
    "exportedSymbols": {
      "FutarchyOracle": [
        4380
      ],
      "FutarchyOracleData": [
        4023
      ],
      "FutarchyOracleProxy": [
        4127
      ]
    },
    "id": 4381,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3981,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:18"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol",
        "file": "../Oracles/Oracle.sol",
        "id": 3982,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 4842,
        "src": "24:31:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/EventFactory.sol",
        "file": "../Events/EventFactory.sol",
        "id": 3983,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 603,
        "src": "56:36:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLoggerFactory.sol",
        "file": "../Markets/StandardMarketWithPriceLoggerFactory.sol",
        "id": 3984,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 3623,
        "src": "93:61:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@gnosis.pm/util-contracts/contracts/Proxy.sol",
        "file": "@gnosis.pm/util-contracts/contracts/Proxy.sol",
        "id": 3985,
        "nodeType": "ImportDirective",
        "scope": 4381,
        "sourceUnit": 6829,
        "src": "155:55:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4023,
        "linearizedBaseContracts": [
          4023
        ],
        "name": "FutarchyOracleData",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 3989,
            "name": "FutarchyFunding",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3987,
                  "indexed": false,
                  "name": "funding",
                  "nodeType": "VariableDeclaration",
                  "scope": 3989,
                  "src": "300:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3986,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "299:14:18"
            },
            "src": "278:36:18"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3991,
            "name": "FutarchyClosing",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3990,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "340:2:18"
            },
            "src": "319:24:18"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3995,
            "name": "OutcomeAssignment",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3993,
                  "indexed": false,
                  "name": "winningMarketIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "372:23:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3992,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "372:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "371:25:18"
            },
            "src": "348:49:18"
          },
          {
            "constant": true,
            "id": 3998,
            "name": "LONG",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "436:30:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 3996,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "436:5:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 3997,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "465:1:18",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4000,
            "name": "creator",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "504:15:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3999,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "504:7:18",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4003,
            "name": "markets",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "525:46:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
              "typeString": "contract StandardMarketWithPriceLogger[]"
            },
            "typeName": {
              "baseType": {
                "contractScope": null,
                "id": 4001,
                "name": "StandardMarketWithPriceLogger",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3549,
                "src": "525:29:18",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                  "typeString": "contract StandardMarketWithPriceLogger"
                }
              },
              "id": 4002,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "525:31:18",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage_ptr",
                "typeString": "contract StandardMarketWithPriceLogger[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4005,
            "name": "categoricalEvent",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "577:40:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_CategoricalEvent_$158",
              "typeString": "contract CategoricalEvent"
            },
            "typeName": {
              "contractScope": null,
              "id": 4004,
              "name": "CategoricalEvent",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 158,
              "src": "577:16:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                "typeString": "contract CategoricalEvent"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4007,
            "name": "tradingPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "623:25:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4006,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "623:4:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4009,
            "name": "winningMarketIndex",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "654:30:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4008,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "654:4:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4011,
            "name": "isSet",
            "nodeType": "VariableDeclaration",
            "scope": 4023,
            "src": "690:17:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4010,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "690:4:18",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4021,
              "nodeType": "Block",
              "src": "768:104:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4014,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7920,
                            "src": "832:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "832:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 4016,
                          "name": "creator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4000,
                          "src": "846:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "832:21:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4013,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "824:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "824:30:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4019,
                  "nodeType": "ExpressionStatement",
                  "src": "824:30:18"
                },
                {
                  "id": 4020,
                  "nodeType": "PlaceholderStatement",
                  "src": "864:1:18"
                }
              ]
            },
            "documentation": null,
            "id": 4022,
            "name": "isCreator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4012,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "765:2:18"
            },
            "src": "747:125:18",
            "visibility": "internal"
          }
        ],
        "scope": 4381,
        "src": "213:661:18"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4024,
              "name": "Proxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6828,
              "src": "908:5:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Proxy_$6828",
                "typeString": "contract Proxy"
              }
            },
            "id": 4025,
            "nodeType": "InheritanceSpecifier",
            "src": "908:5:18"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4026,
              "name": "FutarchyOracleData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4023,
              "src": "915:18:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FutarchyOracleData_$4023",
                "typeString": "contract FutarchyOracleData"
              }
            },
            "id": 4027,
            "nodeType": "InheritanceSpecifier",
            "src": "915:18:18"
          }
        ],
        "contractDependencies": [
          4023,
          6798,
          6828
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4127,
        "linearizedBaseContracts": [
          4127,
          4023,
          6828,
          6798
        ],
        "name": "FutarchyOracleProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4125,
              "nodeType": "Block",
              "src": "2127:737:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4060,
                          "name": "_tradingPeriod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4051,
                          "src": "2192:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2209:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2192:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4059,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "2184:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2184:27:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4064,
                  "nodeType": "ExpressionStatement",
                  "src": "2184:27:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4065,
                      "name": "categoricalEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4005,
                      "src": "2254:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                        "typeString": "contract CategoricalEvent"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4068,
                          "name": "collateralToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4035,
                          "src": "2309:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ERC20_$7778",
                            "typeString": "contract ERC20"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4071,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8022,
                                  "src": "2341:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FutarchyOracleProxy_$4127",
                                    "typeString": "contract FutarchyOracleProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FutarchyOracleProxy_$4127",
                                    "typeString": "contract FutarchyOracleProxy"
                                  }
                                ],
                                "id": 4070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2333:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2333:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4069,
                            "name": "Oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4841,
                            "src": "2326:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Oracle_$4841_$",
                              "typeString": "type(contract Oracle)"
                            }
                          },
                          "id": 4073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2326:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Oracle_$4841",
                            "typeString": "contract Oracle"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4074,
                          "name": "outcomeCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4039,
                          "src": "2349:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ERC20_$7778",
                            "typeString": "contract ERC20"
                          },
                          {
                            "typeIdentifier": "t_contract$_Oracle_$4841",
                            "typeString": "contract Oracle"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4066,
                          "name": "eventFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4033,
                          "src": "2273:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EventFactory_$602",
                            "typeString": "contract EventFactory"
                          }
                        },
                        "id": 4067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createCategoricalEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 527,
                        "src": "2273:35:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20_$7778_$_t_contract$_Oracle_$4841_$_t_uint8_$returns$_t_contract$_CategoricalEvent_$158_$",
                          "typeString": "function (contract ERC20,contract Oracle,uint8) external returns (contract CategoricalEvent)"
                        }
                      },
                      "id": 4075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2273:89:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                        "typeString": "contract CategoricalEvent"
                      }
                    },
                    "src": "2254:108:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                      "typeString": "contract CategoricalEvent"
                    }
                  },
                  "id": 4077,
                  "nodeType": "ExpressionStatement",
                  "src": "2254:108:18"
                },
                {
                  "body": {
                    "id": 4115,
                    "nodeType": "Block",
                    "src": "2468:322:18",
                    "statements": [
                      {
                        "assignments": [
                          4091
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4091,
                            "name": "scalarEvent",
                            "nodeType": "VariableDeclaration",
                            "scope": 4115,
                            "src": "2482:23:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ScalarEvent_$870",
                              "typeString": "contract ScalarEvent"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4090,
                              "name": "ScalarEvent",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 870,
                              "src": "2482:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ScalarEvent_$870",
                                "typeString": "contract ScalarEvent"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4102,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4096,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4079,
                                  "src": "2587:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4094,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "2556:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                },
                                "id": 4095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "outcomeTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 203,
                                "src": "2556:30:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_OutcomeToken_$5793_$",
                                  "typeString": "function (uint256) view external returns (contract OutcomeToken)"
                                }
                              },
                              "id": 4097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2556:33:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$5793",
                                "typeString": "contract OutcomeToken"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4098,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4037,
                              "src": "2607:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Oracle_$4841",
                                "typeString": "contract Oracle"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4099,
                              "name": "lowerBound",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4041,
                              "src": "2631:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4100,
                              "name": "upperBound",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4043,
                              "src": "2659:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_OutcomeToken_$5793",
                                "typeString": "contract OutcomeToken"
                              },
                              {
                                "typeIdentifier": "t_contract$_Oracle_$4841",
                                "typeString": "contract Oracle"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4092,
                              "name": "eventFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4033,
                              "src": "2508:12:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EventFactory_$602",
                                "typeString": "contract EventFactory"
                              }
                            },
                            "id": 4093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createScalarEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 601,
                            "src": "2508:30:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20_$7778_$_t_contract$_Oracle_$4841_$_t_int256_$_t_int256_$returns$_t_contract$_ScalarEvent_$870_$",
                              "typeString": "function (contract ERC20,contract Oracle,int256,int256) external returns (contract ScalarEvent)"
                            }
                          },
                          "id": 4101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2508:175:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ScalarEvent_$870",
                            "typeString": "contract ScalarEvent"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2482:201:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4108,
                                  "name": "scalarEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4091,
                                  "src": "2737:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ScalarEvent_$870",
                                    "typeString": "contract ScalarEvent"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4109,
                                  "name": "marketMaker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4047,
                                  "src": "2750:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                                    "typeString": "contract MarketMaker"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4110,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4049,
                                  "src": "2763:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4111,
                                  "name": "startDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4053,
                                  "src": "2768:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ScalarEvent_$870",
                                    "typeString": "contract ScalarEvent"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                                    "typeString": "contract MarketMaker"
                                  },
                                  {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4106,
                                  "name": "marketFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "2710:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerFactory_$3622",
                                    "typeString": "contract StandardMarketWithPriceLoggerFactory"
                                  }
                                },
                                "id": 4107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "createMarket",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3621,
                                "src": "2710:26:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Event_$392_$_t_contract$_MarketMaker_$1606_$_t_uint24_$_t_uint256_$returns$_t_contract$_StandardMarketWithPriceLogger_$3549_$",
                                  "typeString": "function (contract Event,contract MarketMaker,uint24,uint256) external returns (contract StandardMarketWithPriceLogger)"
                                }
                              },
                              "id": 4112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2710:68:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                "typeString": "contract StandardMarketWithPriceLogger"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                "typeString": "contract StandardMarketWithPriceLogger"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4103,
                              "name": "markets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4003,
                              "src": "2697:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                                "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                              }
                            },
                            "id": 4105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2697:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_StandardMarketWithPriceLogger_$3549_$returns$_t_uint256_$",
                              "typeString": "function (contract StandardMarketWithPriceLogger) returns (uint256)"
                            }
                          },
                          "id": 4113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2697:82:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4114,
                        "nodeType": "ExpressionStatement",
                        "src": "2697:82:18"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 4086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4082,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4079,
                      "src": "2423:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4083,
                          "name": "categoricalEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4005,
                          "src": "2427:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                            "typeString": "contract CategoricalEvent"
                          }
                        },
                        "id": 4084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutcomeCount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 331,
                        "src": "2427:32:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                          "typeString": "function () view external returns (uint8)"
                        }
                      },
                      "id": 4085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2427:34:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "2423:38:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4116,
                  "initializationExpression": {
                    "assignments": [
                      4079
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4079,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4116,
                        "src": "2410:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4078,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2410:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4081,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2420:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2410:11:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2463:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4087,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4079,
                        "src": "2463:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4089,
                    "nodeType": "ExpressionStatement",
                    "src": "2463:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "2405:385:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4117,
                      "name": "creator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4000,
                      "src": "2799:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4118,
                      "name": "_creator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4031,
                      "src": "2809:8:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2799:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4120,
                  "nodeType": "ExpressionStatement",
                  "src": "2799:18:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4121,
                      "name": "tradingPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4007,
                      "src": "2827:13:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4122,
                      "name": "_tradingPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4051,
                      "src": "2843:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2827:30:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4124,
                  "nodeType": "ExpressionStatement",
                  "src": "2827:30:18"
                }
              ]
            },
            "documentation": "@dev Constructor creates events and markets for futarchy oracle\n @param _creator Oracle creator\n @param eventFactory Event factory contract\n @param collateralToken Tokens used as collateral in exchange for outcome tokens\n @param oracle Oracle contract used to resolve the event\n @param outcomeCount Number of event outcomes\n @param lowerBound Lower bound for event outcome\n @param upperBound Lower bound for event outcome\n @param marketFactory Market factory contract\n @param marketMaker Market maker contract\n @param fee Market fee\n @param _tradingPeriod Trading period before decision can be determined\n @param startDate Start date for price logging",
            "id": 4126,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4056,
                    "name": "proxied",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4029,
                    "src": "2099:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4057,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4055,
                  "name": "Proxy",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6828,
                  "src": "2093:5:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Proxy_$6828_$",
                    "typeString": "type(contract Proxy)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2093:14:18"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4029,
                  "name": "proxied",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1706:15:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1706:7:18",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4031,
                  "name": "_creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1731:16:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4030,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:18",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4033,
                  "name": "eventFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1757:25:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EventFactory_$602",
                    "typeString": "contract EventFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4032,
                    "name": "EventFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 602,
                    "src": "1757:12:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventFactory_$602",
                      "typeString": "contract EventFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4035,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1792:21:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$7778",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4034,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7778,
                    "src": "1792:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$7778",
                      "typeString": "contract ERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4037,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1823:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Oracle_$4841",
                    "typeString": "contract Oracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4036,
                    "name": "Oracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "1823:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Oracle_$4841",
                      "typeString": "contract Oracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4039,
                  "name": "outcomeCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1846:18:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4038,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1846:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4041,
                  "name": "lowerBound",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1874:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4040,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1874:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4043,
                  "name": "upperBound",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1898:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4042,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4045,
                  "name": "marketFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1922:50:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerFactory_$3622",
                    "typeString": "contract StandardMarketWithPriceLoggerFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4044,
                    "name": "StandardMarketWithPriceLoggerFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3622,
                    "src": "1922:36:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerFactory_$3622",
                      "typeString": "contract StandardMarketWithPriceLoggerFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4047,
                  "name": "marketMaker",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "1982:23:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                    "typeString": "contract MarketMaker"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4046,
                    "name": "MarketMaker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1606,
                    "src": "1982:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarketMaker_$1606",
                      "typeString": "contract MarketMaker"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4049,
                  "name": "fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "2015:10:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 4048,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "2015:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4051,
                  "name": "_tradingPeriod",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "2035:19:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4050,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2035:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4053,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 4126,
                  "src": "2064:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4052,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2064:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1696:388:18"
            },
            "returnParameters": {
              "id": 4058,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2127:0:18"
            },
            "scope": 4127,
            "src": "1685:1179:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4381,
        "src": "876:1990:18"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4128,
              "name": "Proxied",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6798,
              "src": "3033:7:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Proxied_$6798",
                "typeString": "contract Proxied"
              }
            },
            "id": 4129,
            "nodeType": "InheritanceSpecifier",
            "src": "3033:7:18"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4130,
              "name": "Oracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4841,
              "src": "3042:6:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Oracle_$4841",
                "typeString": "contract Oracle"
              }
            },
            "id": 4131,
            "nodeType": "InheritanceSpecifier",
            "src": "3042:6:18"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4132,
              "name": "FutarchyOracleData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4023,
              "src": "3050:18:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FutarchyOracleData_$4023",
                "typeString": "contract FutarchyOracleData"
              }
            },
            "id": 4133,
            "nodeType": "InheritanceSpecifier",
            "src": "3050:18:18"
          }
        ],
        "contractDependencies": [
          4023,
          4841,
          6798
        ],
        "contractKind": "contract",
        "documentation": "@title Futarchy oracle contract - Allows to create an oracle based on market behaviour\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 4380,
        "linearizedBaseContracts": [
          4380,
          4023,
          4841,
          6798
        ],
        "name": "FutarchyOracle",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4135,
            "libraryName": {
              "contractScope": null,
              "id": 4134,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7381,
              "src": "3081:8:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$7381",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "3075:21:18",
            "typeName": null
          },
          {
            "body": {
              "id": 4214,
              "nodeType": "Block",
              "src": "3308:671:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4147,
                              "name": "creator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4000,
                              "src": "3405:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4149,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8024,
                                  "src": "3422:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                    "typeString": "contract FutarchyOracle"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                    "typeString": "contract FutarchyOracle"
                                  }
                                ],
                                "id": 4148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3414:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3414:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4151,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3429:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4143,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "3357:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                },
                                "id": 4144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 194,
                                "src": "3357:32:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                  "typeString": "function () view external returns (contract ERC20)"
                                }
                              },
                              "id": 4145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3357:34:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$7778",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 4146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7511,
                            "src": "3357:47:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3357:80:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4158,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "3508:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                ],
                                "id": 4157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3500:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3500:25:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4160,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3527:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4153,
                                  "name": "categoricalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4005,
                                  "src": "3457:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                    "typeString": "contract CategoricalEvent"
                                  }
                                },
                                "id": 4154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 194,
                                "src": "3457:32:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                  "typeString": "function () view external returns (contract ERC20)"
                                }
                              },
                              "id": 4155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3457:34:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$7778",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 4156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7476,
                            "src": "3457:42:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 4161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3457:78:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3357:178:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4142,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "3346:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3346:190:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4164,
                  "nodeType": "ExpressionStatement",
                  "src": "3346:190:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4168,
                        "name": "funding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4137,
                        "src": "3578:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4165,
                        "name": "categoricalEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4005,
                        "src": "3546:16:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                          "typeString": "contract CategoricalEvent"
                        }
                      },
                      "id": 4167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "buyAllOutcomes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 251,
                      "src": "3546:31:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3546:40:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4170,
                  "nodeType": "ExpressionStatement",
                  "src": "3546:40:18"
                },
                {
                  "body": {
                    "id": 4208,
                    "nodeType": "Block",
                    "src": "3710:224:18",
                    "statements": [
                      {
                        "assignments": [
                          4183
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4183,
                            "name": "market",
                            "nodeType": "VariableDeclaration",
                            "scope": 4208,
                            "src": "3724:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Market_$2296",
                              "typeString": "contract Market"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4182,
                              "name": "Market",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2296,
                              "src": "3724:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Market_$2296",
                                "typeString": "contract Market"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4187,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4184,
                            "name": "markets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4003,
                            "src": "3740:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                              "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                            }
                          },
                          "id": 4186,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4185,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4172,
                            "src": "3748:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3740:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract StandardMarketWithPriceLogger"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3724:26:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4196,
                                      "name": "market",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4183,
                                      "src": "3871:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Market_$2296",
                                        "typeString": "contract Market"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Market_$2296",
                                        "typeString": "contract Market"
                                      }
                                    ],
                                    "id": 4195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3863:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 4197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3863:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4198,
                                  "name": "funding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4137,
                                  "src": "3880:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4189,
                                          "name": "market",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4183,
                                          "src": "3814:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Market_$2296",
                                            "typeString": "contract Market"
                                          }
                                        },
                                        "id": 4190,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "eventContract",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2214,
                                        "src": "3814:20:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Event_$392_$",
                                          "typeString": "function () view external returns (contract Event)"
                                        }
                                      },
                                      "id": 4191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3814:22:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Event_$392",
                                        "typeString": "contract Event"
                                      }
                                    },
                                    "id": 4192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 194,
                                    "src": "3814:38:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                      "typeString": "function () view external returns (contract ERC20)"
                                    }
                                  },
                                  "id": 4193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3814:40:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$7778",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 4194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "approve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7476,
                                "src": "3814:48:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3814:74:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4188,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7923,
                              7924
                            ],
                            "referencedDeclaration": 7923,
                            "src": "3806:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3806:83:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4201,
                        "nodeType": "ExpressionStatement",
                        "src": "3806:83:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4205,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3915:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4202,
                              "name": "market",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4183,
                              "src": "3903:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Market_$2296",
                                "typeString": "contract Market"
                              }
                            },
                            "id": 4204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fund",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2237,
                            "src": "3903:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 4206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3903:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4207,
                        "nodeType": "ExpressionStatement",
                        "src": "3903:20:18"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4175,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4172,
                      "src": "3685:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4176,
                        "name": "markets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4003,
                        "src": "3689:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                          "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                        }
                      },
                      "id": 4177,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3689:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3685:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4209,
                  "initializationExpression": {
                    "assignments": [
                      4172
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4172,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4209,
                        "src": "3672:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4171,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3672:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4174,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3682:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3672:11:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3705:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4179,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4172,
                        "src": "3705:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4181,
                    "nodeType": "ExpressionStatement",
                    "src": "3705:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "3667:267:18"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4211,
                        "name": "funding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4137,
                        "src": "3964:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4210,
                      "name": "FutarchyFunding",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3989,
                      "src": "3948:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3948:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4213,
                  "nodeType": "EmitStatement",
                  "src": "3943:29:18"
                }
              ]
            },
            "documentation": "@dev Funds all markets with equal amount of funding\n @param funding Amount of funding",
            "id": 4215,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4140,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4139,
                  "name": "isCreator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4022,
                  "src": "3294:9:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3294:9:18"
              }
            ],
            "name": "fund",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4137,
                  "name": "funding",
                  "nodeType": "VariableDeclaration",
                  "scope": 4215,
                  "src": "3257:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4136,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3257:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3256:14:18"
            },
            "returnParameters": {
              "id": 4141,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3308:0:18"
            },
            "scope": 4380,
            "src": "3243:736:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4283,
              "nodeType": "Block",
              "src": "4150:701:18",
              "statements": [
                {
                  "assignments": [
                    4221
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4221,
                      "name": "market",
                      "nodeType": "VariableDeclaration",
                      "scope": 4283,
                      "src": "4201:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Market_$2296",
                        "typeString": "contract Market"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4220,
                        "name": "Market",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2296,
                        "src": "4201:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Market_$2296",
                          "typeString": "contract Market"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4228,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4222,
                      "name": "markets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4003,
                      "src": "4217:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                        "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                      }
                    },
                    "id": 4227,
                    "indexExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4224,
                            "name": "getOutcome",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4379
                            ],
                            "referencedDeclaration": 4379,
                            "src": "4230:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_int256_$",
                              "typeString": "function () view returns (int256)"
                            }
                          },
                          "id": 4225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4230:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 4223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4225:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint"
                      },
                      "id": 4226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4225:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4217:27:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                      "typeString": "contract StandardMarketWithPriceLogger"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4201:43:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4230,
                              "name": "categoricalEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4005,
                              "src": "4262:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                "typeString": "contract CategoricalEvent"
                              }
                            },
                            "id": 4231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isOutcomeSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 198,
                            "src": "4262:29:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 4232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4262:31:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4233,
                                  "name": "market",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4221,
                                  "src": "4297:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Market_$2296",
                                    "typeString": "contract Market"
                                  }
                                },
                                "id": 4234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eventContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2214,
                                "src": "4297:20:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Event_$392_$",
                                  "typeString": "function () view external returns (contract Event)"
                                }
                              },
                              "id": 4235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4297:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Event_$392",
                                "typeString": "contract Event"
                              }
                            },
                            "id": 4236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isOutcomeSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 198,
                            "src": "4297:35:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 4237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4297:37:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4262:72:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4229,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "4254:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4254:81:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4240,
                  "nodeType": "ExpressionStatement",
                  "src": "4254:81:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4241,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4221,
                        "src": "4439:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Market_$2296",
                          "typeString": "contract Market"
                        }
                      },
                      "id": 4243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "close",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2240,
                      "src": "4439:12:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 4244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4439:14:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4245,
                  "nodeType": "ExpressionStatement",
                  "src": "4439:14:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4246,
                            "name": "market",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4221,
                            "src": "4463:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Market_$2296",
                              "typeString": "contract Market"
                            }
                          },
                          "id": 4248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "eventContract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2214,
                          "src": "4463:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Event_$392_$",
                            "typeString": "function () view external returns (contract Event)"
                          }
                        },
                        "id": 4249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4463:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Event_$392",
                          "typeString": "contract Event"
                        }
                      },
                      "id": 4250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redeemWinnings",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 391,
                      "src": "4463:37:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 4251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4463:39:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4252,
                  "nodeType": "ExpressionStatement",
                  "src": "4463:39:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4253,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4221,
                        "src": "4512:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Market_$2296",
                          "typeString": "contract Market"
                        }
                      },
                      "id": 4255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdrawFees",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2245,
                      "src": "4512:19:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 4256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4512:21:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4257,
                  "nodeType": "ExpressionStatement",
                  "src": "4512:21:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4258,
                        "name": "categoricalEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4005,
                        "src": "4647:16:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                          "typeString": "contract CategoricalEvent"
                        }
                      },
                      "id": 4260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redeemWinnings",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 141,
                      "src": "4647:31:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 4261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4647:33:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4262,
                  "nodeType": "ExpressionStatement",
                  "src": "4647:33:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4268,
                            "name": "creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4000,
                            "src": "4742:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4274,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8024,
                                    "src": "4804:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                      "typeString": "contract FutarchyOracle"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FutarchyOracle_$4380",
                                      "typeString": "contract FutarchyOracle"
                                    }
                                  ],
                                  "id": 4273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4796:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 4275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4796:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4269,
                                    "name": "categoricalEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4005,
                                    "src": "4751:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                      "typeString": "contract CategoricalEvent"
                                    }
                                  },
                                  "id": 4270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateralToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 194,
                                  "src": "4751:32:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                    "typeString": "function () view external returns (contract ERC20)"
                                  }
                                },
                                "id": 4271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4751:34:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC20_$7778",
                                  "typeString": "contract ERC20"
                                }
                              },
                              "id": 4272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7422,
                              "src": "4751:44:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 4276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4751:59:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4264,
                                "name": "categoricalEvent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4005,
                                "src": "4698:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CategoricalEvent_$158",
                                  "typeString": "contract CategoricalEvent"
                                }
                              },
                              "id": 4265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 194,
                              "src": "4698:32:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$7778_$",
                                "typeString": "function () view external returns (contract ERC20)"
                              }
                            },
                            "id": 4266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4698:34:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$7778",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 4267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7441,
                          "src": "4698:43:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 4277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4698:113:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4263,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "4690:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4690:122:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4279,
                  "nodeType": "ExpressionStatement",
                  "src": "4690:122:18"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4280,
                      "name": "FutarchyClosing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3991,
                      "src": "4827:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4827:17:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4282,
                  "nodeType": "EmitStatement",
                  "src": "4822:22:18"
                }
              ]
            },
            "documentation": "@dev Closes market for winning outcome and redeems winnings and sends all collateral tokens to creator",
            "id": 4284,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4218,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4217,
                  "name": "isCreator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4022,
                  "src": "4136:9:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4136:9:18"
              }
            ],
            "name": "close",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4110:2:18"
            },
            "returnParameters": {
              "id": 4219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4150:0:18"
            },
            "scope": 4380,
            "src": "4096:755:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4360,
              "nodeType": "Block",
              "src": "4991:676:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5070:6:18",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4288,
                            "name": "isSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "5071:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4290,
                                    "name": "markets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4003,
                                    "src": "5080:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                                      "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                                    }
                                  },
                                  "id": 4292,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4291,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5088:1:18",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5080:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                    "typeString": "contract StandardMarketWithPriceLogger"
                                  }
                                },
                                "id": 4293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3277,
                                "src": "5080:20:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 4294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5080:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4295,
                              "name": "tradingPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4007,
                              "src": "5105:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5080:38:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4297,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7922,
                            "src": "5121:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5080:44:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5070:54:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "5062:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5062:63:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4301,
                  "nodeType": "ExpressionStatement",
                  "src": "5062:63:18"
                },
                {
                  "assignments": [
                    4303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4303,
                      "name": "highestAvgPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 4360,
                      "src": "5210:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4302,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5210:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4309,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4304,
                          "name": "markets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4003,
                          "src": "5233:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                            "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                          }
                        },
                        "id": 4306,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5241:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5233:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                          "typeString": "contract StandardMarketWithPriceLogger"
                        }
                      },
                      "id": 4307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAvgPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3514,
                      "src": "5233:22:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 4308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5233:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5210:47:18"
                },
                {
                  "assignments": [
                    4311
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4311,
                      "name": "highestIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 4360,
                      "src": "5267:17:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4310,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5267:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4313,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5287:1:18",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5267:21:18"
                },
                {
                  "body": {
                    "id": 4346,
                    "nodeType": "Block",
                    "src": "5341:203:18",
                    "statements": [
                      {
                        "assignments": [
                          4326
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4326,
                            "name": "avgPrice",
                            "nodeType": "VariableDeclaration",
                            "scope": 4346,
                            "src": "5355:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4325,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5355:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4332,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4327,
                                "name": "markets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4003,
                                "src": "5371:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                                  "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                                }
                              },
                              "id": 4329,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4328,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4315,
                                "src": "5379:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5371:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                                "typeString": "contract StandardMarketWithPriceLogger"
                              }
                            },
                            "id": 4330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAvgPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3514,
                            "src": "5371:22:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 4331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5371:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5355:40:18"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4333,
                            "name": "avgPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4326,
                            "src": "5413:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4334,
                            "name": "highestAvgPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4303,
                            "src": "5424:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5413:26:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4345,
                        "nodeType": "IfStatement",
                        "src": "5409:125:18",
                        "trueBody": {
                          "id": 4344,
                          "nodeType": "Block",
                          "src": "5441:93:18",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4336,
                                  "name": "highestAvgPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4303,
                                  "src": "5459:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4337,
                                  "name": "avgPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4326,
                                  "src": "5477:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5459:26:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4339,
                              "nodeType": "ExpressionStatement",
                              "src": "5459:26:18"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4340,
                                  "name": "highestIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4311,
                                  "src": "5503:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4341,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4315,
                                  "src": "5518:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "5503:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4343,
                              "nodeType": "ExpressionStatement",
                              "src": "5503:16:18"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4318,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4315,
                      "src": "5316:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4319,
                        "name": "markets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4003,
                        "src": "5320:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_StandardMarketWithPriceLogger_$3549_$dyn_storage",
                          "typeString": "contract StandardMarketWithPriceLogger[] storage ref"
                        }
                      },
                      "id": 4320,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5320:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5316:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4347,
                  "initializationExpression": {
                    "assignments": [
                      4315
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4315,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "5303:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4314,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5303:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4317,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5313:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5303:11:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4323,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5336:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4322,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4315,
                        "src": "5336:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4324,
                    "nodeType": "ExpressionStatement",
                    "src": "5336:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "5298:246:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4348,
                      "name": "winningMarketIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4009,
                      "src": "5553:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4349,
                      "name": "highestIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4311,
                      "src": "5574:12:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5553:33:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4351,
                  "nodeType": "ExpressionStatement",
                  "src": "5553:33:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4352,
                      "name": "isSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4011,
                      "src": "5596:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4353,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5604:4:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5596:12:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4355,
                  "nodeType": "ExpressionStatement",
                  "src": "5596:12:18"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4357,
                        "name": "winningMarketIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4009,
                        "src": "5641:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4356,
                      "name": "OutcomeAssignment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3995,
                      "src": "5623:17:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5623:37:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4359,
                  "nodeType": "EmitStatement",
                  "src": "5618:42:18"
                }
              ]
            },
            "documentation": "@dev Allows to set the oracle outcome based on the market with largest long position",
            "id": 4361,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setOutcome",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4285,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4969:2:18"
            },
            "returnParameters": {
              "id": 4286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4991:0:18"
            },
            "scope": 4380,
            "src": "4950:717:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4368,
              "nodeType": "Block",
              "src": "5831:29:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4366,
                    "name": "isSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4011,
                    "src": "5848:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4365,
                  "id": 4367,
                  "nodeType": "Return",
                  "src": "5841:12:18"
                }
              ]
            },
            "documentation": "@dev Returns if winning outcome is set\n @return Is outcome set?",
            "id": 4369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOutcomeSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4362,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5773:2:18"
            },
            "returnParameters": {
              "id": 4365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4364,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4369,
                  "src": "5821:4:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4363,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5821:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5820:6:18"
            },
            "scope": 4380,
            "src": "5752:108:18",
            "stateMutability": "view",
            "superFunction": 4835,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4378,
              "nodeType": "Block",
              "src": "6003:47:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4375,
                        "name": "winningMarketIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4009,
                        "src": "6024:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6020:3:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": "int"
                    },
                    "id": 4376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6020:23:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 4373,
                  "id": 4377,
                  "nodeType": "Return",
                  "src": "6013:30:18"
                }
              ]
            },
            "documentation": "@dev Returns winning outcome\n @return Outcome",
            "id": 4379,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutcome",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5946:2:18"
            },
            "returnParameters": {
              "id": 4373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4372,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4379,
                  "src": "5994:3:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4371,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5993:5:18"
            },
            "scope": 4380,
            "src": "5927:123:18",
            "stateMutability": "view",
            "superFunction": 4840,
            "visibility": "public"
          }
        ],
        "scope": 4381,
        "src": "3006:3046:18"
      }
    ],
    "src": "0:6053:18"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.6+commit.b259423e.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-09-20T17:46:52.197Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}