@cartesi/arbitration
Version:
Arbitration DLib
1,086 lines • 285 kB
JSON
{
"contractName": "PartitionTestAux",
"sourceName": "contracts/test/PartitionTestAux.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "_state",
"type": "uint8"
}
],
"name": "ChallengeEnded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_timeOfDivergence",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_hashAtDivergenceTime",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_hashRigthAfterDivergenceTime",
"type": "bytes32"
}
],
"name": "DivergenceFound",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "HashesPosted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "PartitionCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "QueryPosted",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "claimVictoryByTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currentIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "divergenceTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "leftPoint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rightPoint",
"type": "uint256"
}
],
"name": "doSlice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
}
],
"name": "getChallengerAtIndex",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
}
],
"name": "getClaimerAtIndex",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getCurrentState",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getCurrentStateDeadline",
"outputs": [
{
"internalType": "uint256",
"name": "time",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
}
],
"name": "getFinalTimeAtIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_timeToStartMachine",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_partitionSize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maxCycle",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_picoSecondsToRunInsn",
"type": "uint256"
}
],
"name": "getMaxInstanceDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "currentNonce",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getPartitionGameIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "queryIndex",
"type": "uint256"
}
],
"name": "getQueryArrayAtIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getQuerySize",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
}
],
"name": "getQuerySizeAtIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
}
],
"name": "getRoundDurationAtIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getState",
"outputs": [
{
"internalType": "address",
"name": "_challenger",
"type": "address"
},
{
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_queryArray",
"type": "uint256[]"
},
{
"internalType": "bool[]",
"name": "_submittedArray",
"type": "bool[]"
},
{
"internalType": "bytes32[]",
"name": "_hashArray",
"type": "bytes32[]"
},
{
"internalType": "bytes32",
"name": "_currentState",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "_uintValues",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getSubInstances",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeIndex",
"type": "uint256"
}
],
"name": "getTimeHashAtIndex",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
}
],
"name": "getTimeOfLastMoveAtIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeIndex",
"type": "uint256"
}
],
"name": "getTimeSubmittedAtIndex",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_challenger",
"type": "address"
},
{
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_claimerFinalHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_finalTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_querySize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
}
],
"name": "instantiate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "isConcerned",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
}
],
"name": "log2OverTwo",
"outputs": [
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "queryPiece",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "leftPoint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rightPoint",
"type": "uint256"
}
],
"name": "makeQuery",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_divergenceTime",
"type": "uint256"
}
],
"name": "presentDivergence",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "i",
"type": "uint256"
}
],
"name": "queryArray",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "postedTimes",
"type": "uint256[]"
},
{
"internalType": "bytes32[]",
"name": "postedHashes",
"type": "bytes32[]"
}
],
"name": "replyQuery",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "divergenceTime",
"type": "uint256"
}
],
"name": "setDivergenceTimeAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "finalTime",
"type": "uint256"
}
],
"name": "setFinalTimeAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "queryIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "query",
"type": "uint256"
}
],
"name": "setQueryArrayAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "querySize",
"type": "uint256"
}
],
"name": "setQuerySizeAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "roundDuration",
"type": "uint256"
}
],
"name": "setRoundDurationAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "enum PartitionInterface.state",
"name": "toState",
"type": "uint8"
}
],
"name": "setState",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeIndex",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "timeHash",
"type": "bytes32"
}
],
"name": "setTimeHashAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeOfLastMove",
"type": "uint256"
}
],
"name": "setTimeOfLastMoveAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "partitionIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeIndex",
"type": "uint256"
}
],
"name": "setTimeSubmittedAtIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsChallengerWon",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsClaimerWon",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsDivergenceFound",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingHashes",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingQuery",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "key",
"type": "uint256"
}
],
"name": "timeHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "key",
"type": "uint256"
}
],
"name": "timeSubmitted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526000805534801561001457600080fd5b50612e57806100246000396000f3fe608060405234801561001057600080fd5b506004361061027d5760003560e01c80635748c1301161015c5780639c8b6b4c116100ce578063c526656c11610087578063c526656c14610a5f578063d0a068cf14610b24578063d62c836c14610b41578063daaadf4e14610b64578063e63fac2514610b81578063f23564f814610b9e5761027d565b80639c8b6b4c1461099f5780639c98e349146109c8578063a2c58835146109e5578063a2dc797314610a08578063a91565df14610a25578063c30ad82d14610a425761027d565b8063823bb67c11610120578063823bb67c146108be57806382afd23b146108ed5780638a8139b41461090a5780638b52567c1461092d5780639336daba14610956578063965ff5bc146109795761027d565b80635748c130146106c25780635df5fa5a146106df57806360696f81146107085780636547429e1461072b57806373df1612146107485761027d565b806326987b60116101f55780633d46b819116101b95780633d46b819146104e7578063402f02051461050457806341fde16f14610632578063429fc0181461064f57806345080b651461066c57806352a19515146106a55761027d565b806326987b601461041c5780632ab4ca6a14610424578063326ff2f5146104475780633562820d14610464578063370f31aa146104b25761027d565b806312bfd5841161024757806312bfd5841461035c5780631d0cda781461037f5780631d9f2d771461039c5780631ede93ef146103b95780632018136e146103d6578063224de3ea146103f95761027d565b80623b142014610282578062446386146102a757806301ff62ab146102d657806303b13783146103165780630c0be5a614610339575b600080fd5b6102a56004803603604081101561029857600080fd5b5080359060200135610bc1565b005b6102c4600480360360208110156102bd57600080fd5b5035610bd6565b60408051918252519081900360200190f35b610302600480360360408110156102ec57600080fd5b50803590602001356001600160a01b0316610c38565b604080519115158252519081900360200190f35b6102c46004803603604081101561032c57600080fd5b5080359060200135610c83565b6102a56004803603604081101561034f57600080fd5b5080359060200135610cb3565b6102c46004803603604081101561037257600080fd5b5080359060200135610f7e565b6103026004803603602081101561039557600080fd5b5035610f9f565b610302600480360360208110156103b257600080fd5b5035611011565b6102c4600480360360208110156103cf57600080fd5b503561105f565b6102a5600480360360408110156103ec57600080fd5b5080359060200135611074565b6103026004803603604081101561040f57600080fd5b508035906020013561109d565b6102c4611109565b6102a56004803603604081101561043a57600080fd5b508035906020013561110f565b6102c46004803603602081101561045d57600080fd5b5035611124565b6102c4600480360360e081101561047a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c00135611182565b6102c4600480360360a08110156104c857600080fd5b5080359060208101359060408101359060608101359060800135611537565b6102c4600480360360208110156104fd57600080fd5b5035611584565b6102a56004803603606081101561051a57600080fd5b8135919081019060408101602082013564010000000081111561053c57600080fd5b82018360208201111561054e57600080fd5b8035906020019184602083028401116401000000008311171561057057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105c057600080fd5b8201836020820111156105d257600080fd5b803590602001918460208302840111640100000000831117156105f457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061162a945050505050565b6102c46004803603602081101561064857600080fd5b5035611a21565b6102c46004803603602081101561066557600080fd5b5035611a7f565b6106896004803603602081101561068257600080fd5b5035611b11565b604080516001600160a01b039092168252519081900360200190f35b6102c4600480360360208110156106bb57600080fd5b5035611b2f565b6102c4600480360360208110156106d857600080fd5b5035611b44565b6102a5600480360360608110156106f557600080fd5b5080359060208101359060400135611d09565b6102c46004803603604081101561071e57600080fd5b5080359060200135611d29565b6103026004803603602081101561074157600080fd5b5035611d93565b6107746004803603604081101561075e57600080fd5b50803590602001356001600160a01b0316611de1565b60405180886001600160a01b03168152602001876001600160a01b031681526020018060200180602001806020018681526020018060200185810385528a818151815260200191508051906020019060200280838360005b838110156107e45781810151838201526020016107cc565b50505050905001858103845289818151815260200191508051906020019060200280838360005b8381101561082357818101518382015260200161080b565b50505050905001858103835288818151815260200191508051906020019060200280838360005b8381101561086257818101518382015260200161084a565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156108a1578181015183820152602001610889565b505050509050019b50505050505050505050505060405180910390f35b6102a5600480360360808110156108d457600080fd5b508035906020810135906040810135906060013561215e565b6103026004803603602081101561090357600080fd5b5035612461565b6102a56004803603604081101561092057600080fd5b5080359060200135612476565b6102a56004803603606081101561094357600080fd5b508035906020810135906040013561248b565b6103026004803603604081101561096c57600080fd5b50803590602001356124bc565b6102a56004803603604081101561098f57600080fd5b508035906020013560ff166124df565b6102a5600480360360608110156109b557600080fd5b5080359060208101359060400135612510565b6102c4600480360360208110156109de57600080fd5b5035612520565b6102c4600480360360408110156109fb57600080fd5b5080359060200135612535565b6102a560048036036020811015610a1e57600080fd5b50356125ad565b61030260048036036020811015610a3b57600080fd5b50356127df565b61068960048036036020811015610a5857600080fd5b503561282d565b610a8b60048036036040811015610a7557600080fd5b50803590602001356001600160a01b0316612848565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610acf578181015183820152602001610ab7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610b0e578181015183820152602001610af6565b5050505090500194505050505060405180910390f35b61030260048036036020811015610b3a57600080fd5b5035612863565b6102a560048036036040811015610b5757600080fd5b50803590602001356128b1565b6102c460048036036020811015610b7a57600080fd5b50356128c6565b6102c460048036036020811015610b9757600080fd5b50356128f7565b6102a560048036036040811015610bb457600080fd5b508035906020013561290c565b60009182526003602052604090912060080155565b6000818060005411610c1d576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b60008381526003602052604090206009015491505b50919050565b6000828152600360205260408120546001600160a01b0383811691161480610c7c57506000838152600360205260409020600101546001600160a01b038381169116145b9392505050565b6000828152600360205260408120600601805483908110610ca057fe5b9060005260206000200154905092915050565b818060005411610cf8576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6000838152600360205260409020546001600160a01b0316338114610d5f576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b6000848152600260208181526040808420805460010190556003909152909120015484908410610dc05760405162461bcd60e51b815260040180806020018281038252602d815260200180612c22602d913960400191505060405180910390fd5b6000858152600360208181526040808420888552909201905290205460ff16610e1a5760405162461bcd60e51b8152600401808060200182810382526029815260200180612d786029913960400191505060405180910390fd5b6000858152600360208181526040808420600189018552909201905290205460ff16610e775760405162461bcd60e51b815260040180806020018281038252602d815260200180612cd1602d913960400191505060405180910390fd5b6000858152600360205260409020600b8101859055600a01805460ff19166004179055610ea385612921565b6000858152600360205260409020600a01547f60aa3f6370bfca526a425b273a4701c067bc6a9c65dd5e1f718093968caf49f390869060ff166004811115610ee757fe5b6040805192835260ff90911660208301528051918290030190a16000858152600360209081526040808320600b8101548085526004909101835281842054600182018552938290205482518a81529384019190915282820193909352606082019290925290517f8197b77bb2176a2166b421dae05fdada3bfe369f4cadf7da2162160ef6978ab29181900360800190a15050505050565b60009182526003602090815260408084209284526004909201905290205490565b6000818060005411610fe6576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b60005b6000848152600360205260409020600a015460ff16600481111561100957fe5b149392505050565b6000818060005411611058576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6004610fe9565b60009081526003602052604090206007015490565b60009182526003602081815260408085209385529290910190529020805460ff19166001179055565b60008280600054116110e4576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b5050600091825260036020818152604080852093855292909101905290205460ff1690565b60005481565b600091825260036020526040909120600b0155565b600081806000541161116b576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600b015490565b6000866001600160a01b0316886001600160a01b031614156111d55760405162461bcd60e51b815260040180806020018281038252602c815260200180612bd1602c913960400191505060405180910390fd5b600084116112145760405162461bcd60e51b8152600401808060200182810382526025815260200180612bfd6025913960400191505060405180910390fd5b60028311611269576040805162461bcd60e51b815260206004820181905260248201527f51756572792053697a65206d75737420626520626967676572207468616e2032604482015290519081900360640190fd5b601483106112be576040805162461bcd60e51b815260206004820181905260248201527f51756572792053697a65206d757374206265206c657373207468616e206d6178604482015290519081900360640190fd5b603282116112fd5760405162461bcd60e51b8152600401808060200182810382526030815260200180612cfe6030913960400191505060405180910390fd5b60008054815260036020818152604080842080546001600160a01b03808f166001600160a01b0319928316179092558554865282862060019081018054938f1693909216929092179055845485528185206002018990558454855281852085805284018352818520805460ff199081168317909155855486528484528286208a8752850184528286208054909116909117905583548452828252808420848052600490810183528185208b905584548552838352818520898652018252808420899055835484529190528082206005908101869055825483529120015467ffffffffffffffff811180156113f057600080fd5b5060405190808252806020026020018201604052801561141a578160200160208202803683370190505b5060036000805481526020019081526020016000206006019080519060200190611445929190612b70565b5060008054808252600360205260408220600201546114649290612944565b600080548152600360209081526040808320600801859055825483528083204260079091015582548352808320600a01805460ff191660011790559154825190815291517f9bbb2706e0fa7fffe2a1c188dae1a32922e2be76d89d3b89d6677f3e5fe0c1f99281900390910190a160005460408051918252517f8aa2a1e24480c14317a6c2d823c81f4fef15130c883be64c185441531f7b96e89181900360200190a1506000805481526001602081905260408220805460ff19168217905581549081019091555b979650505050505050565b60008061154b600088888860008989612aba565b90506000611560600189898960008a8a612aba565b905061156b856128c6565b8802816002028360020201019250505095945050505050565b60008180600054116115cb576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6115d481612461565b611616576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b82806000541161166f576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6000848152600360205260409020600101546001600160a01b03163381146116d9576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008581526002602052604090208054600190810190915585906000878152600360205260409020600a015460ff16600481111561171357fe5b1461174f5760405162461bcd60e51b8152600401808060200182810382526034815260200180612c9d6034913960400191505060405180910390fd5b6000868152600360205260409020600501548551146117b5576040805162461bcd60e51b815260206004820152601f60248201527f706f7374656454696d65732e6c656e67746820213d20717565727953697a6500604482015290519081900360640190fd5b60008681526003602052604090206005015484511461181b576040805162461bcd60e51b815260206004820181905260248201527f706f737465644861736865732e6c656e67746820213d20717565727953697a65604482015290519081900360640190fd5b60005b6000878152600360205260409020600501548110156119b957600087815260036020526040902060060180548290811061185457fe5b906000526020600020015486828151811061186b57fe5b6020026020010151146118c5576040805162461bcd60e51b815260206004820152601f60248201527f706f7374656454696d65735b695d20213d20717565727941727261795b695d00604482015290519081900360640190fd5b6003600088815260200190815260200160002060030160008783815181106118e957fe5b60209081029190910181015182528101919091526040016000205460ff166119b157600160036000898152602001908152602001600020600301600088848151811061193157fe5b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555084818151811061196a57fe5b602002602001015160036000898152602001908152602001600020600401600088848151811061199657fe5b60200260200101518152602001908152602001600020819055505b60010161181e565b50600086815260036020908152604091829020600a8101805460ff1916905542600782015560090180546001019055815188815291517f9f48f0365c0924940e64ac12fca39f480beeada18cca76e8544a3ac295068bac9281900390910190a1505050505050565b6000818060005411611a68576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b505060009081526003602052604090206005015490565b6000818060005411611ac6576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6000838152600360205260409020600a8101546008820154600583015460098401546002850154611b039460ff16939260289290916101f4612aba565b600790910154019392505050565b6000908152600360205260409020600101546001600160a01b031690565b60009081526003602052604090206002015490565b6000818060005411611b8b576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6000838152600360205260408120600a015460ff166004811115611bab57fe5b1415611bc8576b57616974696e67517565727960a01b9150610c32565b60016000848152600360205260409020600a015460ff166004811115611bea57fe5b1415611c08576c57616974696e6748617368657360981b9150610c32565b60026000848152600360205260409020600a015460ff166004811115611c2a57fe5b1415611c48576c21b430b63632b733b2b92bb7b760991b9150610c32565b60036000848152600360205260409020600a015460ff166004811115611c6a57fe5b1415611c85576921b630b4b6b2b92bb7b760b11b9150610c32565b60046000848152600360205260409020600a015460ff166004811115611ca757fe5b1415611cc7576e111a5d995c99d95b98d9519bdd5b99608a1b9150610c32565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b600092835260036020908152604080852093855260049093019052912055565b6000828060005411611d70576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b505060009182526003602090815260408084209284526004909201905290205490565b6000818060005411611dda576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6002610fe9565b60008281526003602090815260408083208151600480825260a08201909352849360609384938493879385938492918201608080368337019050509050816002015481600081518110611e3057fe5b602002602001018181525050816005015481600181518110611e4e57fe5b6020908102919091010152600a8201546008830154600584015460098501546002860154611e889460ff16939260289290916101f4612aba565b82600701540181600281518110611e9b57fe5b60200260200101818152505081600b015481600381518110611eb957fe5b60209081029190910101526040805160148082526102a0820190925260609181602001602082028036833750506040805160148082526102a082019092529293506060929150602082016102808036833701905050905060005b8460050154811015611fe657600360008f81526020019081526020016000206003016000866006018381548110611f4657fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff16838281518110611f7957fe5b91151560209283029190910182015260008f81526003909152604081206006870180546004909201929184908110611fad57fe5b9060005260206000200154815260200190815260200160002054828281518110611fd357fe5b6020908102919091010152600101611f13565b50600080600a86015460ff166004811115611ffd57fe5b141561201557506b57616974696e67517565727960a01b5b6001600a86015460ff16600481111561202a57fe5b141561204357506c57616974696e6748617368657360981b5b6002600a86015460ff16600481111561205857fe5b141561207157506c21b430b63632b733b2b92bb7b760991b5b6003600a86015460ff16600481111561208657fe5b141561209c57506921b630b4b6b2b92bb7b760b11b5b6004600a86015460ff1660048111156120b157fe5b14156120cc57506e111a5d995c99d95b98d9519bdd5b99608a1b5b84546001860154600687018054604080516020808402820181019092528281526001600160a01b0395861695909416938892889288928c92909187919083018282801561213857602002820191906000526020600020905b815481526020019060010190808311612124575b505050505094509b509b509b509b509b509b509b50505050505092959891949750929550565b8380600054116121a3576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6000858152600360205260409020546001600160a01b031633811461220a576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008681526002602052604081208054600101905586906000888152600360205260409020600a015460ff16600481111561224157fe5b1461227d5760405162461bcd60e51b8152600401808060200182810382526032815260200180612dd06032913960400191505060405180910390fd5b6000878152600360205260409020600501546000190186106122d05760405162461bcd60e51b8152600401808060200182810382526027815260200180612d2e6027913960400191505060405180910390fd5b60008781526003602052604090206006018054879081106122ed57fe5b906000526020600020015485146123355760405162461bcd60e51b8152600401808060200182810382526023815260200180612d556023913960400191505060405180910390fd5b600087815260036020526040902060060180546001880190811061235557fe5b9060005260206000200154841461239d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612c796024913960400191505060405180910390fd5b6001858503116123f4576040805162461bcd60e51b815260206004820152601960248201527f496e74657276616c206973206c657373207468616e206f6e6500000000000000604482015290519081900360640190fd5b6123ff878686612944565b600087815260036020908152604091829020600a8101805460ff1916600117905542600790910155815189815291517f8aa2a1e24480c14317a6c2d823c81f4fef15130c883be64c185441531f7b96e89281900390910190a150505050505050565b60009081526001602052604090205460ff1690565b60009182526003602052604090912060050155565b60008381526003602052604090206006018054829190849081106124ab57fe5b600091825260209091200155505050565b600091825260036020818152604080852093855292909101905290205460ff1690565b6000828152600360205260409020600a01805482919060ff1916600183600481111561250757fe5b02179055505050565b61251b838383612944565b505050565b60009081526003602052604090206005015490565b600082806000541161257c576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b600084815260036020526040902060060180548490811061259957fe5b906000526020600020015491505092915050565b8080600054116125f2576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b60008281526002602081815260408084208054600101905560039091528220600a81015460088201546005830154600984015493909401548795946126429460ff909416936028926101f4612aba565b6000858152600360205260409020600781015490549101421191506001600160a01b031633148015612693575060016000858152600360205260409020600a015460ff16600481111561269157fe5b145b801561269c5750805b15612732576000848152600360205260409020600a0180546002919060ff19166001835b02179055506126ce84612921565b6000848152600360205260409020600a01547f60aa3f6370bfca526a425b273a4701c067bc6a9c65dd5e1f718093968caf49f390859060ff16600481111561271257fe5b6040805192835260ff90911660208301528051918290030190a15061251b565b6000848152600360205260409020600101546001600160a01b03163314801561277857506000848152600360205260408120600a015460ff16600481111561277657fe5b145b80156127815750805b156127a8576000848152600360208190526040909120600a01805460ff19166001836126c0565b60405162461bcd60e51b815260040180806020018281038252602f815260200180612da1602f913960400191505060405180910390fd5b6000818060005411612826576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6001610fe9565b6000908152600360205260409020546001600160a01b031690565b50506040805160008082526020820190815281830190925291565b60008180600054116128aa576040805162461bcd60e51b81526020600482015260166024820152600080516020612e02833981519152604482015290519081900360640190fd5b6003610fe9565b60009182526003602052604090912060070155565b60006101005b82156128e25760019290921c91600019016128cc565b60028160ff03816128ef57fe5b049392505050565b60009081526003602052604090206008015490565b60009182526003602052604090912060020155565b6000908152600160209081526040808320805460ff191690556002909152812055565b8181116129825760405162461bcd60e51b815260040180806020018281038252602a815260200180612c4f602a913960400191505060405180910390fd5b600083815260036020526040812060050154838303906000190160028102821015612a2e57600092505b80831015612a29578383860110156129f157600086815260036020526040902060060180548685019190859081106129e057fe5b600091825260209091200155612a1e565b6000868152600360205260409020600601805485919085908110612a1157fe5b6000918252602090912001555b6001909201916129ac565b612a86565b6000818381612a3957fe5b049050600093505b81841015612a8457600087815260036020526040902060060180548583028801919086908110612a6d57fe5b600091825260209091200155600190930192612a41565b505b6000868152600360205260409020600601805485919083908110612aa657fe5b600091825260209091200155505050505050565b60008084860a8481612ac857fe5b0490508415612ad8576000198601025b6000896004811115612ae657fe5b1415612b03578764e8d4a510008285025b0488010191505061152c565b6001896004811115612b1157fe5b1415612b26578764e8d4a51000828502612af7565b6003896004811115612b3457fe5b1480612b4b57506002896004811115612b4957fe5b145b80612b6157506004896004811115612b5f57fe5b145b15611cc757600091505061152c565b828054828255906000526020600020908101928215612bab579160200282015b82811115612bab578251825591602001919060010190612b90565b50612bb7929150612bbb565b5090565b5b80821115612bb75760008155600101612bbc56fe4368616c6c656e67657220616e6420636c61696d65722068617665207468652073616d65206164647265737346696e616c2054696d652068617320746f20626520626967676572207468616e207a65726f646976657267656e63652074696d652068617320746f206265206c657373207468616e2066696e616c54696d657269676874506f696e742068617320746f20626520626967676572207468616e206c656674506f696e747269676874506f696e7420213d20717565727941727261795b717565727950696563655d43757272656e745374617465206973206e6f742057616974696e674861736865732c2063616e6e6f74207265706c795175657279646976657267656e636554696d65202b20312068617320746f2068617665206265656e207375626d6974746564526f756e64204475726174696f6e2068617320746f2062652067726561746572207468616e203530207365636f6e64737175657279506965636520697320626967676572207468616e20717565727953697a65202d20316c656674506f696e7420213d20717565727941727261795b717565727950696563655d646976657267656e636554696d652068617320746f2068617665206265656e207375626d69747465644661696c20746f20436c61696d566963746f7279427954696d6520696e2063757272656e7420636f6e646974696f6e43757272656e745374617465206973206e6f742057616974696e6751756572792c2063616e6e6f74206d616b655175657279496e646578206e6f7420696e7374616e74696174656400000000000000000000a264697066735822122048dbcb21697d45de62996cdd2a247db7ad027c6270ff4d16fd6796d5f5bcde1364736f6c63430007040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061027d5760003560e01c80635748c1301161015c5780639c8b6b4c116100ce578063c526656c11610087578063c526656c14610a5f578063d0a068cf14610b24578063d62c836c14610b41578063daaadf4e14610b64578063e63fac2514610b81578063f23564f814610b9e5761027d565b80639c8b6b4c1461099f5780639c98e349146109c8578063a2c58835146109e5578063a2dc797314610a08578063a91565df14610a25578063c30ad82d14610a425761027d565b8063823bb67c11610120578063823bb67c146108be57806382afd23b146108ed5780638a8139b41461090a5780638b52567c1461092d5780639336daba14610956578063965ff5bc146109795761027d565b80635748c130146106c25780635df5fa5a146106df57806360696f81146107085780636547429e1461072b57806373df1612146107485761027d565b806326987b60116101f55780633d46b819116101b95780633d46b819146104e7578063402f02051461050457806341fde16f14610632578063429fc0181461064f57806345080b651461066c57806352a19515146106a55761027d565b806326987b601461041c5780632ab4ca6a14610424578063326ff2f5146104475780633562820d14610464578063370f31aa146104b25761027d565b806312bfd5841161024757806312bfd5841461035c5780631d0cda781461037f5780631d9f2d771461039c5780631ede93ef146103b95780632018136e146103d6578063224de3ea146103f95761027d565b80623b142014610282578062446386146102a757806301ff62ab146102d657806303b13783146103165780630c0be5a614610339575b600080fd5b6102a56004803603604081101561029857600080fd5b5080359060200135610bc1565b005b6102c4600480360360208110156102bd57600080fd5b5035610bd6565b60408051918252519081900360200190f35b610302600480360360408110156102ec57600080fd5b50803590602001356001600160a01b0316610c38565b604080519115158252519081900360200190f35b6102c46004803603604081101561032c57600080fd5b5080359060200135610c83565b6102a56004803603604081101561034f57600080fd5b5080359060200135610cb3565b6102c46004803603604081101561037257600080fd5b5080359060200135610f7e565b6103026004803603602081101561039557600080fd5b5035610f9f565b610302600480360360208110156103b257600080fd5b5035611011565b6102c4600480360360208110156103cf57600080fd5b503561105f565b6102a5600480360360408110156103ec57600080fd5b5080359060200135611074565b6103026004803603604081101561040f57600080fd5b508035906020013561109d565b6102c4611109565b6102a56004803603604081101561043a57600080fd5b508035906020013561110f565b6102c46004803603602081101561045d57600080fd5b5035611124565b6102c4600480360360e081101561047a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c00135611182565b6102c4600480360360a08110156104c857600080fd5b5080359060208101359060408101359060608101359060800135611537565b6102c4600480360360208110156104fd57600080fd5b5035611584565b6102a56004803603606081101561051a57600080fd5b8135919081019060408101602082013564010000000081111561053c57600080fd5b82018360208201111561054e57600080fd5b8035906020019184602083028401116401000000008311171561057057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105c057600080fd5b8201836020820111156105d257600080fd5b803590602001918460208302840111640100000000831117156105f457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061162a945050505050565b