{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IOracle",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_AlreadyResolved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_CommittingPhaseOver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_DisputeNotEscalated",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_EmptyCommitment",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_NonExistentDispute",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_OnGoingCommittingPhase",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_OnGoingRevealingPhase",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_RevealingPhaseOver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PrivateERC20ResolutionModule_WrongRevealData",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "CommittingPhaseStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum IOracle.DisputeStatus",
          "name": "_status",
          "type": "uint8"
        }
      ],
      "name": "DisputeResolved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "RequestFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "ResolutionStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_commitment",
          "type": "bytes32"
        }
      ],
      "name": "VoteCommitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_numberOfVotes",
          "type": "uint256"
        }
      ],
      "name": "VoteRevealed",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ORACLE",
      "outputs": [
        {
          "internalType": "contract IOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_commitment",
          "type": "bytes32"
        }
      ],
      "name": "commitVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_numberOfVotes",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "computeCommitment",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_commitment",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract IAccountingExtension",
              "name": "accountingExtension",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "votingToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "minVotesForQuorum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "committingTimeWindow",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "revealingTimeWindow",
              "type": "uint256"
            }
          ],
          "internalType": "struct IPrivateERC20ResolutionModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "escalations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalVotes",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "finalizeRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleName",
      "outputs": [
        {
          "internalType": "string",
          "name": "_moduleName",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "requestData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "_requestData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "resolveDispute",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_numberOfVotes",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "revealVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setupRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "startResolution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60a060405234801561001057600080fd5b50604051611d79380380611d7983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611caf6100ca60003960008181610195015281816102890152818161034a015281816103d901528181610858015281816108e101528181610b8701528181610c7101528181610e1e015261109d0152611caf6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80634d610a461161008c57806393f0899a1161006657806393f0899a146102c0578063c8218e3e146102f9578063ce5470d71461030c578063d96dd0e71461031f57600080fd5b80634d610a46146102185780637dc0d1d0146102875780638748cb63146102ad57600080fd5b80633661346b116100bd5780633661346b1461017057806338013f02146101905780634cf3ad6a146101dc57600080fd5b8063201f0365146100e45780632e76be2a14610148578063309de6071461015d575b600080fd5b6101356100f236600461167a565b60408051336020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6040519081526020015b60405180910390f35b61015b6101563660046116a6565b610332565b005b61015b61016b366004611747565b6103c1565b61018361017e366004611777565b610434565b60405161013f91906117fe565b6101b77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6102036101ea366004611777565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161013f565b61022b610226366004611777565b6104ce565b60405161013f9190600060a08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006101b7565b61015b6102bb366004611811565b6105dc565b60408051808201909152601c81527f5072697661746545524332305265736f6c7574696f6e4d6f64756c65000000006020820152610183565b61015b610307366004611777565b610840565b61015b61031a36600461167a565b610dec565b61015b61032d366004611777565b611085565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146103a1576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020819052604090206103ba828483611913565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610430576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000602081905290815260409020805461044d90611872565b80601f016020809104026020016040519081016040528092919081815260200182805461047990611872565b80156104c65780601f1061049b576101008083540402835291602001916104c6565b820191906000526020600020905b8154815290600101906020018083116104a957829003601f168201915b505050505081565b61052c6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6000828152602081905260409020805461054590611872565b80601f016020809104026020016040519081016040528092919081815260200182805461057190611872565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b50505050508060200190518101906105d69190611a2e565b92915050565b60008381526001602081815260408084208151808301909252805480835293015491810191909152910361063c576040517f4966c8e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610647866104ce565b9050600080826060015184600001516106609190611ab0565b6080840151606085015186516106769190611ab0565b6106809190611ab0565b915091508142116106bd576040517f9e3d31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b804211156106f7576040517f264977e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260026020908152604080832033808552908352928190208151928301939093528101899052606081018890526080810187905260a00160405160208183030381529060405280519060200120816001015414610784576040517f1fcb91b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8681556000600182018190558881526003602052604090206107a69033611144565b50600088815260016020819052604082200180548992906107c8908490611ab0565b909155505060208401516107f49073ffffffffffffffffffffffffffffffffffffffff1633308a61116d565b60408051338152602081018a90529081018890527f964bc9ffc6c2ef7cc8b83901ff022400ae65f2ed56f5810f077218bc635b5f7c9060600160405180910390a1505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108af576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109619190611aea565b805190915060000361099f576040517f2f035e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a0015160058111156109b7576109b7611b80565b146109ee576040517f62c44f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020818152604080842081518083019092528054808352930154918101919091529103610a4e576040517f4966c8e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a5d83608001516104ce565b60608101518351919250610a7091611ab0565b421015610aa9576040517f9e3d31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b608081015160608201518351610abf9190611ab0565b610ac99190611ab0565b421015610b02576040517f9ce93ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816040015183602001511015610b1b576000610b1e565b60015b60ff1690506000610b4060036000888152602001908152602001600020611249565b905081600103610c34576040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610bbf908990600390600401611bea565b600060405180830381600087803b158015610bd957600080fd5b505af1158015610bed573d6000803e3d6000fd5b505050508585608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746003604051610c279190611bfe565b60405180910390a3610d19565b6040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610ca89089906004908101611bea565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b505050508585608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746004604051610d109190611bfe565b60405180910390a35b805160005b81811015610de257610dda838281518110610d3b57610d3b611c0c565b6020026020010151600260008b81526020019081526020016000206000868581518110610d6a57610d6a611c0c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154876020015173ffffffffffffffffffffffffffffffffffffffff166112569092919063ffffffff16565b600101610d1e565b5050505050505050565b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e9190611aea565b8051909150600003610edc576040517f2f035e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a001516005811115610ef457610ef4611b80565b14610f2b576040517f62c44f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526001602052604081205490819003610f74576040517f4966c8e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f7f866104ce565b90506000816060015183610f939190611ab0565b9050804210610fce576040517f08bc34c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84611005576040517fdca831c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600080825260208083018981528a8352600282528483203380855290835292859020935184555160019093019290925582519081529081018890529081018690527f68d466cc7510ac7cdbf434edb9bb9cc5f07d6c604b1613c7d0ef3c820dbd297e9060600160405180910390a150505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146110f4576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020908152604091829020429081905582519081529081018390527f92f15b32ce181f47b37f3acd0b17c5f96b81e8054933b44f961deaa3a3c50378910160405180910390a150565b60006111668373ffffffffffffffffffffffffffffffffffffffff84166112ac565b9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103ba9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526112fb565b606060006111668361140f565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103bc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016111c7565b60008181526001830160205260408120546112f3575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105d6565b5060006105d6565b600061135d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661146b9092919063ffffffff16565b905080516000148061137e57508080602001905181019061137e9190611c3b565b6103bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60608160000180548060200260200160405190810160405280929190818152602001828054801561145f57602002820191906000526020600020905b81548152602001906001019080831161144b575b50505050509050919050565b606061147a8484600085611482565b949350505050565b606082471015611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611406565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161153d9190611c5d565b60006040518083038185875af1925050503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b50915091506115908783838761159b565b979650505050505050565b6060831561163157825160000361162a5773ffffffffffffffffffffffffffffffffffffffff85163b61162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611406565b508161147a565b61147a83838151156116465781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140691906117fe565b60008060006060848603121561168f57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156116bb57600080fd5b83359250602084013567ffffffffffffffff808211156116da57600080fd5b818601915086601f8301126116ee57600080fd5b8135818111156116fd57600080fd5b87602082850101111561170f57600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461174457600080fd5b50565b6000806040838503121561175a57600080fd5b82359150602083013561176c81611722565b809150509250929050565b60006020828403121561178957600080fd5b5035919050565b60005b838110156117ab578181015183820152602001611793565b50506000910152565b600081518084526117cc816020860160208601611790565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061116660208301846117b4565b6000806000806080858703121561182757600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061188657607f821691505b6020821081036118bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156103bc57600081815260208120601f850160051c810160208610156118ec5750805b601f850160051c820191505b8181101561190b578281556001016118f8565b505050505050565b67ffffffffffffffff83111561192b5761192b611843565b61193f836119398354611872565b836118c5565b6000601f841160018114611991576000851561195b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611a27565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156119e057868501358255602094850194600190920191016119c0565b5086821015611a1b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060a08284031215611a4057600080fd5b60405160a0810181811067ffffffffffffffff82111715611a6357611a63611843565b6040528251611a7181611722565b81526020830151611a8181611722565b806020830152506040830151604082015260608301516060820152608083015160808201528091505092915050565b808201808211156105d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060c08284031215611afc57600080fd5b60405160c0810181811067ffffffffffffffff82111715611b1f57611b1f611843565b604052825181526020830151611b3481611722565b60208201526040830151611b4781611722565b80604083015250606083015160608201526080830151608082015260a083015160068110611b7457600080fd5b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611be6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b828152604081016111666020830184611baf565b602081016105d68284611baf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c4d57600080fd5b8151801515811461116657600080fd5b60008251611c6f818460208701611790565b919091019291505056fea264697066735822122047222ed58a3ebf1cd005beb53973d701b77a3e91f1de8723c47a46b5c7b7f0fd64736f6c63430008130033",
    "sourceMap": "714:5747:53:-:0;;;1318:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;353:16:0;;;714:5747:53;;14:306:113;100:6;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;195:16;;-1:-1:-1;;;;;240:31:113;;230:42;;220:70;;286:1;283;276:12;220:70;309:5;14:306;-1:-1:-1;;;14:306:113:o;:::-;714:5747:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80634d610a461161008c57806393f0899a1161006657806393f0899a146102c0578063c8218e3e146102f9578063ce5470d71461030c578063d96dd0e71461031f57600080fd5b80634d610a46146102185780637dc0d1d0146102875780638748cb63146102ad57600080fd5b80633661346b116100bd5780633661346b1461017057806338013f02146101905780634cf3ad6a146101dc57600080fd5b8063201f0365146100e45780632e76be2a14610148578063309de6071461015d575b600080fd5b6101356100f236600461167a565b60408051336020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6040519081526020015b60405180910390f35b61015b6101563660046116a6565b610332565b005b61015b61016b366004611747565b6103c1565b61018361017e366004611777565b610434565b60405161013f91906117fe565b6101b77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6102036101ea366004611777565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161013f565b61022b610226366004611777565b6104ce565b60405161013f9190600060a08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006101b7565b61015b6102bb366004611811565b6105dc565b60408051808201909152601c81527f5072697661746545524332305265736f6c7574696f6e4d6f64756c65000000006020820152610183565b61015b610307366004611777565b610840565b61015b61031a36600461167a565b610dec565b61015b61032d366004611777565b611085565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146103a1576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020819052604090206103ba828483611913565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610430576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000602081905290815260409020805461044d90611872565b80601f016020809104026020016040519081016040528092919081815260200182805461047990611872565b80156104c65780601f1061049b576101008083540402835291602001916104c6565b820191906000526020600020905b8154815290600101906020018083116104a957829003601f168201915b505050505081565b61052c6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6000828152602081905260409020805461054590611872565b80601f016020809104026020016040519081016040528092919081815260200182805461057190611872565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b50505050508060200190518101906105d69190611a2e565b92915050565b60008381526001602081815260408084208151808301909252805480835293015491810191909152910361063c576040517f4966c8e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610647866104ce565b9050600080826060015184600001516106609190611ab0565b6080840151606085015186516106769190611ab0565b6106809190611ab0565b915091508142116106bd576040517f9e3d31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b804211156106f7576040517f264977e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260026020908152604080832033808552908352928190208151928301939093528101899052606081018890526080810187905260a00160405160208183030381529060405280519060200120816001015414610784576040517f1fcb91b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8681556000600182018190558881526003602052604090206107a69033611144565b50600088815260016020819052604082200180548992906107c8908490611ab0565b909155505060208401516107f49073ffffffffffffffffffffffffffffffffffffffff1633308a61116d565b60408051338152602081018a90529081018890527f964bc9ffc6c2ef7cc8b83901ff022400ae65f2ed56f5810f077218bc635b5f7c9060600160405180910390a1505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108af576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109619190611aea565b805190915060000361099f576040517f2f035e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a0015160058111156109b7576109b7611b80565b146109ee576040517f62c44f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020818152604080842081518083019092528054808352930154918101919091529103610a4e576040517f4966c8e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a5d83608001516104ce565b60608101518351919250610a7091611ab0565b421015610aa9576040517f9e3d31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b608081015160608201518351610abf9190611ab0565b610ac99190611ab0565b421015610b02576040517f9ce93ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816040015183602001511015610b1b576000610b1e565b60015b60ff1690506000610b4060036000888152602001908152602001600020611249565b905081600103610c34576040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610bbf908990600390600401611bea565b600060405180830381600087803b158015610bd957600080fd5b505af1158015610bed573d6000803e3d6000fd5b505050508585608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746003604051610c279190611bfe565b60405180910390a3610d19565b6040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610ca89089906004908101611bea565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b505050508585608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746004604051610d109190611bfe565b60405180910390a35b805160005b81811015610de257610dda838281518110610d3b57610d3b611c0c565b6020026020010151600260008b81526020019081526020016000206000868581518110610d6a57610d6a611c0c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154876020015173ffffffffffffffffffffffffffffffffffffffff166112569092919063ffffffff16565b600101610d1e565b5050505050505050565b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e9190611aea565b8051909150600003610edc576040517f2f035e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a001516005811115610ef457610ef4611b80565b14610f2b576040517f62c44f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526001602052604081205490819003610f74576040517f4966c8e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f7f866104ce565b90506000816060015183610f939190611ab0565b9050804210610fce576040517f08bc34c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84611005576040517fdca831c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600080825260208083018981528a8352600282528483203380855290835292859020935184555160019093019290925582519081529081018890529081018690527f68d466cc7510ac7cdbf434edb9bb9cc5f07d6c604b1613c7d0ef3c820dbd297e9060600160405180910390a150505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146110f4576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020908152604091829020429081905582519081529081018390527f92f15b32ce181f47b37f3acd0b17c5f96b81e8054933b44f961deaa3a3c50378910160405180910390a150565b60006111668373ffffffffffffffffffffffffffffffffffffffff84166112ac565b9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103ba9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526112fb565b606060006111668361140f565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103bc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016111c7565b60008181526001830160205260408120546112f3575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105d6565b5060006105d6565b600061135d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661146b9092919063ffffffff16565b905080516000148061137e57508080602001905181019061137e9190611c3b565b6103bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60608160000180548060200260200160405190810160405280929190818152602001828054801561145f57602002820191906000526020600020905b81548152602001906001019080831161144b575b50505050509050919050565b606061147a8484600085611482565b949350505050565b606082471015611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611406565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161153d9190611c5d565b60006040518083038185875af1925050503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b50915091506115908783838761159b565b979650505050505050565b6060831561163157825160000361162a5773ffffffffffffffffffffffffffffffffffffffff85163b61162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611406565b508161147a565b61147a83838151156116465781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140691906117fe565b60008060006060848603121561168f57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156116bb57600080fd5b83359250602084013567ffffffffffffffff808211156116da57600080fd5b818601915086601f8301126116ee57600080fd5b8135818111156116fd57600080fd5b87602082850101111561170f57600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461174457600080fd5b50565b6000806040838503121561175a57600080fd5b82359150602083013561176c81611722565b809150509250929050565b60006020828403121561178957600080fd5b5035919050565b60005b838110156117ab578181015183820152602001611793565b50506000910152565b600081518084526117cc816020860160208601611790565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061116660208301846117b4565b6000806000806080858703121561182757600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061188657607f821691505b6020821081036118bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156103bc57600081815260208120601f850160051c810160208610156118ec5750805b601f850160051c820191505b8181101561190b578281556001016118f8565b505050505050565b67ffffffffffffffff83111561192b5761192b611843565b61193f836119398354611872565b836118c5565b6000601f841160018114611991576000851561195b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611a27565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156119e057868501358255602094850194600190920191016119c0565b5086821015611a1b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060a08284031215611a4057600080fd5b60405160a0810181811067ffffffffffffffff82111715611a6357611a63611843565b6040528251611a7181611722565b81526020830151611a8181611722565b806020830152506040830151604082015260608301516060820152608083015160808201528091505092915050565b808201808211156105d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060c08284031215611afc57600080fd5b60405160c0810181811067ffffffffffffffff82111715611b1f57611b1f611843565b604052825181526020830151611b3481611722565b60208201526040830151611b4781611722565b80604083015250606083015160608201526080830151608082015260a083015160068110611b7457600080fd5b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611be6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b828152604081016111666020830184611baf565b602081016105d68284611baf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c4d57600080fd5b8151801515811461116657600080fd5b60008251611c6f818460208701611790565b919091019291505056fea264697066735822122047222ed58a3ebf1cd005beb53973d701b77a3e91f1de8723c47a46b5c7b7f0fd64736f6c63430008130033",
    "sourceMap": "714:5747:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:239;;;;;;:::i;:::-;6396:57;;;6407:10;6396:57;;;5146:74:113;5236:18;;;5229:34;;;5279:18;;;5272:34;;;5322:18;;;5315:34;;;6345:19:53;;5118::113;;6396:57:53;;;;;;;;;;;;6386:68;;;;;;6372:82;;6220:239;;;;;;;;;481:25:113;;;469:2;454:18;6220:239:53;;;;;;;;695:175:0;;;;;;:::i;:::-;;:::i;:::-;;900:95;;;;;;:::i;:::-;;:::i;237:68::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;201:31::-;;;;;;;;2848:42:113;2836:55;;;2818:74;;2806:2;2791:18;201:31:0;2656:242:113;928:72:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3077:25:113;;;3133:2;3118:18;;3111:34;;;;3050:18;928:72:53;2903:248:113;1567:179:53;;;;;;:::i;:::-;;:::i;:::-;;;;;;3320:4:113;3362:3;3351:9;3347:19;3339:27;;3385:42;3473:2;3464:6;3458:13;3454:22;3443:9;3436:41;3545:2;3537:4;3529:6;3525:17;3519:24;3515:33;3508:4;3497:9;3493:20;3486:63;;3605:4;3597:6;3593:17;3587:24;3580:4;3569:9;3565:20;3558:54;3668:4;3660:6;3656:17;3650:24;3643:4;3632:9;3628:20;3621:54;3731:4;3723:6;3719:17;3713:24;3706:4;3695:9;3691:20;3684:54;3156:588;;;;;571:94:0;653:6;571:94;;3103:1341:53;;;;;;:::i;:::-;;:::i;1395:120::-;1473:37;;;;;;;;;;;;;;;;;1395:120;;4496:1672;;;;;;:::i;:::-;;:::i;2039:1012::-;;;;;;:::i;:::-;;:::i;1798:189::-;;;;;;:::i;:::-;;:::i;695:175:0:-;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;791:11:::1;:23:::0;;;::::1;::::0;;;;;;:31:::1;817:5:::0;;791:23;:31:::1;:::i;:::-;;828:37;695:175:::0;;;:::o;900:95::-;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;900:95;;:::o;237:68::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1567:179:53:-;1635:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1635:32:53;1696:11;:23;;;;;;;;;;1685:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1675:66;1567:179;-1:-1:-1;;1567:179:53:o;3103:1341::-;3215:29;3247:23;;;:11;:23;;;;;;;;3215:55;;;;;;;;;;;;;;;;;;;;;;;;3280:26;3276:89;;3315:50;;;;;;;;;;;;;;3276:89;3372:32;3407:29;3425:10;3407:17;:29::i;:::-;3372:64;;3443:24;3469:22;3527:7;:28;;;3503:11;:21;;;:52;;;;:::i;:::-;3618:27;;;;3587:28;;;;3563:21;;:52;;3587:28;3563:52;:::i;:::-;:82;;;;:::i;:::-;3442:209;;;;3680:16;3661:15;:35;3657:101;;3705:53;;;;;;;;;;;;;;3657:101;3786:14;3768:15;:32;3764:94;;;3809:49;;;;;;;;;;;;;;3764:94;3865:28;3896:23;;;:11;:23;;;;;;;;3920:10;3896:35;;;;;;;;;;3977:57;;;;;5146:74:113;;;;5236:18;;5229:34;;;5279:18;;;5272:34;;;5322:18;;;5315:34;;;5118:19;;3977:57:53;;;;;;;;;;;;3967:68;;;;;;3942:10;:21;;;:93;3938:167;;4052:46;;;;;;;;;;;;;;3938:167;4111:38;;;:21;4155;;;:35;;;4196:19;;;:7;:19;;;;;:35;;4220:10;4196:23;:35::i;:::-;-1:-1:-1;4237:23:53;;;;:11;:23;;;;;;;:34;:52;;4275:14;;4237:23;:52;;4275:14;;4237:52;:::i;:::-;;;;-1:-1:-1;;4296:19:53;;;;:79;;:36;;4333:10;4353:4;4360:14;4296:36;:79::i;:::-;4387:52;;;4400:10;9546:74:113;;9651:2;9636:18;;9629:34;;;9679:18;;;9672:34;;;4387:52:53;;9534:2:113;9519:18;4387:52:53;;;;;;;3209:1235;;;;;3103:1341;;;;:::o;4496:1672::-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;4600:29:53::1;::::0;;;;::::1;::::0;::::1;481:25:113::0;;;4566:31:53::1;::::0;4600:6:::1;:17;;::::0;::::1;::::0;454:18:113;;4600:29:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4639:18:::0;;4566:63;;-1:-1:-1;4639:18:53::1;:23:::0;4635:85:::1;;4671:49;;;;;;;;;;;;;;4635:85;4749:26;4730:8;:15;;;:45;;;;;;;;:::i;:::-;;4726:104;;4784:46;;;;;;;;;;;;;;4726:104;4837:29;4869:23:::0;;;:11:::1;:23;::::0;;;;;;;4837:55;;;;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;;4902:26;4898:89:::1;;4937:50;;;;;;;;;;;;;;4898:89;4994:32;5029:37;5047:8;:18;;;5029:17;:37::i;:::-;5119:28;::::0;::::1;::::0;5095:21;;4994:72;;-1:-1:-1;5095:52:53::1;::::0;::::1;:::i;:::-;5077:15;:70;5073:151;;;5164:53;;;;;;;;;;;;;;5073:151;5306:27;::::0;::::1;::::0;5275:28:::1;::::0;::::1;::::0;5251:21;;:52:::1;::::0;5275:28;5251:52:::1;:::i;:::-;:82;;;;:::i;:::-;5233:15;:100;5229:180;;;5350:52;;;;;;;;;;;;;;5229:180;5415:22;5466:7;:25;;;5440:11;:22;;;:51;;:59;;5498:1;5440:59;;;5494:1;5440:59;5415:84;;;;5506:25;5534:28;:7;:19;5542:10;5534:19;;;;;;;;;;;:26;:28::i;:::-;5506:56;;5573:14;5591:1;5573:19:::0;5569:367:::1;;5602:65;::::0;;;;:26:::1;:6;:26;::::0;::::1;::::0;:65:::1;::::0;5629:10;;5641:25:::1;::::0;5602:65:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5716:10;5696:8;:18;;;5680:74;5728:25;5680:74;;;;;;:::i;:::-;;;;;;;;5569:367;;;5775:66;::::0;;;;:26:::1;:6;:26;::::0;::::1;::::0;:66:::1;::::0;5802:10;;5814:26:::1;::::0;5775:66;::::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5890:10;5870:8;:18;;;5854:75;5902:26;5854:75;;;;;;:::i;:::-;;;;;;;;5569:367;5960:15:::0;;5942::::1;5981:183;6003:7;5998:2;:12;5981:183;;;6021:96;6054:8;6063:2;6054:12;;;;;;;;:::i;:::-;;;;;;;6068:11;:23;6080:10;6068:23;;;;;;;;;;;:37;6092:8;6101:2;6092:12;;;;;;;;:::i;:::-;;;;;;;6068:37;;;;;;;;;;;;;;;:48;;;6021:7;:19;;;:32;;;;:96;;;;;:::i;:::-;6145:4;;5981:183;;;;4560:1608;;;;;;4496:1672:::0;:::o;2039:1012::-;2167:29;;;;;;;;481:25:113;;;2133:31:53;;2167:6;:17;;;;;454:18:113;;2167:29:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2206:18;;2133:63;;-1:-1:-1;2206:18:53;:23;2202:85;;2238:49;;;;;;;;;;;;;;2202:85;2316:26;2297:8;:15;;;:45;;;;;;;;:::i;:::-;;2293:104;;2351:46;;;;;;;;;;;;;;2293:104;2404:18;2425:23;;;:11;:23;;;;;:33;;2468:15;;;2464:78;;2492:50;;;;;;;;;;;;;;2464:78;2549:32;2584:29;2602:10;2584:17;:29::i;:::-;2549:64;;2619:27;2662:7;:28;;;2649:10;:41;;;;:::i;:::-;2619:71;;2719:19;2700:15;:38;2696:101;;2747:50;;;;;;;;;;;;;;2696:101;2808:11;2804:85;;2843:46;;;;;;;;;;;;;;2804:85;2933:51;;;;;;;;-1:-1:-1;2933:51:53;;;;;;;;;;2895:23;;;:11;:23;;;;;2919:10;2895:35;;;;;;;;;;:89;;;;;;;;;;;;;2996:50;;9546:74:113;;;9636:18;;;9629:34;;;9679:18;;;9672:34;;;2996:50:53;;9534:2:113;9519:18;2996:50:53;;;;;;;2127:924;;;;2039:1012;;;:::o;1798:189::-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1869:23:53::1;::::0;;;:11:::1;:23;::::0;;;;;;;;1905:15:::1;1869:51:::0;;;;1931;;3077:25:113;;;3118:18;;;3111:34;;;1931:51:53::1;::::0;3050:18:113;1931:51:53::1;;;;;;;1798:189:::0;:::o;8305:150:18:-;8375:4;8398:50;8403:3;8423:23;;;8398:4;:50::i;:::-;8391:57;8305:150;-1:-1:-1;;;8305:150:18:o;1355:203:13:-;1482:68;;12719:42:113;12788:15;;;1482:68:13;;;12770:34:113;12840:15;;12820:18;;;12813:43;12872:18;;;12865:34;;;1455:96:13;;1475:5;;1505:27;;12682:18:113;;1482:68:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:19;:96::i;10259:300:18:-;10322:16;10350:22;10375:19;10383:3;10375:7;:19::i;941:175:13:-;1050:58;;13114:42:113;13102:55;;1050:58:13;;;13084:74:113;13174:18;;;13167:34;;;1023:86:13;;1043:5;;1073:23;;13057:18:113;;1050:58:13;12910:297:113;2214:404:18;2277:4;4351:19;;;:12;;;:19;;;;;;2293:319;;-1:-1:-1;2335:23:18;;;;;;;;:11;:23;;;;;;;;;;;;;2515:18;;2493:19;;;:12;;;:19;;;;;;:40;;;;2547:11;;2293:319;-1:-1:-1;2596:5:18;2589:12;;5196:642:13;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;5641:27;;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;;;;13696:2:113;5720:111:13;;;13678:21:113;13735:2;13715:18;;;13708:30;13774:34;13754:18;;;13747:62;13845:12;13825:18;;;13818:40;13875:19;;5720:111:13;;;;;;;;5570:109:18;5626:16;5661:3;:11;;5654:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5570:109;;;:::o;4108:223:14:-;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;:::-;4265:59;4108:223;-1:-1:-1;;;;4108:223:14:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;;;;14107:2:113;5354:81:14;;;14089:21:113;14146:2;14126:18;;;14119:30;14185:34;14165:18;;;14158:62;14256:8;14236:18;;;14229:36;14282:19;;5354:81:14;13905:402:113;5354:81:14;5446:12;5460:23;5487:6;:11;;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:14:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;14806:2:113;8113:60:14;;;14788:21:113;14845:2;14825:18;;;14818:30;14884:31;14864:18;;;14857:59;14933:18;;8113:60:14;14604:353:113;8113:60:14;-1:-1:-1;8208:10:14;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:316:113:-;91:6;99;107;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;-1:-1:-1;;199:23:113;;;269:2;254:18;;241:32;;-1:-1:-1;320:2:113;305:18;;;292:32;;14:316;-1:-1:-1;14:316:113:o;517:659::-;596:6;604;612;665:2;653:9;644:7;640:23;636:32;633:52;;;681:1;678;671:12;633:52;717:9;704:23;694:33;;778:2;767:9;763:18;750:32;801:18;842:2;834:6;831:14;828:34;;;858:1;855;848:12;828:34;896:6;885:9;881:22;871:32;;941:7;934:4;930:2;926:13;922:27;912:55;;963:1;960;953:12;912:55;1003:2;990:16;1029:2;1021:6;1018:14;1015:34;;;1045:1;1042;1035:12;1015:34;1090:7;1085:2;1076:6;1072:2;1068:15;1064:24;1061:37;1058:57;;;1111:1;1108;1101:12;1058:57;1142:2;1138;1134:11;1124:21;;1164:6;1154:16;;;;;517:659;;;;;:::o;1181:154::-;1267:42;1260:5;1256:54;1249:5;1246:65;1236:93;;1325:1;1322;1315:12;1236:93;1181:154;:::o;1340:315::-;1408:6;1416;1469:2;1457:9;1448:7;1444:23;1440:32;1437:52;;;1485:1;1482;1475:12;1437:52;1521:9;1508:23;1498:33;;1581:2;1570:9;1566:18;1553:32;1594:31;1619:5;1594:31;:::i;:::-;1644:5;1634:15;;;1340:315;;;;;:::o;1660:180::-;1719:6;1772:2;1760:9;1751:7;1747:23;1743:32;1740:52;;;1788:1;1785;1778:12;1740:52;-1:-1:-1;1811:23:113;;1660:180;-1:-1:-1;1660:180:113:o;1845:250::-;1930:1;1940:113;1954:6;1951:1;1948:13;1940:113;;;2030:11;;;2024:18;2011:11;;;2004:39;1976:2;1969:10;1940:113;;;-1:-1:-1;;2087:1:113;2069:16;;2062:27;1845:250::o;2100:329::-;2141:3;2179:5;2173:12;2206:6;2201:3;2194:19;2222:76;2291:6;2284:4;2279:3;2275:14;2268:4;2261:5;2257:16;2222:76;:::i;:::-;2343:2;2331:15;2348:66;2327:88;2318:98;;;;2418:4;2314:109;;2100:329;-1:-1:-1;;2100:329:113:o;2434:217::-;2581:2;2570:9;2563:21;2544:4;2601:44;2641:2;2630:9;2626:18;2618:6;2601:44;:::i;3980:385::-;4066:6;4074;4082;4090;4143:3;4131:9;4122:7;4118:23;4114:33;4111:53;;;4160:1;4157;4150:12;4111:53;-1:-1:-1;;4183:23:113;;;4253:2;4238:18;;4225:32;;-1:-1:-1;4304:2:113;4289:18;;4276:32;;4355:2;4340:18;4327:32;;-1:-1:-1;3980:385:113;-1:-1:-1;3980:385:113:o;5360:184::-;5412:77;5409:1;5402:88;5509:4;5506:1;5499:15;5533:4;5530:1;5523:15;5549:437;5628:1;5624:12;;;;5671;;;5692:61;;5746:4;5738:6;5734:17;5724:27;;5692:61;5799:2;5791:6;5788:14;5768:18;5765:38;5762:218;;5836:77;5833:1;5826:88;5937:4;5934:1;5927:15;5965:4;5962:1;5955:15;5762:218;;5549:437;;;:::o;6116:544::-;6217:2;6212:3;6209:11;6206:448;;;6253:1;6278:5;6274:2;6267:17;6323:4;6319:2;6309:19;6393:2;6381:10;6377:19;6374:1;6370:27;6364:4;6360:38;6429:4;6417:10;6414:20;6411:47;;;-1:-1:-1;6452:4:113;6411:47;6507:2;6502:3;6498:12;6495:1;6491:20;6485:4;6481:31;6471:41;;6562:82;6580:2;6573:5;6570:13;6562:82;;;6625:17;;;6606:1;6595:13;6562:82;;;6566:3;;;6116:544;;;:::o;6896:1321::-;7018:18;7013:3;7010:27;7007:53;;;7040:18;;:::i;:::-;7069:93;7158:3;7118:38;7150:4;7144:11;7118:38;:::i;:::-;7112:4;7069:93;:::i;:::-;7188:1;7213:2;7208:3;7205:11;7230:1;7225:734;;;;8003:1;8020:3;8017:93;;;-1:-1:-1;8076:19:113;;;8063:33;8017:93;6802:66;6793:1;6789:11;;;6785:84;6781:89;6771:100;6877:1;6873:11;;;6768:117;8123:78;;7198:1013;;7225:734;6063:1;6056:14;;;6100:4;6087:18;;7270:66;7261:76;;;7420:9;7442:229;7456:7;7453:1;7450:14;7442:229;;;7545:19;;;7532:33;7517:49;;7652:4;7637:20;;;;7605:1;7593:14;;;;7472:12;7442:229;;;7446:3;7699;7690:7;7687:16;7684:219;;;7819:66;7813:3;7807;7804:1;7800:11;7796:21;7792:94;7788:99;7775:9;7770:3;7766:19;7753:33;7749:139;7741:6;7734:155;7684:219;;;7946:1;7940:3;7937:1;7933:11;7929:19;7923:4;7916:33;7198:1013;;;6896:1321;;;:::o;8222:833::-;8328:6;8381:3;8369:9;8360:7;8356:23;8352:33;8349:53;;;8398:1;8395;8388:12;8349:53;8431:2;8425:9;8473:3;8465:6;8461:16;8543:6;8531:10;8528:22;8507:18;8495:10;8492:34;8489:62;8486:88;;;8554:18;;:::i;:::-;8590:2;8583:22;8627:16;;8652:31;8627:16;8652:31;:::i;:::-;8692:21;;8758:2;8743:18;;8737:25;8771:33;8737:25;8771:33;:::i;:::-;8837:7;8832:2;8824:6;8820:15;8813:32;;8899:2;8888:9;8884:18;8878:25;8873:2;8865:6;8861:15;8854:50;8958:2;8947:9;8943:18;8937:25;8932:2;8924:6;8920:15;8913:50;9018:3;9007:9;9003:19;8997:26;8991:3;8983:6;8979:16;8972:52;9043:6;9033:16;;;8222:833;;;;:::o;9060:279::-;9125:9;;;9146:10;;;9143:190;;;9189:77;9186:1;9179:88;9290:4;9287:1;9280:15;9318:4;9315:1;9308:15;9717:965;9812:6;9865:3;9853:9;9844:7;9840:23;9836:33;9833:53;;;9882:1;9879;9872:12;9833:53;9915:2;9909:9;9957:3;9949:6;9945:16;10027:6;10015:10;10012:22;9991:18;9979:10;9976:34;9973:62;9970:88;;;10038:18;;:::i;:::-;10074:2;10067:22;10113:16;;10098:32;;10173:2;10158:18;;10152:25;10186:31;10152:25;10186:31;:::i;:::-;10245:2;10233:15;;10226:30;10301:2;10286:18;;10280:25;10314:33;10280:25;10314:33;:::i;:::-;10380:7;10375:2;10367:6;10363:15;10356:32;;10442:2;10431:9;10427:18;10421:25;10416:2;10408:6;10404:15;10397:50;10502:3;10491:9;10487:19;10481:26;10475:3;10467:6;10463:16;10456:52;10553:3;10542:9;10538:19;10532:26;10589:1;10580:7;10577:14;10567:42;;10605:1;10602;10595:12;10567:42;10637:3;10625:16;;10618:33;10629:6;9717:965;-1:-1:-1;;;9717:965:113:o;10687:184::-;10739:77;10736:1;10729:88;10836:4;10833:1;10826:15;10860:4;10857:1;10850:15;10876:298;10961:1;10954:5;10951:12;10941:200;;10997:77;10994:1;10987:88;11098:4;11095:1;11088:15;11126:4;11123:1;11116:15;10941:200;11150:18;;10876:298::o;11179:287::-;11369:25;;;11357:2;11342:18;;11403:57;11456:2;11441:18;;11433:6;11403:57;:::i;11471:216::-;11621:2;11606:18;;11633:48;11610:9;11663:6;11633:48;:::i;11692:184::-;11744:77;11741:1;11734:88;11841:4;11838:1;11831:15;11865:4;11862:1;11855:15;13212:277;13279:6;13332:2;13320:9;13311:7;13307:23;13303:32;13300:52;;;13348:1;13345;13338:12;13300:52;13380:9;13374:16;13433:5;13426:13;13419:21;13412:5;13409:32;13399:60;;13455:1;13452;13445:12;14312:287;14441:3;14479:6;14473:13;14495:66;14554:6;14549:3;14542:4;14534:6;14530:17;14495:66;:::i;:::-;14577:16;;;;;14312:287;-1:-1:-1;;14312:287:113:o",
    "linkReferences": {},
    "immutableReferences": {
      "10": [
        {
          "start": 405,
          "length": 32
        },
        {
          "start": 649,
          "length": 32
        },
        {
          "start": 842,
          "length": 32
        },
        {
          "start": 985,
          "length": 32
        },
        {
          "start": 2136,
          "length": 32
        },
        {
          "start": 2273,
          "length": 32
        },
        {
          "start": 2951,
          "length": 32
        },
        {
          "start": 3185,
          "length": 32
        },
        {
          "start": 3614,
          "length": 32
        },
        {
          "start": 4253,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "ORACLE()": "38013f02",
    "commitVote(bytes32,bytes32,bytes32)": "ce5470d7",
    "computeCommitment(bytes32,uint256,bytes32)": "201f0365",
    "decodeRequestData(bytes32)": "4d610a46",
    "escalations(bytes32)": "4cf3ad6a",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "resolveDispute(bytes32)": "c8218e3e",
    "revealVote(bytes32,bytes32,uint256,bytes32)": "8748cb63",
    "setupRequest(bytes32,bytes)": "2e76be2a",
    "startResolution(bytes32)": "d96dd0e7"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_AlreadyResolved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_CommittingPhaseOver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_DisputeNotEscalated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_EmptyCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_NonExistentDispute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_OnGoingCommittingPhase\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_OnGoingRevealingPhase\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_RevealingPhaseOver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateERC20ResolutionModule_WrongRevealData\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"CommittingPhaseStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"DisputeResolved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"ResolutionStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"VoteCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_numberOfVotes\",\"type\":\"uint256\"}],\"name\":\"VoteRevealed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ORACLE\",\"outputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"commitVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_numberOfVotes\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"computeCommitment\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IAccountingExtension\",\"name\":\"accountingExtension\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"votingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minVotesForQuorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"committingTimeWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"revealingTimeWindow\",\"type\":\"uint256\"}],\"internalType\":\"struct IPrivateERC20ResolutionModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"escalations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalVotes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"finalizeRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_moduleName\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"requestData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_requestData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"resolveDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_numberOfVotes\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"revealVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"setupRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"startResolution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"CommittingPhaseStarted(uint256,bytes32)\":{\"params\":{\"_disputeId\":\"The id of the dispute being voted on\",\"_startTime\":\"The timestamp at which the phase started\"}},\"DisputeResolved(bytes32,bytes32,uint8)\":{\"params\":{\"_disputeId\":\"The id for the dispute that was resolved\",\"_requestId\":\"The id for the request that was disputed\",\"_status\":\"The final result of the resolution\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}},\"ResolutionStarted(bytes32,bytes32)\":{\"params\":{\"_disputeId\":\"The id for the dispute that the resolution was started for\",\"_requestId\":\"The id for the request for the dispute\"}},\"VoteCommitted(address,bytes32,bytes32)\":{\"params\":{\"_commitment\":\"The commitment provided by the voter\",\"_disputeId\":\"The id of the dispute being voted on\",\"_voter\":\"The user who provided a commitment of a vote\"}},\"VoteRevealed(address,bytes32,uint256)\":{\"params\":{\"_disputeId\":\"The id of the dispute being voted on\",\"_numberOfVotes\":\"The number of votes cast\",\"_voter\":\"The user who revealed his vote\"}}},\"kind\":\"dev\",\"methods\":{\"commitVote(bytes32,bytes32,bytes32)\":{\"details\":\"Committing multiple times and overwriting a previous commitment is allowed\",\"params\":{\"_commitment\":\"The commitment computed from the provided data and the user's address\",\"_disputeId\":\"The id of the dispute being voted on\",\"_requestId\":\"The id of the request being disputed\"}},\"computeCommitment(bytes32,uint256,bytes32)\":{\"params\":{\"_disputeId\":\"The id of the dispute being voted on\",\"_numberOfVotes\":\"The amount of votes being cast\"},\"returns\":{\"_commitment\":\"The commitment computed from the provided data and the user's address\"}},\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"finalizeRequest(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request being finalized\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"oracle()\":{\"returns\":{\"_oracle\":\"The address of the oracle\"}},\"resolveDispute(bytes32)\":{\"details\":\"Only callable by the Oracle\",\"params\":{\"_disputeId\":\"The id of the dispute being resolved\"}},\"revealVote(bytes32,bytes32,uint256,bytes32)\":{\"details\":\"The user must have previously approved the module to transfer the tokens\",\"params\":{\"_disputeId\":\"The id of the dispute being voted on\",\"_numberOfVotes\":\"The amount of votes being revealed\",\"_requestId\":\"The id of the request being disputed\",\"_salt\":\"The salt used to compute the commitment\"}},\"setupRequest(bytes32,bytes)\":{\"params\":{\"_data\":\"The data of the request\",\"_requestId\":\"The ID of the request\"}},\"startResolution(bytes32)\":{\"details\":\"Only callable by the Oracle\",\"params\":{\"_disputeId\":\"The id of the dispute to start resolution of\"}}},\"stateVariables\":{\"escalations\":{\"params\":{\"_disputeId\":\"The id of the dispute\"},\"returns\":{\"startTime\":\"The timestamp at which the dispute was escalated\",\"totalVotes\":\"The total amount of votes cast for the dispute\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}],\"PrivateERC20ResolutionModule_AlreadyResolved()\":[{\"notice\":\"Thrown when trying to resolve a dispute that is already resolved\"}],\"PrivateERC20ResolutionModule_CommittingPhaseOver()\":[{\"notice\":\"Thrown when trying to commit a vote after the committing deadline\"}],\"PrivateERC20ResolutionModule_DisputeNotEscalated()\":[{\"notice\":\"Thrown when the dispute has not been escalated\"}],\"PrivateERC20ResolutionModule_EmptyCommitment()\":[{\"notice\":\"Thrown when trying to commit an empty commitment\"}],\"PrivateERC20ResolutionModule_NonExistentDispute()\":[{\"notice\":\"Thrown when trying to resolve a dispute that does not exist\"}],\"PrivateERC20ResolutionModule_OnGoingCommittingPhase()\":[{\"notice\":\"Thrown when trying to resolve a dispute during the committing phase\"}],\"PrivateERC20ResolutionModule_OnGoingRevealingPhase()\":[{\"notice\":\"Thrown when trying to resolve a dispute during the revealing phase\"}],\"PrivateERC20ResolutionModule_RevealingPhaseOver()\":[{\"notice\":\"Thrown when trying to reveal a vote after the revealing deadline\"}],\"PrivateERC20ResolutionModule_WrongRevealData()\":[{\"notice\":\"Thrown when trying to reveal a vote with data that does not match the stored commitment\"}]},\"events\":{\"CommittingPhaseStarted(uint256,bytes32)\":{\"notice\":\"The phase of committing votes has started\"},\"DisputeResolved(bytes32,bytes32,uint8)\":{\"notice\":\"Emitted when a dispute has been resolved\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"},\"ResolutionStarted(bytes32,bytes32)\":{\"notice\":\"Emitted when a resolution is started\"},\"VoteCommitted(address,bytes32,bytes32)\":{\"notice\":\"A commitment has been provided by a voter\"},\"VoteRevealed(address,bytes32,uint256)\":{\"notice\":\"A vote has been revealed by a voter providing the salt used to compute the commitment\"}},\"kind\":\"user\",\"methods\":{\"commitVote(bytes32,bytes32,bytes32)\":{\"notice\":\"Stores a commitment for a vote cast by a voter\"},\"computeCommitment(bytes32,uint256,bytes32)\":{\"notice\":\"Computes a valid commitment for the revealing phase\"},\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"escalations(bytes32)\":{\"notice\":\"Returns the escalation data for a dispute\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes a given request and executes any additional logic set by the chosen modules\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"oracle()\":{\"notice\":\"Returns the address of the oracle\"},\"requestData(bytes32)\":{\"notice\":\"Returns the data of the request associated with the provided id\"},\"resolveDispute(bytes32)\":{\"notice\":\"Resolves a dispute by tallying the votes and executing the winning outcome\"},\"revealVote(bytes32,bytes32,uint256,bytes32)\":{\"notice\":\"Reveals a vote cast by a voter\"},\"setupRequest(bytes32,bytes)\":{\"notice\":\"Stores the request data and runs module-specific hooks\"},\"startResolution(bytes32)\":{\"notice\":\"Starts the committing phase for a dispute\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/modules/resolution/PrivateERC20ResolutionModule.sol\":\"PrivateERC20ResolutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol\":{\"keccak256\":\"0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41\",\"dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol\":{\"keccak256\":\"0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f\",\"dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol\":{\"keccak256\":\"0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823\",\"dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol\":{\"keccak256\":\"0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d\",\"dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol\":{\"keccak256\":\"0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e\",\"dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol\":{\"keccak256\":\"0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d\",\"dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol\":{\"keccak256\":\"0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67\",\"dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol\":{\"keccak256\":\"0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf\",\"dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"solidity/contracts/modules/resolution/PrivateERC20ResolutionModule.sol\":{\"keccak256\":\"0xec08e6d38fc2949812cd47ab5029251717c3cc0b988f001dc17b95b6221949c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2215ac3be1a1839e59092d4a4a3d6b04798249037d8b7869e90e5b88e78ad12\",\"dweb:/ipfs/Qmbajg3oFSPoHTYzGbkmGSeESdzpgGKKcXZy5bzwkGggBn\"]},\"solidity/interfaces/extensions/IAccountingExtension.sol\":{\"keccak256\":\"0x31b990f92e67ce2b480ca97fcc54d44dddaa82fa60259439d8556bfbb7963d0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23e6ef2026bf40ef58f625b7377c70e4988902ae14df333e9be35129a57a87f0\",\"dweb:/ipfs/QmW1RfXvujkVHqXazdeTKshba9rX6kzSCRfZKBwLi38Ue5\"]},\"solidity/interfaces/modules/resolution/IPrivateERC20ResolutionModule.sol\":{\"keccak256\":\"0x1a036cb7ecca11ab379d89458b0e7ed50a8763b17ef9e98e2ec538e3058fdebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa1a1db2ae16549fee7fb02fe26a60dbedde4903f056f95d44e454b1cec2f48e\",\"dweb:/ipfs/QmSKMxPAASdhLz8DSCgK8rZgeMdmyVfb5kZvbps5xggoy1\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract IOracle",
              "name": "_oracle",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_AlreadyResolved"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_CommittingPhaseOver"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_DisputeNotEscalated"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_EmptyCommitment"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_NonExistentDispute"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_OnGoingCommittingPhase"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_OnGoingRevealingPhase"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_RevealingPhaseOver"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "PrivateERC20ResolutionModule_WrongRevealData"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_startTime",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "CommittingPhaseStarted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "_status",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "DisputeResolved",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "RequestFinalized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ResolutionStarted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_voter",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "_commitment",
              "type": "bytes32",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "VoteCommitted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_voter",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_numberOfVotes",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "VoteRevealed",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "ORACLE",
          "outputs": [
            {
              "internalType": "contract IOracle",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "_commitment",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "commitVote"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "_numberOfVotes",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "_salt",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "computeCommitment",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "_commitment",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct IPrivateERC20ResolutionModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "contract IAccountingExtension",
                  "name": "accountingExtension",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "votingToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minVotesForQuorum",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "committingTimeWindow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "revealingTimeWindow",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "escalations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "startTime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalVotes",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [],
          "stateMutability": "pure",
          "type": "function",
          "name": "moduleName",
          "outputs": [
            {
              "internalType": "string",
              "name": "_moduleName",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "oracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "_oracle",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "requestData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "_requestData",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "resolveDispute"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "_numberOfVotes",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "_salt",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "revealVote"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setupRequest"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "startResolution"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "commitVote(bytes32,bytes32,bytes32)": {
            "details": "Committing multiple times and overwriting a previous commitment is allowed",
            "params": {
              "_commitment": "The commitment computed from the provided data and the user's address",
              "_disputeId": "The id of the dispute being voted on",
              "_requestId": "The id of the request being disputed"
            }
          },
          "computeCommitment(bytes32,uint256,bytes32)": {
            "params": {
              "_disputeId": "The id of the dispute being voted on",
              "_numberOfVotes": "The amount of votes being cast"
            },
            "returns": {
              "_commitment": "The commitment computed from the provided data and the user's address"
            }
          },
          "decodeRequestData(bytes32)": {
            "params": {
              "_requestId": "The ID of the request"
            },
            "returns": {
              "_params": "The struct containing the parameters for the request"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "params": {
              "_finalizer": "The address that initiated the finalization",
              "_requestId": "The ID of the request being finalized"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "oracle()": {
            "returns": {
              "_oracle": "The address of the oracle"
            }
          },
          "resolveDispute(bytes32)": {
            "details": "Only callable by the Oracle",
            "params": {
              "_disputeId": "The id of the dispute being resolved"
            }
          },
          "revealVote(bytes32,bytes32,uint256,bytes32)": {
            "details": "The user must have previously approved the module to transfer the tokens",
            "params": {
              "_disputeId": "The id of the dispute being voted on",
              "_numberOfVotes": "The amount of votes being revealed",
              "_requestId": "The id of the request being disputed",
              "_salt": "The salt used to compute the commitment"
            }
          },
          "setupRequest(bytes32,bytes)": {
            "params": {
              "_data": "The data of the request",
              "_requestId": "The ID of the request"
            }
          },
          "startResolution(bytes32)": {
            "details": "Only callable by the Oracle",
            "params": {
              "_disputeId": "The id of the dispute to start resolution of"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "commitVote(bytes32,bytes32,bytes32)": {
            "notice": "Stores a commitment for a vote cast by a voter"
          },
          "computeCommitment(bytes32,uint256,bytes32)": {
            "notice": "Computes a valid commitment for the revealing phase"
          },
          "decodeRequestData(bytes32)": {
            "notice": "Returns the decoded data for a request"
          },
          "escalations(bytes32)": {
            "notice": "Returns the escalation data for a dispute"
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes a given request and executes any additional logic set by the chosen modules"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "oracle()": {
            "notice": "Returns the address of the oracle"
          },
          "requestData(bytes32)": {
            "notice": "Returns the data of the request associated with the provided id"
          },
          "resolveDispute(bytes32)": {
            "notice": "Resolves a dispute by tallying the votes and executing the winning outcome"
          },
          "revealVote(bytes32,bytes32,uint256,bytes32)": {
            "notice": "Reveals a vote cast by a voter"
          },
          "setupRequest(bytes32,bytes)": {
            "notice": "Stores the request data and runs module-specific hooks"
          },
          "startResolution(bytes32)": {
            "notice": "Starts the committing phase for a dispute"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@defi-wonderland/=node_modules/@defi-wonderland/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/ds-test/src/",
        "forge-std/=node_modules/forge-std/src/",
        "solmate/=node_modules/solmate/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/contracts/modules/resolution/PrivateERC20ResolutionModule.sol": "PrivateERC20ResolutionModule"
      },
      "libraries": {}
    },
    "sources": {
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol": {
        "keccak256": "0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf",
        "urls": [
          "bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41",
          "dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol": {
        "keccak256": "0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05",
        "urls": [
          "bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f",
          "dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol": {
        "keccak256": "0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf",
        "urls": [
          "bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823",
          "dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol": {
        "keccak256": "0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4",
        "urls": [
          "bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d",
          "dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol": {
        "keccak256": "0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e",
        "urls": [
          "bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e",
          "dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol": {
        "keccak256": "0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032",
        "urls": [
          "bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d",
          "dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol": {
        "keccak256": "0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6",
        "urls": [
          "bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67",
          "dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol": {
        "keccak256": "0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b",
        "urls": [
          "bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf",
          "dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305",
        "urls": [
          "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5",
          "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
        "keccak256": "0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a",
        "urls": [
          "bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a",
          "dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
        "keccak256": "0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1",
        "urls": [
          "bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68",
          "dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/Address.sol": {
        "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa",
        "urls": [
          "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931",
          "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol": {
        "keccak256": "0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514",
        "urls": [
          "bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df",
          "dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW"
        ],
        "license": "MIT"
      },
      "solidity/contracts/modules/resolution/PrivateERC20ResolutionModule.sol": {
        "keccak256": "0xec08e6d38fc2949812cd47ab5029251717c3cc0b988f001dc17b95b6221949c2",
        "urls": [
          "bzz-raw://e2215ac3be1a1839e59092d4a4a3d6b04798249037d8b7869e90e5b88e78ad12",
          "dweb:/ipfs/Qmbajg3oFSPoHTYzGbkmGSeESdzpgGKKcXZy5bzwkGggBn"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/extensions/IAccountingExtension.sol": {
        "keccak256": "0x31b990f92e67ce2b480ca97fcc54d44dddaa82fa60259439d8556bfbb7963d0e",
        "urls": [
          "bzz-raw://23e6ef2026bf40ef58f625b7377c70e4988902ae14df333e9be35129a57a87f0",
          "dweb:/ipfs/QmW1RfXvujkVHqXazdeTKshba9rX6kzSCRfZKBwLi38Ue5"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/resolution/IPrivateERC20ResolutionModule.sol": {
        "keccak256": "0x1a036cb7ecca11ab379d89458b0e7ed50a8763b17ef9e98e2ec538e3058fdebe",
        "urls": [
          "bzz-raw://aa1a1db2ae16549fee7fb02fe26a60dbedde4903f056f95d44e454b1cec2f48e",
          "dweb:/ipfs/QmSKMxPAASdhLz8DSCgK8rZgeMdmyVfb5kZvbps5xggoy1"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/modules/resolution/PrivateERC20ResolutionModule.sol",
    "id": 40926,
    "exportedSymbols": {
      "EnumerableSet": [
        5377
      ],
      "IERC20": [
        2822
      ],
      "IModule": [
        1782
      ],
      "IOracle": [
        2282
      ],
      "IPrivateERC20ResolutionModule": [
        43987
      ],
      "Module": [
        98
      ],
      "PrivateERC20ResolutionModule": [
        40925
      ],
      "SafeERC20": [
        3234
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:6430:53",
    "nodes": [
      {
        "id": 40349,
        "nodeType": "PragmaDirective",
        "src": "32:24:53",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 40351,
        "nodeType": "ImportDirective",
        "src": "104:70:53",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40926,
        "sourceUnit": 2823,
        "symbolAliases": [
          {
            "foreign": {
              "id": 40350,
              "name": "IERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2822,
              "src": "112:6:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40353,
        "nodeType": "ImportDirective",
        "src": "175:82:53",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40926,
        "sourceUnit": 3235,
        "symbolAliases": [
          {
            "foreign": {
              "id": 40352,
              "name": "SafeERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 3234,
              "src": "183:9:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40355,
        "nodeType": "ImportDirective",
        "src": "258:86:53",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
        "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40926,
        "sourceUnit": 5378,
        "symbolAliases": [
          {
            "foreign": {
              "id": 40354,
              "name": "EnumerableSet",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 5377,
              "src": "266:13:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40358,
        "nodeType": "ImportDirective",
        "src": "392:102:53",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40926,
        "sourceUnit": 99,
        "symbolAliases": [
          {
            "foreign": {
              "id": 40356,
              "name": "Module",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 98,
              "src": "400:6:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 40357,
              "name": "IModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1782,
              "src": "408:7:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40360,
        "nodeType": "ImportDirective",
        "src": "495:96:53",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40926,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 40359,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "503:7:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40362,
        "nodeType": "ImportDirective",
        "src": "593:119:53",
        "nodes": [],
        "absolutePath": "solidity/interfaces/modules/resolution/IPrivateERC20ResolutionModule.sol",
        "file": "../../../interfaces/modules/resolution/IPrivateERC20ResolutionModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40926,
        "sourceUnit": 43988,
        "symbolAliases": [
          {
            "foreign": {
              "id": 40361,
              "name": "IPrivateERC20ResolutionModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 43987,
              "src": "601:29:53",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40925,
        "nodeType": "ContractDefinition",
        "src": "714:5747:53",
        "nodes": [
          {
            "id": 40370,
            "nodeType": "UsingForDirective",
            "src": "797:27:53",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 40367,
              "name": "SafeERC20",
              "nameLocations": [
                "803:9:53"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3234,
              "src": "803:9:53"
            },
            "typeName": {
              "id": 40369,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 40368,
                "name": "IERC20",
                "nameLocations": [
                  "817:6:53"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2822,
                "src": "817:6:53"
              },
              "referencedDeclaration": 2822,
              "src": "817:6:53",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$2822",
                "typeString": "contract IERC20"
              }
            }
          },
          {
            "id": 40374,
            "nodeType": "UsingForDirective",
            "src": "827:49:53",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 40371,
              "name": "EnumerableSet",
              "nameLocations": [
                "833:13:53"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5377,
              "src": "833:13:53"
            },
            "typeName": {
              "id": 40373,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 40372,
                "name": "EnumerableSet.AddressSet",
                "nameLocations": [
                  "851:13:53",
                  "865:10:53"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5090,
                "src": "851:24:53"
              },
              "referencedDeclaration": 5090,
              "src": "851:24:53",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AddressSet_$5090_storage_ptr",
                "typeString": "struct EnumerableSet.AddressSet"
              }
            }
          },
          {
            "id": 40380,
            "nodeType": "VariableDeclaration",
            "src": "928:72:53",
            "nodes": [],
            "baseFunctions": [
              43931
            ],
            "constant": false,
            "documentation": {
              "id": 40375,
              "nodeType": "StructuredDocumentation",
              "src": "880:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "4cf3ad6a",
            "mutability": "mutable",
            "name": "escalations",
            "nameLocation": "989:11:53",
            "scope": 40925,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
              "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation)"
            },
            "typeName": {
              "id": 40379,
              "keyName": "_disputeId",
              "keyNameLocation": "944:10:53",
              "keyType": {
                "id": 40376,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "936:7:53",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "928:53:53",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
                "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation)"
              },
              "valueName": "_escalation",
              "valueNameLocation": "969:11:53",
              "valueType": {
                "id": 40378,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 40377,
                  "name": "Escalation",
                  "nameLocations": [
                    "958:10:53"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 43916,
                  "src": "958:10:53"
                },
                "referencedDeclaration": 43916,
                "src": "958:10:53",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Escalation_$43916_storage_ptr",
                  "typeString": "struct IPrivateERC20ResolutionModule.Escalation"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 40388,
            "nodeType": "VariableDeclaration",
            "src": "1072:88:53",
            "nodes": [],
            "constant": false,
            "documentation": {
              "id": 40381,
              "nodeType": "StructuredDocumentation",
              "src": "1004:65:53",
              "text": " @notice The data of the voters for a given dispute"
            },
            "mutability": "mutable",
            "name": "_votersData",
            "nameLocation": "1149:11:53",
            "scope": 40925,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$_$",
              "typeString": "mapping(bytes32 => mapping(address => struct IPrivateERC20ResolutionModule.VoterData))"
            },
            "typeName": {
              "id": 40387,
              "keyName": "_disputeId",
              "keyNameLocation": "1088:10:53",
              "keyType": {
                "id": 40382,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1080:7:53",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1072:67:53",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$_$",
                "typeString": "mapping(bytes32 => mapping(address => struct IPrivateERC20ResolutionModule.VoterData))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 40386,
                "keyName": "_voter",
                "keyNameLocation": "1118:6:53",
                "keyType": {
                  "id": 40383,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1110:7:53",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1102:36:53",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$",
                  "typeString": "mapping(address => struct IPrivateERC20ResolutionModule.VoterData)"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 40385,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 40384,
                    "name": "VoterData",
                    "nameLocations": [
                      "1128:9:53"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 43921,
                    "src": "1128:9:53"
                  },
                  "referencedDeclaration": 43921,
                  "src": "1128:9:53",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VoterData_$43921_storage_ptr",
                    "typeString": "struct IPrivateERC20ResolutionModule.VoterData"
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "id": 40394,
            "nodeType": "VariableDeclaration",
            "src": "1230:83:53",
            "nodes": [],
            "constant": false,
            "documentation": {
              "id": 40389,
              "nodeType": "StructuredDocumentation",
              "src": "1164:63:53",
              "text": " @notice The voters addresses for a given dispute"
            },
            "mutability": "mutable",
            "name": "_voters",
            "nameLocation": "1306:7:53",
            "scope": 40925,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
              "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)"
            },
            "typeName": {
              "id": 40393,
              "keyName": "_disputeId",
              "keyNameLocation": "1246:10:53",
              "keyType": {
                "id": 40390,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1238:7:53",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1230:66:53",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)"
              },
              "valueName": "_votersSet",
              "valueNameLocation": "1285:10:53",
              "valueType": {
                "id": 40392,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 40391,
                  "name": "EnumerableSet.AddressSet",
                  "nameLocations": [
                    "1260:13:53",
                    "1274:10:53"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5090,
                  "src": "1260:24:53"
                },
                "referencedDeclaration": 5090,
                "src": "1260:24:53",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$5090_storage_ptr",
                  "typeString": "struct EnumerableSet.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "id": 40404,
            "nodeType": "FunctionDefinition",
            "src": "1318:47:53",
            "nodes": [],
            "body": {
              "id": 40403,
              "nodeType": "Block",
              "src": "1363:2:53",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 40400,
                    "name": "_oracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 40397,
                    "src": "1354:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  }
                ],
                "id": 40401,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 40399,
                  "name": "Module",
                  "nameLocations": [
                    "1347:6:53"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "1347:6:53"
                },
                "nodeType": "ModifierInvocation",
                "src": "1347:15:53"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 40398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40397,
                  "mutability": "mutable",
                  "name": "_oracle",
                  "nameLocation": "1338:7:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40404,
                  "src": "1330:15:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracle_$2282",
                    "typeString": "contract IOracle"
                  },
                  "typeName": {
                    "id": 40396,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40395,
                      "name": "IOracle",
                      "nameLocations": [
                        "1330:7:53"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2282,
                      "src": "1330:7:53"
                    },
                    "referencedDeclaration": 2282,
                    "src": "1330:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1329:17:53"
            },
            "returnParameters": {
              "id": 40402,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1363:0:53"
            },
            "scope": 40925,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 40413,
            "nodeType": "FunctionDefinition",
            "src": "1395:120:53",
            "nodes": [],
            "body": {
              "id": 40412,
              "nodeType": "Block",
              "src": "1467:48:53",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "hexValue": "5072697661746545524332305265736f6c7574696f6e4d6f64756c65",
                    "id": 40410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1480:30:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_dc9f4515ebc86c1f2f8100c878a108828cea37ae568437b16ee1467ec02f11df",
                      "typeString": "literal_string \"PrivateERC20ResolutionModule\""
                    },
                    "value": "PrivateERC20ResolutionModule"
                  },
                  "functionReturnParameters": 40409,
                  "id": 40411,
                  "nodeType": "Return",
                  "src": "1473:37:53"
                }
              ]
            },
            "baseFunctions": [
              1781
            ],
            "documentation": {
              "id": 40405,
              "nodeType": "StructuredDocumentation",
              "src": "1369:23:53",
              "text": "@inheritdoc IModule"
            },
            "functionSelector": "93f0899a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "moduleName",
            "nameLocation": "1404:10:53",
            "parameters": {
              "id": 40406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1414:2:53"
            },
            "returnParameters": {
              "id": 40409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40408,
                  "mutability": "mutable",
                  "name": "_moduleName",
                  "nameLocation": "1454:11:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40413,
                  "src": "1440:25:53",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 40407,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1440:6:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1439:27:53"
            },
            "scope": 40925,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 40434,
            "nodeType": "FunctionDefinition",
            "src": "1567:179:53",
            "nodes": [],
            "body": {
              "id": 40433,
              "nodeType": "Block",
              "src": "1669:77:53",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 40431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 40422,
                      "name": "_params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40420,
                      "src": "1675:7:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 40425,
                            "name": "requestData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "1696:11:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 40427,
                          "indexExpression": {
                            "id": 40426,
                            "name": "_requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40416,
                            "src": "1708:10:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1696:23:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 40428,
                              "name": "RequestParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43911,
                              "src": "1722:17:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43911_storage_ptr_$",
                                "typeString": "type(struct IPrivateERC20ResolutionModule.RequestParameters storage pointer)"
                              }
                            }
                          ],
                          "id": 40429,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1721:19:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43911_storage_ptr_$",
                            "typeString": "type(struct IPrivateERC20ResolutionModule.RequestParameters storage pointer)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          },
                          {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43911_storage_ptr_$",
                            "typeString": "type(struct IPrivateERC20ResolutionModule.RequestParameters storage pointer)"
                          }
                        ],
                        "expression": {
                          "id": 40423,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "1685:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 40424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1689:6:53",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "1685:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1685:56:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                      }
                    },
                    "src": "1675:66:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                      "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "id": 40432,
                  "nodeType": "ExpressionStatement",
                  "src": "1675:66:53"
                }
              ]
            },
            "baseFunctions": [
              43974
            ],
            "documentation": {
              "id": 40414,
              "nodeType": "StructuredDocumentation",
              "src": "1519:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "4d610a46",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "1576:17:53",
            "parameters": {
              "id": 40417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40416,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1602:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40434,
                  "src": "1594:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40415,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1594:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1593:20:53"
            },
            "returnParameters": {
              "id": 40421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40420,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "1660:7:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40434,
                  "src": "1635:32:53",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                    "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 40419,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40418,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "1635:17:53"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43911,
                      "src": "1635:17:53"
                    },
                    "referencedDeclaration": 43911,
                    "src": "1635:17:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43911_storage_ptr",
                      "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1634:34:53"
            },
            "scope": 40925,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 40457,
            "nodeType": "FunctionDefinition",
            "src": "1798:189:53",
            "nodes": [],
            "body": {
              "id": 40456,
              "nodeType": "Block",
              "src": "1863:124:53",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 40448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 40442,
                          "name": "escalations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40380,
                          "src": "1869:11:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
                            "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation storage ref)"
                          }
                        },
                        "id": 40444,
                        "indexExpression": {
                          "id": 40443,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40437,
                          "src": "1881:10:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1869:23:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43916_storage",
                          "typeString": "struct IPrivateERC20ResolutionModule.Escalation storage ref"
                        }
                      },
                      "id": 40445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "1893:9:53",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43913,
                      "src": "1869:33:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 40446,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "1905:5:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1911:9:53",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "1905:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1869:51:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 40449,
                  "nodeType": "ExpressionStatement",
                  "src": "1869:51:53"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40451,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "1954:5:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 40452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1960:9:53",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "1954:15:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 40453,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40437,
                        "src": "1971:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40450,
                      "name": "CommittingPhaseStarted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 43871,
                      "src": "1931:22:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint256,bytes32)"
                      }
                    },
                    "id": 40454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1931:51:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40455,
                  "nodeType": "EmitStatement",
                  "src": "1926:56:53"
                }
              ]
            },
            "baseFunctions": [
              43937
            ],
            "documentation": {
              "id": 40435,
              "nodeType": "StructuredDocumentation",
              "src": "1750:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "d96dd0e7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 40440,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40439,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1852:10:53"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1852:10:53"
                },
                "nodeType": "ModifierInvocation",
                "src": "1852:10:53"
              }
            ],
            "name": "startResolution",
            "nameLocation": "1807:15:53",
            "parameters": {
              "id": 40438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40437,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "1831:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40457,
                  "src": "1823:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40436,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1823:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1822:20:53"
            },
            "returnParameters": {
              "id": 40441,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1863:0:53"
            },
            "scope": 40925,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 40561,
            "nodeType": "FunctionDefinition",
            "src": "2039:1012:53",
            "nodes": [],
            "body": {
              "id": 40560,
              "nodeType": "Block",
              "src": "2127:924:53",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    40471
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40471,
                      "mutability": "mutable",
                      "name": "_dispute",
                      "nameLocation": "2156:8:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40560,
                      "src": "2133:31:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                        "typeString": "struct IOracle.Dispute"
                      },
                      "typeName": {
                        "id": 40470,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40469,
                          "name": "IOracle.Dispute",
                          "nameLocations": [
                            "2133:7:53",
                            "2141:7:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2045,
                          "src": "2133:15:53"
                        },
                        "referencedDeclaration": 2045,
                        "src": "2133:15:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                          "typeString": "struct IOracle.Dispute"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40476,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40474,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40462,
                        "src": "2185:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 40472,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "2167:6:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 40473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2174:10:53",
                      "memberName": "getDispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2162,
                      "src": "2167:17:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Dispute_$2045_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Dispute memory)"
                      }
                    },
                    "id": 40475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2167:29:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                      "typeString": "struct IOracle.Dispute memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2133:63:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40477,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40471,
                        "src": "2206:8:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40478,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2215:9:53",
                      "memberName": "createdAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2033,
                      "src": "2206:18:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40479,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2228:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2206:23:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40484,
                  "nodeType": "IfStatement",
                  "src": "2202:85:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40481,
                        "name": "PrivateERC20ResolutionModule_NonExistentDispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43889,
                        "src": "2238:47:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2238:49:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40483,
                    "nodeType": "RevertStatement",
                    "src": "2231:56:53"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                      "typeString": "enum IOracle.DisputeStatus"
                    },
                    "id": 40490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40485,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40471,
                        "src": "2297:8:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40486,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2306:6:53",
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2044,
                      "src": "2297:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 40487,
                          "name": "IOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2282,
                          "src": "2316:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                            "typeString": "type(contract IOracle)"
                          }
                        },
                        "id": 40488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2324:13:53",
                        "memberName": "DisputeStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2052,
                        "src": "2316:21:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                          "typeString": "type(enum IOracle.DisputeStatus)"
                        }
                      },
                      "id": 40489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2338:4:53",
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2046,
                      "src": "2316:26:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "src": "2297:45:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40494,
                  "nodeType": "IfStatement",
                  "src": "2293:104:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40491,
                        "name": "PrivateERC20ResolutionModule_AlreadyResolved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43898,
                        "src": "2351:44:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2351:46:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40493,
                    "nodeType": "RevertStatement",
                    "src": "2344:53:53"
                  }
                },
                {
                  "assignments": [
                    40496
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40496,
                      "mutability": "mutable",
                      "name": "_startTime",
                      "nameLocation": "2412:10:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40560,
                      "src": "2404:18:53",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40495,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2404:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40501,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 40497,
                        "name": "escalations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40380,
                        "src": "2425:11:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
                          "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation storage ref)"
                        }
                      },
                      "id": 40499,
                      "indexExpression": {
                        "id": 40498,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40462,
                        "src": "2437:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2425:23:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Escalation_$43916_storage",
                        "typeString": "struct IPrivateERC20ResolutionModule.Escalation storage ref"
                      }
                    },
                    "id": 40500,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "2449:9:53",
                    "memberName": "startTime",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 43913,
                    "src": "2425:33:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2404:54:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40502,
                      "name": "_startTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40496,
                      "src": "2468:10:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2482:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2468:15:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40508,
                  "nodeType": "IfStatement",
                  "src": "2464:78:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40505,
                        "name": "PrivateERC20ResolutionModule_DisputeNotEscalated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43874,
                        "src": "2492:48:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40506,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2492:50:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40507,
                    "nodeType": "RevertStatement",
                    "src": "2485:57:53"
                  }
                },
                {
                  "assignments": [
                    40511
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40511,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "2574:7:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40560,
                      "src": "2549:32:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 40510,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40509,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "2549:17:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43911,
                          "src": "2549:17:53"
                        },
                        "referencedDeclaration": 43911,
                        "src": "2549:17:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43911_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40515,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40513,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40460,
                        "src": "2602:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40512,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40434,
                      "src": "2584:17:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43911_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IPrivateERC20ResolutionModule.RequestParameters memory)"
                      }
                    },
                    "id": 40514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2584:29:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                      "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2549:64:53"
                },
                {
                  "assignments": [
                    40517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40517,
                      "mutability": "mutable",
                      "name": "_committingDeadline",
                      "nameLocation": "2627:19:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40560,
                      "src": "2619:27:53",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40516,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2619:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40522,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40518,
                      "name": "_startTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40496,
                      "src": "2649:10:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "expression": {
                        "id": 40519,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40511,
                        "src": "2662:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                        }
                      },
                      "id": 40520,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2670:20:53",
                      "memberName": "committingTimeWindow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43908,
                      "src": "2662:28:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2649:41:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2619:71:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40523,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "2700:5:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2706:9:53",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "2700:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "id": 40525,
                      "name": "_committingDeadline",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40517,
                      "src": "2719:19:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2700:38:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40530,
                  "nodeType": "IfStatement",
                  "src": "2696:101:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40527,
                        "name": "PrivateERC20ResolutionModule_CommittingPhaseOver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43877,
                        "src": "2747:48:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40528,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2747:50:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40529,
                    "nodeType": "RevertStatement",
                    "src": "2740:57:53"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 40536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40531,
                      "name": "_commitment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40464,
                      "src": "2808:11:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "",
                          "id": 40534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2831:2:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          }
                        ],
                        "id": 40533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2823:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 40532,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2823:7:53",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 40535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2823:11:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2808:26:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40540,
                  "nodeType": "IfStatement",
                  "src": "2804:85:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40537,
                        "name": "PrivateERC20ResolutionModule_EmptyCommitment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43892,
                        "src": "2843:44:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2843:46:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40539,
                    "nodeType": "RevertStatement",
                    "src": "2836:53:53"
                  }
                },
                {
                  "expression": {
                    "id": 40551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 40541,
                          "name": "_votersData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40388,
                          "src": "2895:11:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(address => struct IPrivateERC20ResolutionModule.VoterData storage ref))"
                          }
                        },
                        "id": 40545,
                        "indexExpression": {
                          "id": 40542,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40462,
                          "src": "2907:10:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2895:23:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$",
                          "typeString": "mapping(address => struct IPrivateERC20ResolutionModule.VoterData storage ref)"
                        }
                      },
                      "id": 40546,
                      "indexExpression": {
                        "expression": {
                          "id": 40543,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2919:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2923:6:53",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2919:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2895:35:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoterData_$43921_storage",
                        "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 40548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2956:1:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "id": 40549,
                          "name": "_commitment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40464,
                          "src": "2971:11:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 40547,
                        "name": "VoterData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43921,
                        "src": "2933:9:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_VoterData_$43921_storage_ptr_$",
                          "typeString": "type(struct IPrivateERC20ResolutionModule.VoterData storage pointer)"
                        }
                      },
                      "id": 40550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [
                        "2944:10:53",
                        "2959:10:53"
                      ],
                      "names": [
                        "numOfVotes",
                        "commitment"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "2933:51:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoterData_$43921_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.VoterData memory"
                      }
                    },
                    "src": "2895:89:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VoterData_$43921_storage",
                      "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage ref"
                    }
                  },
                  "id": 40552,
                  "nodeType": "ExpressionStatement",
                  "src": "2895:89:53"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40554,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "3010:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3014:6:53",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "3010:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 40556,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40462,
                        "src": "3022:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 40557,
                        "name": "_commitment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40464,
                        "src": "3034:11:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40553,
                      "name": "VoteCommitted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 43855,
                      "src": "2996:13:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32)"
                      }
                    },
                    "id": 40558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2996:50:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40559,
                  "nodeType": "EmitStatement",
                  "src": "2991:55:53"
                }
              ]
            },
            "baseFunctions": [
              43947
            ],
            "documentation": {
              "id": 40458,
              "nodeType": "StructuredDocumentation",
              "src": "1991:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "ce5470d7",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitVote",
            "nameLocation": "2048:10:53",
            "parameters": {
              "id": 40465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40460,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "2067:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40561,
                  "src": "2059:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40459,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40462,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "2087:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40561,
                  "src": "2079:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40461,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2079:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40464,
                  "mutability": "mutable",
                  "name": "_commitment",
                  "nameLocation": "2107:11:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40561,
                  "src": "2099:19:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2099:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2058:61:53"
            },
            "returnParameters": {
              "id": 40466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2127:0:53"
            },
            "scope": 40925,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 40710,
            "nodeType": "FunctionDefinition",
            "src": "3103:1341:53",
            "nodes": [],
            "body": {
              "id": 40709,
              "nodeType": "Block",
              "src": "3209:1235:53",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    40575
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40575,
                      "mutability": "mutable",
                      "name": "_escalation",
                      "nameLocation": "3233:11:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40709,
                      "src": "3215:29:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.Escalation"
                      },
                      "typeName": {
                        "id": 40574,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40573,
                          "name": "Escalation",
                          "nameLocations": [
                            "3215:10:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43916,
                          "src": "3215:10:53"
                        },
                        "referencedDeclaration": 43916,
                        "src": "3215:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43916_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.Escalation"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40579,
                  "initialValue": {
                    "baseExpression": {
                      "id": 40576,
                      "name": "escalations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40380,
                      "src": "3247:11:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
                        "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation storage ref)"
                      }
                    },
                    "id": 40578,
                    "indexExpression": {
                      "id": 40577,
                      "name": "_disputeId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40566,
                      "src": "3259:10:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3247:23:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Escalation_$43916_storage",
                      "typeString": "struct IPrivateERC20ResolutionModule.Escalation storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3215:55:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40580,
                        "name": "_escalation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40575,
                        "src": "3280:11:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                        }
                      },
                      "id": 40581,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3292:9:53",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43913,
                      "src": "3280:21:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3305:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3280:26:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40587,
                  "nodeType": "IfStatement",
                  "src": "3276:89:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40584,
                        "name": "PrivateERC20ResolutionModule_DisputeNotEscalated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43874,
                        "src": "3315:48:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40585,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3315:50:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40586,
                    "nodeType": "RevertStatement",
                    "src": "3308:57:53"
                  }
                },
                {
                  "assignments": [
                    40590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40590,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "3397:7:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40709,
                      "src": "3372:32:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 40589,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40588,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "3372:17:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43911,
                          "src": "3372:17:53"
                        },
                        "referencedDeclaration": 43911,
                        "src": "3372:17:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43911_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40594,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40592,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40564,
                        "src": "3425:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40591,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40434,
                      "src": "3407:17:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43911_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IPrivateERC20ResolutionModule.RequestParameters memory)"
                      }
                    },
                    "id": 40593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3407:29:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                      "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3372:64:53"
                },
                {
                  "assignments": [
                    40596,
                    40598
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40596,
                      "mutability": "mutable",
                      "name": "_revealStartTime",
                      "nameLocation": "3451:16:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40709,
                      "src": "3443:24:53",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40595,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3443:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 40598,
                      "mutability": "mutable",
                      "name": "_revealEndTime",
                      "nameLocation": "3477:14:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40709,
                      "src": "3469:22:53",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40597,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3469:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40613,
                  "initialValue": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 40603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 40599,
                            "name": "_escalation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40575,
                            "src": "3503:11:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                              "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                            }
                          },
                          "id": 40600,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3515:9:53",
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 43913,
                          "src": "3503:21:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "expression": {
                            "id": 40601,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40590,
                            "src": "3527:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                              "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                            }
                          },
                          "id": 40602,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3535:20:53",
                          "memberName": "committingTimeWindow",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 43908,
                          "src": "3527:28:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3503:52:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 40611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 40604,
                              "name": "_escalation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40575,
                              "src": "3563:11:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                                "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                              }
                            },
                            "id": 40605,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3575:9:53",
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 43913,
                            "src": "3563:21:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "expression": {
                              "id": 40606,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40590,
                              "src": "3587:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                                "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                              }
                            },
                            "id": 40607,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3595:20:53",
                            "memberName": "committingTimeWindow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 43908,
                            "src": "3587:28:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3563:52:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "expression": {
                            "id": 40609,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40590,
                            "src": "3618:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                              "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                            }
                          },
                          "id": 40610,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3626:19:53",
                          "memberName": "revealingTimeWindow",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 43910,
                          "src": "3618:27:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3563:82:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 40612,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3495:156:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3442:209:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40617,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40614,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "3661:5:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3667:9:53",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "3661:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 40616,
                      "name": "_revealStartTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40596,
                      "src": "3680:16:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3661:35:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40621,
                  "nodeType": "IfStatement",
                  "src": "3657:101:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40618,
                        "name": "PrivateERC20ResolutionModule_OnGoingCommittingPhase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43883,
                        "src": "3705:51:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40619,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3705:53:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40620,
                    "nodeType": "RevertStatement",
                    "src": "3698:60:53"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40622,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "3768:5:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3774:9:53",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "3768:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 40624,
                      "name": "_revealEndTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40598,
                      "src": "3786:14:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3768:32:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40629,
                  "nodeType": "IfStatement",
                  "src": "3764:94:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40626,
                        "name": "PrivateERC20ResolutionModule_RevealingPhaseOver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43880,
                        "src": "3809:47:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3809:49:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40628,
                    "nodeType": "RevertStatement",
                    "src": "3802:56:53"
                  }
                },
                {
                  "assignments": [
                    40632
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40632,
                      "mutability": "mutable",
                      "name": "_voterData",
                      "nameLocation": "3883:10:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40709,
                      "src": "3865:28:53",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoterData_$43921_storage_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.VoterData"
                      },
                      "typeName": {
                        "id": 40631,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40630,
                          "name": "VoterData",
                          "nameLocations": [
                            "3865:9:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43921,
                          "src": "3865:9:53"
                        },
                        "referencedDeclaration": 43921,
                        "src": "3865:9:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VoterData_$43921_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.VoterData"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40639,
                  "initialValue": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 40633,
                        "name": "_votersData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40388,
                        "src": "3896:11:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(address => struct IPrivateERC20ResolutionModule.VoterData storage ref))"
                        }
                      },
                      "id": 40635,
                      "indexExpression": {
                        "id": 40634,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40566,
                        "src": "3908:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3896:23:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$",
                        "typeString": "mapping(address => struct IPrivateERC20ResolutionModule.VoterData storage ref)"
                      }
                    },
                    "id": 40638,
                    "indexExpression": {
                      "expression": {
                        "id": 40636,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "3920:3:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 40637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3924:6:53",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "3920:10:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3896:35:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VoterData_$43921_storage",
                      "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3865:66:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 40652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40640,
                        "name": "_voterData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40632,
                        "src": "3942:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VoterData_$43921_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage pointer"
                        }
                      },
                      "id": 40641,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3953:10:53",
                      "memberName": "commitment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43920,
                      "src": "3942:21:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 40645,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3988:3:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 40646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3992:6:53",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3988:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 40647,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40566,
                              "src": "4000:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 40648,
                              "name": "_numberOfVotes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40568,
                              "src": "4012:14:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 40649,
                              "name": "_salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40570,
                              "src": "4028:5:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 40643,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3977:3:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 40644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3981:6:53",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "3977:10:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 40650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3977:57:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 40642,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "3967:9:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 40651,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3967:68:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3942:93:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40657,
                  "nodeType": "IfStatement",
                  "src": "3938:167:53",
                  "trueBody": {
                    "id": 40656,
                    "nodeType": "Block",
                    "src": "4037:68:53",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 40653,
                            "name": "PrivateERC20ResolutionModule_WrongRevealData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43895,
                            "src": "4052:44:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 40654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4052:46:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40655,
                        "nodeType": "RevertStatement",
                        "src": "4045:53:53"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 40662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 40658,
                        "name": "_voterData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40632,
                        "src": "4111:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VoterData_$43921_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage pointer"
                        }
                      },
                      "id": 40660,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4122:10:53",
                      "memberName": "numOfVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43918,
                      "src": "4111:21:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 40661,
                      "name": "_numberOfVotes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40568,
                      "src": "4135:14:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4111:38:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 40663,
                  "nodeType": "ExpressionStatement",
                  "src": "4111:38:53"
                },
                {
                  "expression": {
                    "id": 40671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 40664,
                        "name": "_voterData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40632,
                        "src": "4155:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VoterData_$43921_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage pointer"
                        }
                      },
                      "id": 40666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4166:10:53",
                      "memberName": "commitment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43920,
                      "src": "4155:21:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "",
                          "id": 40669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4187:2:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          }
                        ],
                        "id": 40668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4179:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 40667,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4179:7:53",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 40670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4179:11:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "4155:35:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 40672,
                  "nodeType": "ExpressionStatement",
                  "src": "4155:35:53"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40677,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "4220:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40678,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4224:6:53",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "4220:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "baseExpression": {
                          "id": 40673,
                          "name": "_voters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40394,
                          "src": "4196:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                            "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"
                          }
                        },
                        "id": 40675,
                        "indexExpression": {
                          "id": 40674,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40566,
                          "src": "4204:10:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4196:19:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$5090_storage",
                          "typeString": "struct EnumerableSet.AddressSet storage ref"
                        }
                      },
                      "id": 40676,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4216:3:53",
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5117,
                      "src": "4196:23:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$5090_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$5090_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 40679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4196:35:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40680,
                  "nodeType": "ExpressionStatement",
                  "src": "4196:35:53"
                },
                {
                  "expression": {
                    "id": 40686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 40681,
                          "name": "escalations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40380,
                          "src": "4237:11:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
                            "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation storage ref)"
                          }
                        },
                        "id": 40683,
                        "indexExpression": {
                          "id": 40682,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40566,
                          "src": "4249:10:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4237:23:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43916_storage",
                          "typeString": "struct IPrivateERC20ResolutionModule.Escalation storage ref"
                        }
                      },
                      "id": 40684,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4261:10:53",
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43915,
                      "src": "4237:34:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 40685,
                      "name": "_numberOfVotes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40568,
                      "src": "4275:14:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4237:52:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 40687,
                  "nodeType": "ExpressionStatement",
                  "src": "4237:52:53"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40693,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "4333:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4337:6:53",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "4333:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 40697,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "4353:4:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PrivateERC20ResolutionModule_$40925",
                              "typeString": "contract PrivateERC20ResolutionModule"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PrivateERC20ResolutionModule_$40925",
                              "typeString": "contract PrivateERC20ResolutionModule"
                            }
                          ],
                          "id": 40696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4345:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 40695,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4345:7:53",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 40698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4345:13:53",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 40699,
                        "name": "_numberOfVotes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40568,
                        "src": "4360:14:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 40688,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40590,
                          "src": "4296:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                            "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                          }
                        },
                        "id": 40691,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4304:11:53",
                        "memberName": "votingToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43904,
                        "src": "4296:19:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2822",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 40692,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4316:16:53",
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2918,
                      "src": "4296:36:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2822_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2822_$",
                        "typeString": "function (contract IERC20,address,address,uint256)"
                      }
                    },
                    "id": 40700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4296:79:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40701,
                  "nodeType": "ExpressionStatement",
                  "src": "4296:79:53"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40703,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "4400:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4404:6:53",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "4400:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 40705,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40566,
                        "src": "4412:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 40706,
                        "name": "_numberOfVotes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40568,
                        "src": "4424:14:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 40702,
                      "name": "VoteRevealed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 43864,
                      "src": "4387:12:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256)"
                      }
                    },
                    "id": 40707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4387:52:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40708,
                  "nodeType": "EmitStatement",
                  "src": "4382:57:53"
                }
              ]
            },
            "baseFunctions": [
              43959
            ],
            "documentation": {
              "id": 40562,
              "nodeType": "StructuredDocumentation",
              "src": "3055:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "8748cb63",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "revealVote",
            "nameLocation": "3112:10:53",
            "parameters": {
              "id": 40571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40564,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "3131:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40710,
                  "src": "3123:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40563,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3123:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40566,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "3151:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40710,
                  "src": "3143:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3143:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40568,
                  "mutability": "mutable",
                  "name": "_numberOfVotes",
                  "nameLocation": "3171:14:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40710,
                  "src": "3163:22:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40567,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3163:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40570,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "3195:5:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40710,
                  "src": "3187:13:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40569,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3187:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3122:79:53"
            },
            "returnParameters": {
              "id": 40572,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3209:0:53"
            },
            "scope": 40925,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 40898,
            "nodeType": "FunctionDefinition",
            "src": "4496:1672:53",
            "nodes": [],
            "body": {
              "id": 40897,
              "nodeType": "Block",
              "src": "4560:1608:53",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    40722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40722,
                      "mutability": "mutable",
                      "name": "_dispute",
                      "nameLocation": "4589:8:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40897,
                      "src": "4566:31:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                        "typeString": "struct IOracle.Dispute"
                      },
                      "typeName": {
                        "id": 40721,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40720,
                          "name": "IOracle.Dispute",
                          "nameLocations": [
                            "4566:7:53",
                            "4574:7:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2045,
                          "src": "4566:15:53"
                        },
                        "referencedDeclaration": 2045,
                        "src": "4566:15:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                          "typeString": "struct IOracle.Dispute"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40727,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40725,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40713,
                        "src": "4618:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 40723,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "4600:6:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 40724,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4607:10:53",
                      "memberName": "getDispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2162,
                      "src": "4600:17:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Dispute_$2045_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Dispute memory)"
                      }
                    },
                    "id": 40726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4600:29:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                      "typeString": "struct IOracle.Dispute memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4566:63:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40728,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40722,
                        "src": "4639:8:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40729,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4648:9:53",
                      "memberName": "createdAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2033,
                      "src": "4639:18:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40730,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4661:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4639:23:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40735,
                  "nodeType": "IfStatement",
                  "src": "4635:85:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40732,
                        "name": "PrivateERC20ResolutionModule_NonExistentDispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43889,
                        "src": "4671:47:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4671:49:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40734,
                    "nodeType": "RevertStatement",
                    "src": "4664:56:53"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                      "typeString": "enum IOracle.DisputeStatus"
                    },
                    "id": 40741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40736,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40722,
                        "src": "4730:8:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40737,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4739:6:53",
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2044,
                      "src": "4730:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 40738,
                          "name": "IOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2282,
                          "src": "4749:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                            "typeString": "type(contract IOracle)"
                          }
                        },
                        "id": 40739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4757:13:53",
                        "memberName": "DisputeStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2052,
                        "src": "4749:21:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                          "typeString": "type(enum IOracle.DisputeStatus)"
                        }
                      },
                      "id": 40740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "4771:4:53",
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2046,
                      "src": "4749:26:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "src": "4730:45:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40745,
                  "nodeType": "IfStatement",
                  "src": "4726:104:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40742,
                        "name": "PrivateERC20ResolutionModule_AlreadyResolved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43898,
                        "src": "4784:44:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4784:46:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40744,
                    "nodeType": "RevertStatement",
                    "src": "4777:53:53"
                  }
                },
                {
                  "assignments": [
                    40748
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40748,
                      "mutability": "mutable",
                      "name": "_escalation",
                      "nameLocation": "4855:11:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40897,
                      "src": "4837:29:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.Escalation"
                      },
                      "typeName": {
                        "id": 40747,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40746,
                          "name": "Escalation",
                          "nameLocations": [
                            "4837:10:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43916,
                          "src": "4837:10:53"
                        },
                        "referencedDeclaration": 43916,
                        "src": "4837:10:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43916_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.Escalation"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40752,
                  "initialValue": {
                    "baseExpression": {
                      "id": 40749,
                      "name": "escalations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40380,
                      "src": "4869:11:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43916_storage_$",
                        "typeString": "mapping(bytes32 => struct IPrivateERC20ResolutionModule.Escalation storage ref)"
                      }
                    },
                    "id": 40751,
                    "indexExpression": {
                      "id": 40750,
                      "name": "_disputeId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40713,
                      "src": "4881:10:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4869:23:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Escalation_$43916_storage",
                      "typeString": "struct IPrivateERC20ResolutionModule.Escalation storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4837:55:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40753,
                        "name": "_escalation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40748,
                        "src": "4902:11:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                        }
                      },
                      "id": 40754,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4914:9:53",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43913,
                      "src": "4902:21:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4927:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4902:26:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40760,
                  "nodeType": "IfStatement",
                  "src": "4898:89:53",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40757,
                        "name": "PrivateERC20ResolutionModule_DisputeNotEscalated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43874,
                        "src": "4937:48:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4937:50:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40759,
                    "nodeType": "RevertStatement",
                    "src": "4930:57:53"
                  }
                },
                {
                  "assignments": [
                    40763
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40763,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "5019:7:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40897,
                      "src": "4994:32:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                        "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 40762,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40761,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "4994:17:53"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43911,
                          "src": "4994:17:53"
                        },
                        "referencedDeclaration": 43911,
                        "src": "4994:17:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43911_storage_ptr",
                          "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40768,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40765,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40722,
                          "src": "5047:8:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 40766,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5056:9:53",
                        "memberName": "requestId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2041,
                        "src": "5047:18:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40764,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40434,
                      "src": "5029:17:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43911_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IPrivateERC20ResolutionModule.RequestParameters memory)"
                      }
                    },
                    "id": 40767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5029:37:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                      "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4994:72:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40769,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "5077:5:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40770,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5083:9:53",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "5077:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 40775,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 40771,
                          "name": "_escalation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40748,
                          "src": "5095:11:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                            "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                          }
                        },
                        "id": 40772,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5107:9:53",
                        "memberName": "startTime",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43913,
                        "src": "5095:21:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "expression": {
                          "id": 40773,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40763,
                          "src": "5119:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                            "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                          }
                        },
                        "id": 40774,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5127:20:53",
                        "memberName": "committingTimeWindow",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43908,
                        "src": "5119:28:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5095:52:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5077:70:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40781,
                  "nodeType": "IfStatement",
                  "src": "5073:151:53",
                  "trueBody": {
                    "id": 40780,
                    "nodeType": "Block",
                    "src": "5149:75:53",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 40777,
                            "name": "PrivateERC20ResolutionModule_OnGoingCommittingPhase",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43883,
                            "src": "5164:51:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 40778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5164:53:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40779,
                        "nodeType": "RevertStatement",
                        "src": "5157:60:53"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40782,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "5233:5:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40783,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5239:9:53",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "5233:15:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 40791,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 40788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 40784,
                            "name": "_escalation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40748,
                            "src": "5251:11:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                              "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                            }
                          },
                          "id": 40785,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5263:9:53",
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 43913,
                          "src": "5251:21:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "expression": {
                            "id": 40786,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40763,
                            "src": "5275:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                              "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                            }
                          },
                          "id": 40787,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5283:20:53",
                          "memberName": "committingTimeWindow",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 43908,
                          "src": "5275:28:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5251:52:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "expression": {
                          "id": 40789,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40763,
                          "src": "5306:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                            "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                          }
                        },
                        "id": 40790,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5314:19:53",
                        "memberName": "revealingTimeWindow",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43910,
                        "src": "5306:27:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5251:82:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5233:100:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40797,
                  "nodeType": "IfStatement",
                  "src": "5229:180:53",
                  "trueBody": {
                    "id": 40796,
                    "nodeType": "Block",
                    "src": "5335:74:53",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 40793,
                            "name": "PrivateERC20ResolutionModule_OnGoingRevealingPhase",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43886,
                            "src": "5350:50:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 40794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5350:52:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40795,
                        "nodeType": "RevertStatement",
                        "src": "5343:59:53"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    40799
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40799,
                      "mutability": "mutable",
                      "name": "_quorumReached",
                      "nameLocation": "5423:14:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40897,
                      "src": "5415:22:53",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40798,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5415:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40808,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 40804,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 40800,
                          "name": "_escalation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40748,
                          "src": "5440:11:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Escalation_$43916_memory_ptr",
                            "typeString": "struct IPrivateERC20ResolutionModule.Escalation memory"
                          }
                        },
                        "id": 40801,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5452:10:53",
                        "memberName": "totalVotes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43915,
                        "src": "5440:22:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "expression": {
                          "id": 40802,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40763,
                          "src": "5466:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                            "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                          }
                        },
                        "id": 40803,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5474:17:53",
                        "memberName": "minVotesForQuorum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43906,
                        "src": "5466:25:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5440:51:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "30",
                      "id": 40806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5498:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 40807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "5440:59:53",
                    "trueExpression": {
                      "hexValue": "31",
                      "id": 40805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5494:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5415:84:53"
                },
                {
                  "assignments": [
                    40813
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40813,
                      "mutability": "mutable",
                      "name": "__voters",
                      "nameLocation": "5523:8:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40897,
                      "src": "5506:25:53",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 40811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5506:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 40812,
                        "nodeType": "ArrayTypeName",
                        "src": "5506:9:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40819,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "baseExpression": {
                          "id": 40814,
                          "name": "_voters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40394,
                          "src": "5534:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                            "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"
                          }
                        },
                        "id": 40816,
                        "indexExpression": {
                          "id": 40815,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40713,
                          "src": "5542:10:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5534:19:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$5090_storage",
                          "typeString": "struct EnumerableSet.AddressSet storage ref"
                        }
                      },
                      "id": 40817,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5554:6:53",
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5243,
                      "src": "5534:26:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$5090_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$5090_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)"
                      }
                    },
                    "id": 40818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5534:28:53",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5506:56:53"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40820,
                      "name": "_quorumReached",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40799,
                      "src": "5573:14:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 40821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5591:1:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5573:19:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 40860,
                    "nodeType": "Block",
                    "src": "5767:169:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 40845,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40713,
                              "src": "5802:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40846,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "5814:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5822:13:53",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "5814:21:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5836:4:53",
                              "memberName": "Lost",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2050,
                              "src": "5814:26:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "expression": {
                              "id": 40842,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "5775:6:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 40844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5782:19:53",
                            "memberName": "updateDisputeStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2221,
                            "src": "5775:26:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,enum IOracle.DisputeStatus) external"
                            }
                          },
                          "id": 40849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5775:66:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40850,
                        "nodeType": "ExpressionStatement",
                        "src": "5775:66:53"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 40852,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40722,
                                "src": "5870:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 40853,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5879:9:53",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "5870:18:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 40854,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40713,
                              "src": "5890:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40855,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "5902:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5910:13:53",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "5902:21:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5924:4:53",
                              "memberName": "Lost",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2050,
                              "src": "5902:26:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "id": 40851,
                            "name": "DisputeResolved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "5854:15:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,bytes32,enum IOracle.DisputeStatus)"
                            }
                          },
                          "id": 40858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5854:75:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40859,
                        "nodeType": "EmitStatement",
                        "src": "5849:80:53"
                      }
                    ]
                  },
                  "id": 40861,
                  "nodeType": "IfStatement",
                  "src": "5569:367:53",
                  "trueBody": {
                    "id": 40841,
                    "nodeType": "Block",
                    "src": "5594:167:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 40826,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40713,
                              "src": "5629:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40827,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "5641:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5649:13:53",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "5641:21:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5663:3:53",
                              "memberName": "Won",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2049,
                              "src": "5641:25:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "expression": {
                              "id": 40823,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "5602:6:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 40825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5609:19:53",
                            "memberName": "updateDisputeStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2221,
                            "src": "5602:26:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,enum IOracle.DisputeStatus) external"
                            }
                          },
                          "id": 40830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5602:65:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40831,
                        "nodeType": "ExpressionStatement",
                        "src": "5602:65:53"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 40833,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40722,
                                "src": "5696:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 40834,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5705:9:53",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "5696:18:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 40835,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40713,
                              "src": "5716:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40836,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "5728:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5736:13:53",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "5728:21:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5750:3:53",
                              "memberName": "Won",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2049,
                              "src": "5728:25:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "id": 40832,
                            "name": "DisputeResolved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "5680:15:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,bytes32,enum IOracle.DisputeStatus)"
                            }
                          },
                          "id": 40839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5680:74:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40840,
                        "nodeType": "EmitStatement",
                        "src": "5675:79:53"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    40863
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40863,
                      "mutability": "mutable",
                      "name": "_length",
                      "nameLocation": "5950:7:53",
                      "nodeType": "VariableDeclaration",
                      "scope": 40897,
                      "src": "5942:15:53",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40862,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5942:7:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40866,
                  "initialValue": {
                    "expression": {
                      "id": 40864,
                      "name": "__voters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40813,
                      "src": "5960:8:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 40865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "5969:6:53",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "5960:15:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5942:33:53"
                },
                {
                  "body": {
                    "id": 40895,
                    "nodeType": "Block",
                    "src": "6013:151:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 40878,
                                "name": "__voters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40813,
                                "src": "6054:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 40880,
                              "indexExpression": {
                                "id": 40879,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40868,
                                "src": "6063:2:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6054:12:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 40881,
                                    "name": "_votersData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40388,
                                    "src": "6068:11:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$_$",
                                      "typeString": "mapping(bytes32 => mapping(address => struct IPrivateERC20ResolutionModule.VoterData storage ref))"
                                    }
                                  },
                                  "id": 40883,
                                  "indexExpression": {
                                    "id": 40882,
                                    "name": "_disputeId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40713,
                                    "src": "6080:10:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6068:23:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VoterData_$43921_storage_$",
                                    "typeString": "mapping(address => struct IPrivateERC20ResolutionModule.VoterData storage ref)"
                                  }
                                },
                                "id": 40887,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 40884,
                                    "name": "__voters",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40813,
                                    "src": "6092:8:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 40886,
                                  "indexExpression": {
                                    "id": 40885,
                                    "name": "_i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40868,
                                    "src": "6101:2:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6092:12:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6068:37:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoterData_$43921_storage",
                                  "typeString": "struct IPrivateERC20ResolutionModule.VoterData storage ref"
                                }
                              },
                              "id": 40888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6106:10:53",
                              "memberName": "numOfVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43918,
                              "src": "6068:48:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 40873,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40763,
                                "src": "6021:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43911_memory_ptr",
                                  "typeString": "struct IPrivateERC20ResolutionModule.RequestParameters memory"
                                }
                              },
                              "id": 40876,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6029:11:53",
                              "memberName": "votingToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43904,
                              "src": "6021:19:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 40877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6041:12:53",
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2891,
                            "src": "6021:32:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2822_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2822_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 40889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6021:96:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40890,
                        "nodeType": "ExpressionStatement",
                        "src": "6021:96:53"
                      },
                      {
                        "id": 40894,
                        "nodeType": "UncheckedBlock",
                        "src": "6125:33:53",
                        "statements": [
                          {
                            "expression": {
                              "id": 40892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "6145:4:53",
                              "subExpression": {
                                "id": 40891,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40868,
                                "src": "6147:2:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 40893,
                            "nodeType": "ExpressionStatement",
                            "src": "6145:4:53"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40870,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40868,
                      "src": "5998:2:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 40871,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40863,
                      "src": "6003:7:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5998:12:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40896,
                  "initializationExpression": {
                    "assignments": [
                      40868
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 40868,
                        "mutability": "mutable",
                        "name": "_i",
                        "nameLocation": "5994:2:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 40896,
                        "src": "5986:10:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5986:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 40869,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5986:10:53"
                  },
                  "nodeType": "ForStatement",
                  "src": "5981:183:53"
                }
              ]
            },
            "baseFunctions": [
              43965
            ],
            "documentation": {
              "id": 40711,
              "nodeType": "StructuredDocumentation",
              "src": "4448:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "c8218e3e",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 40716,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40715,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "4549:10:53"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "4549:10:53"
                },
                "nodeType": "ModifierInvocation",
                "src": "4549:10:53"
              }
            ],
            "name": "resolveDispute",
            "nameLocation": "4505:14:53",
            "parameters": {
              "id": 40714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40713,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "4528:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40898,
                  "src": "4520:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40712,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4520:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4519:20:53"
            },
            "returnParameters": {
              "id": 40717,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4560:0:53"
            },
            "scope": 40925,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 40924,
            "nodeType": "FunctionDefinition",
            "src": "6220:239:53",
            "nodes": [],
            "body": {
              "id": 40923,
              "nodeType": "Block",
              "src": "6366:93:53",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 40921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 40910,
                      "name": "_commitment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40908,
                      "src": "6372:11:53",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 40914,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6407:3:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 40915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6411:6:53",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6407:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 40916,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40901,
                              "src": "6419:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 40917,
                              "name": "_numberOfVotes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40903,
                              "src": "6431:14:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 40918,
                              "name": "_salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40905,
                              "src": "6447:5:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 40912,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6396:3:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 40913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6400:6:53",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "6396:10:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 40919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6396:57:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 40911,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "6386:9:53",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 40920,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6386:68:53",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6372:82:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 40922,
                  "nodeType": "ExpressionStatement",
                  "src": "6372:82:53"
                }
              ]
            },
            "baseFunctions": [
              43986
            ],
            "documentation": {
              "id": 40899,
              "nodeType": "StructuredDocumentation",
              "src": "6172:45:53",
              "text": "@inheritdoc IPrivateERC20ResolutionModule"
            },
            "functionSelector": "201f0365",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCommitment",
            "nameLocation": "6229:17:53",
            "parameters": {
              "id": 40906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40901,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "6260:10:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40924,
                  "src": "6252:18:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40900,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6252:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40903,
                  "mutability": "mutable",
                  "name": "_numberOfVotes",
                  "nameLocation": "6284:14:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40924,
                  "src": "6276:22:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6276:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40905,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "6312:5:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40924,
                  "src": "6304:13:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40904,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6304:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6246:75:53"
            },
            "returnParameters": {
              "id": 40909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40908,
                  "mutability": "mutable",
                  "name": "_commitment",
                  "nameLocation": "6353:11:53",
                  "nodeType": "VariableDeclaration",
                  "scope": 40924,
                  "src": "6345:19:53",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40907,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6345:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6344:21:53"
            },
            "scope": 40925,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 40363,
              "name": "Module",
              "nameLocations": [
                "755:6:53"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 98,
              "src": "755:6:53"
            },
            "id": 40364,
            "nodeType": "InheritanceSpecifier",
            "src": "755:6:53"
          },
          {
            "baseName": {
              "id": 40365,
              "name": "IPrivateERC20ResolutionModule",
              "nameLocations": [
                "763:29:53"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 43987,
              "src": "763:29:53"
            },
            "id": 40366,
            "nodeType": "InheritanceSpecifier",
            "src": "763:29:53"
          }
        ],
        "canonicalName": "PrivateERC20ResolutionModule",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          40925,
          43987,
          2399,
          98,
          1782
        ],
        "name": "PrivateERC20ResolutionModule",
        "nameLocation": "723:28:53",
        "scope": 40926,
        "usedErrors": [
          1745,
          43874,
          43877,
          43880,
          43883,
          43886,
          43889,
          43892,
          43895,
          43898
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 53
}