@excubiae/contracts
Version:
810 lines • 150 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "Voting",
"sourceName": "contracts/test/examples/Advanced.t.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "Eligible",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "Registered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint8",
"name": "option",
"type": "uint8"
}
],
"name": "Voted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "log",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "log_address",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256[]",
"name": "val",
"type": "uint256[]"
}
],
"name": "log_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "int256[]",
"name": "val",
"type": "int256[]"
}
],
"name": "log_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "val",
"type": "address[]"
}
],
"name": "log_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "log_bytes",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "log_bytes32",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "log_int",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "val",
"type": "address"
}
],
"name": "log_named_address",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "val",
"type": "uint256[]"
}
],
"name": "log_named_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "int256[]",
"name": "val",
"type": "int256[]"
}
],
"name": "log_named_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "address[]",
"name": "val",
"type": "address[]"
}
],
"name": "log_named_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "val",
"type": "bytes"
}
],
"name": "log_named_bytes",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "val",
"type": "bytes32"
}
],
"name": "log_named_bytes32",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "int256",
"name": "val",
"type": "int256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
}
],
"name": "log_named_decimal_int",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "val",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
}
],
"name": "log_named_decimal_uint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "int256",
"name": "val",
"type": "int256"
}
],
"name": "log_named_int",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "val",
"type": "string"
}
],
"name": "log_named_string",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "val",
"type": "uint256"
}
],
"name": "log_named_uint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "log_string",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "log_uint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "logs",
"type": "event"
},
{
"inputs": [],
"name": "IS_TEST",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "deployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "evidence",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeArtifacts",
"outputs": [
{
"internalType": "string[]",
"name": "excludedArtifacts_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeContracts",
"outputs": [
{
"internalType": "address[]",
"name": "excludedContracts_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeSelectors",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
],
"internalType": "struct StdInvariant.FuzzSelector[]",
"name": "excludedSelectors_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeSenders",
"outputs": [
{
"internalType": "address[]",
"name": "excludedSenders_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "failed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "guarded",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "notOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "setUp",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "subject",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetArtifactSelectors",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "artifact",
"type": "string"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
],
"internalType": "struct StdInvariant.FuzzArtifactSelector[]",
"name": "targetedArtifactSelectors_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetArtifacts",
"outputs": [
{
"internalType": "string[]",
"name": "targetedArtifacts_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetContracts",
"outputs": [
{
"internalType": "address[]",
"name": "targetedContracts_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetInterfaces",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "string[]",
"name": "artifacts",
"type": "string[]"
}
],
"internalType": "struct StdInvariant.FuzzInterface[]",
"name": "targetedInterfaces_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetSelectors",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
],
"internalType": "struct StdInvariant.FuzzSelector[]",
"name": "targetedSelectors_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetSenders",
"outputs": [
{
"internalType": "address[]",
"name": "targetedSenders_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "test_eligible_whenAlreadyEligible_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_eligible_whenCheckFails_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_eligible_whenNotRegistered_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_eligible_whenNotVoted_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_eligible_whenValid_succeeds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_register_whenCallerNotTarget_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_register_whenCheckFails_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_register_whenTokenDoesNotExist_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_register_whenValid_succeeds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_simple",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_vote_whenInvalidOption_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_vote_whenMultipleValid_succeeds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_vote_whenNotRegistered_reverts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_vote_whenValid_succeeds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "test_voting_deployed",
"outputs": [],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "wrongEvidence",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040819052600c8054600160ff199182168117909255601f8054909116821790556001625e79b760e01b0319909152608452737109709ecfa91a80626ff3989d68f67f5b1dd12d63ffa1864960a4602060405180830381865afa15801561006c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009091906102da565b602880546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b0319815260026004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012791906102da565b602980546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b0319815260036004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801561019a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101be91906102da565b602a80546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600480820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025491906102da565b602b80546001600160a01b0319166001600160a01b0392909216919091179055604080516000602082015201604051602081830303815290604052602c908161029d91906103a9565b50604080516001602082015201604051602081830303815290604052602d90816102c791906103a9565b503480156102d457600080fd5b50610467565b6000602082840312156102ec57600080fd5b81516001600160a01b038116811461030357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061033457607f821691505b60208210810361035457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103a457806000526020600020601f840160051c810160208510156103815750805b601f840160051c820191505b818110156103a1576000815560010161038d565b50505b505050565b81516001600160401b038111156103c2576103c261030a565b6103d6816103d08454610320565b8461035a565b6020601f82116001811461040a57600083156103f25750848201515b600019600385901b1c1916600184901b1784556103a1565b600084815260208120601f198516915b8281101561043a578785015182556020948501946001909201910161041a565b50848210156104585786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b617f38806104766000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80637710ffad1161011a578063a77e0987116100ad578063c92d1e531161007c578063c92d1e5314610391578063d483cb1714610399578063d5f39488146103a1578063e20c9f71146103b4578063fa7626d4146103bc57600080fd5b8063a77e098714610361578063b0464fdc14610369578063b5508aa914610371578063ba414fa61461037957600080fd5b806385226c81116100e957806385226c8114610327578063870707231461033c578063916a17c614610344578063999a7d7a1461035957600080fd5b80637710ffad146103075780637a901d081461030f5780637f711e181461031757806382aea2131461031f57600080fd5b80634a7f21b01161019d5780635dd8ba2a1161016c5780635dd8ba2a146102c757806366d9a9a0146102cf5780636a5d41d1146102e457806372f7a030146102ec57806376f6d468146102ff57600080fd5b80634a7f21b01461029a5780634f03e338146102af5780635404686e146102b75780635c1c3cad146102bf57600080fd5b8063251c9d63116101d9578063251c9d63146102625780632ade3880146102755780633e5e3c231461028a5780633f7286f41461029257600080fd5b806307128a841461020b5780630a59a98c146102155780630a9254e4146102455780631ed7831c1461024d575b600080fd5b6102136103c9565b005b602a54610228906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61021361072a565b610255610ef7565b60405161023c91906141b8565b602b54610228906001600160a01b031681565b61027d610f59565b60405161023c9190614254565b61025561109b565b6102556110fb565b6102a261115b565b60405161023c9190614320565b6102136111e9565b610213611593565b610213611b15565b610213611dce565b6102d7612190565b60405161023c9190614380565b6102136122fd565b602954610228906001600160a01b031681565b61021361252f565b6102136127e3565b610213612a9c565b610213612cf2565b610213612fd9565b61032f61322f565b60405161023c9190614400565b6102136132ff565b61034c613679565b60405161023c9190614459565b61021361375f565b6102a26138d3565b61034c6138e0565b61032f6139c6565b610381613a96565b604051901515815260200161023c565b610213613b34565b610213613e4b565b602854610228906001600160a01b031681565b61025561406a565b601f546103819060ff1681565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561041c57600080fd5b505af1158015610430573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b1580156104e357600080fd5b505af11580156104f7573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054757600080fd5b505af115801561055b573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b505060408051600160248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637e27328960e01b179052905163f28dceb360e01b8152600080516020617ec3833981519152935063f28dceb392506106339190600401614320565b600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600160048201526001600160a01b03909116925063f207564e91506024015b600060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561071057600080fd5b505af1158015610724573d6000803e3d6000fd5b50505050565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b505050506040516107a190614177565b604051809103906000f0801580156107bd573d6000803e3d6000fd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b031602179055506040516107f090614177565b604051809103906000f08015801561080c573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405161083990614184565b604051809103906000f080158015610855573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405161088290614191565b604051809103906000f08015801561089e573d6000803e3d6000fd5b50602460006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600080516020617ee383398151915260001c6001600160a01b03166341af2f526040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b5050602254601f54604051634c96a38960e01b81526001600160a01b036101009092048216600482015291169250634c96a3899150602401600060405180830381600087803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b505050506000600080516020617ee383398151915260001c6001600160a01b031663191553a46040518163ffffffff1660e01b81526004016000604051808303816000875af11580156109e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0a91908101906145fa565b9050600081600081518110610a2157610a2161478b565b602002602001015160000151600181518110610a3f57610a3f61478b565b6020908102919091010151602180546001600160a01b0319166001600160a01b038316179055604080516320d797a960e11b81529051919250600080516020617ec3833981519152916341af2f529160048082019260009290919082900301818387803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505060248054601f54602054602154604051635bbaa00160e11b81526001600160a01b03610100909404841660048201529183169482019490945292811660448401526001606484015260006084840152600a60a484015216925063b7754002915060c401600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b031663191553a46040518163ffffffff1660e01b81526004016000604051808303816000875af1158015610bab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bd391908101906145fa565b9150600082600081518110610bea57610bea61478b565b602002602001015160000151600181518110610c0857610c0861478b565b6020908102919091010151602380546001600160a01b0319166001600160a01b038316179055604051909150610c3d9061419e565b604051809103906000f080158015610c59573d6000803e3d6000fd5b50602660006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600080516020617ee383398151915260001c6001600160a01b03166341af2f526040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b5050602654602354604051634cb6643d60e01b81526001600160a01b039182166004820152600060248201819052604482015291169250634cb6643d9150606401600060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b031663191553a46040518163ffffffff1660e01b81526004016000604051808303816000875af1158015610da4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dcc91908101906145fa565b9250600083600081518110610de357610de361478b565b602002602001015160000151600181518110610e0157610e0161478b565b6020908102919091010151602580546001600160a01b0319166001600160a01b03831690811790915560405191925090610e3a906141ab565b6001600160a01b039091168152602001604051809103906000f080158015610e66573d6000803e3d6000fd5b50602760006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b5050505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610f4f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f31575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561109257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561107b578382906000526020600020018054610fee906147a1565b80601f016020809104026020016040519081016040528092919081815260200182805461101a906147a1565b80156110675780601f1061103c57610100808354040283529160200191611067565b820191906000526020600020905b81548152906001019060200180831161104a57829003601f168201915b505050505081526020019060010190610fcf565b505050508152505081526020019060010190610f7d565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610f4f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f31575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610f4f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f31575050505050905090565b602d8054611168906147a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611194906147a1565b80156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b505050505081565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b15801561129d57600080fd5b505af11580156112b1573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b15801561130357600080fd5b505af1158015611317573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401600060405180830381600087803b15801561143057600080fd5b505af1158015611444573d6000803e3d6000fd5b5050602754604051632cfe62b760e21b8152600060048201526001600160a01b03909116925063b3f98adc91506024015b600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152600080516020617ec3833981519152925063491cc7c29150608401600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050602a54604080516001600160a01b039092168252600060208301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b125935001905060405180910390a1602754604051632cfe62b760e21b8152600060048201526001600160a01b039091169063b3f98adc90602401610692565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b1580156115e657600080fd5b505af11580156115fa573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b15801561164757600080fd5b505af115801561165b573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b1580156116ad57600080fd5b505af11580156116c1573d6000803e3d6000fd5b5050601f54602b546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b15801561171357600080fd5b505af1158015611727573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561177757600080fd5b505af115801561178b573d6000803e3d6000fd5b5050602b546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600160048201526001600160a01b03909116925063f207564e9150602401600060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b5050602754604051632cfe62b760e21b8152600060048201526001600160a01b03909116925063b3f98adc9150602401600060405180830381600087803b15801561189e57600080fd5b505af11580156118b2573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401600060405180830381600087803b15801561196757600080fd5b505af115801561197b573d6000803e3d6000fd5b5050602754604051632cfe62b760e21b8152600060048201526001600160a01b03909116925063b3f98adc9150602401600060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050602054602a546040516335313c2160e11b81526001600160a01b03918216600482015291169250636a6278429150602401600060405180830381600087803b158015611a2657600080fd5b505af1158015611a3a573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316634715494560e01b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350611a939201614320565b600060405180830381600087803b158015611aad57600080fd5b505af1158015611ac1573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663d832d92f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ac57600080fd5b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b158015611bc957600080fd5b505af1158015611bdd573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b158015611c2f57600080fd5b505af1158015611c43573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c9357600080fd5b505af1158015611ca7573d6000803e3d6000fd5b5050602b546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b158015611cfe57600080fd5b505af1158015611d12573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316634715494560e01b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350611d6b9201614320565b600060405180830381600087803b158015611d8557600080fd5b505af1158015611d99573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401610692565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b158015611e2157600080fd5b505af1158015611e35573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b158015611ee857600080fd5b505af1158015611efc573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f4c57600080fd5b505af1158015611f60573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b158015611fb757600080fd5b505af1158015611fcb573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401600060405180830381600087803b15801561201557600080fd5b505af1158015612029573d6000803e3d6000fd5b5050602754604051632cfe62b760e21b8152600060048201526001600160a01b03909116925063b3f98adc9150602401600060405180830381600087803b15801561207357600080fd5b505af1158015612087573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152600080516020617ec3833981519152925063491cc7c29150608401600060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b5050602a546040516001600160a01b0390911681527f36cd5b9d4fdc2d0cf34eda84f3ffd903552e17139454f5f502a305eb3bed15ad9250602001905060405180910390a1602760009054906101000a90046001600160a01b03166001600160a01b031663d832d92f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ac57600080fd5b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561109257838290600052602060002090600202016040518060400160405290816000820180546121e7906147a1565b80601f0160208091040260200160405190810160405280929190818152602001828054612213906147a1565b80156122605780601f1061223557610100808354040283529160200191612260565b820191906000526020600020905b81548152906001019060200180831161224357829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156122e557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116122a75790505b505050505081525050815260200190600101906121b4565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561235057600080fd5b505af1158015612364573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561247b57600080fd5b505af115801561248f573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156124e657600080fd5b505af11580156124fa573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401611475565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561258257600080fd5b505af1158015612596573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b1580156125e357600080fd5b505af11580156125f7573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126ad57600080fd5b505af11580156126c1573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b15801561271857600080fd5b505af115801561272c573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b031663f8d49bcd60e01b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350611a939201614320565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561283657600080fd5b505af115801561284a573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b15801561289757600080fd5b505af11580156128ab573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156129cc57600080fd5b505af11580156129e0573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b031663aba4733960e01b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350612a399201614320565b600060405180830381600087803b158015612a5357600080fd5b505af1158015612a67573d6000803e3d6000fd5b5050602754604051632cfe62b760e21b8152600060048201526001600160a01b03909116925063b3f98adc9150602401610692565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505060255460285460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b158015612bb657600080fd5b505af1158015612bca573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b5050602b546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b158015612c8557600080fd5b505af1158015612c99573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316631f492dbf60e21b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350611d6b9201614320565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b158015612d4557600080fd5b505af1158015612d59573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b158015612da657600080fd5b505af1158015612dba573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b158015612e0c57600080fd5b505af1158015612e20573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b158015612edb57600080fd5b505af1158015612eef573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152600080516020617ec3833981519152925063491cc7c29150608401600060405180830381600087803b158015612f4f57600080fd5b505af1158015612f63573d6000803e3d6000fd5b5050602a546040516001600160a01b0390911681527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99250602001905060405180910390a1602754604051637903ab2760e11b8152600060048201526001600160a01b039091169063f207564e90602401610692565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561302c57600080fd5b505af1158015613040573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b1580156130f357600080fd5b505af1158015613107573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561315757600080fd5b505af115801561316b573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156131c257600080fd5b505af11580156131d6573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b031663aba4733960e01b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350611a939201614320565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611092578382906000526020600020018054613272906147a1565b80601f016020809104026020016040519081016040528092919081815260200182805461329e906147a1565b80156132eb5780601f106132c0576101008083540402835291602001916132eb565b820191906000526020600020905b8154815290600101906020018083116132ce57829003601f168201915b505050505081526020019060010190613253565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d5690602401600060405180830381600087803b15801561335257600080fd5b505af1158015613366573d6000803e3d6000fd5b505060255460275460405163776d1a0160e01b81526001600160a01b0391821660048201529116925063776d1a019150602401600060405180830381600087803b1580156133b357600080fd5b505af11580156133c7573d6000803e3d6000fd5b5050601f54602a546040516335313c2160e11b81526001600160a01b039182166004820152610100909204169250636a6278429150602401600060405180830381600087803b15801561341957600080fd5b505af115801561342d573d6000803e3d6000fd5b50505050600080516020617ee383398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561347d57600080fd5b505af1158015613491573d6000803e3d6000fd5b5050602a546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec383398151915292506306447d569150602401600060405180830381600087803b1580156134e857600080fd5b505af11580156134fc573d6000803e3d6000fd5b5050602754604051637903ab2760e11b8152600060048201526001600160a01b03909116925063f207564e9150602401600060405180830381600087803b15801561354657600080fd5b505af115801561355a573d6000803e3d6000fd5b5050602754604051632cfe62b760e21b8152600060048201526001600160a01b03909116925063b3f98adc9150602401600060405180830381600087803b1580156135a457600080fd5b505af11580156135b8573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663d832d92f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561360c57600080fd5b505af1158015613620573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316638eb49d8d60e01b179052915163f28dceb360e01b8152600080516020617ec3833981519152945063f28dceb39350611a939201614320565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156110925760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561374757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116137095790505b5050505050815250508152602001906001019061369d565b60275460408051636d6de67760e11b815290516137df926001600160a01b03169163dadbccee9160048083019260209291908290030181865afa1580156137aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ce91906147db565b6025546001600160a01b03166140ca565b602754602a5460405163b2dd5c0760e01b81526001600160a01b03918216600482015261385d92919091169063b2dd5c07906024015b602060405180830381865afa158015613832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385691906147f8565b600061413c565b602754602a546040516304f77a1f60e11b81526001600160a01b0391821660048201526138979291909116906309eef43e90602401613815565b602754602a546040516366e305fd60e01b81526001600160a01b0391821660048201526138d19291909116906366e305fd90602401613815565b565b602c8054611168906147a1565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156110925760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156139ae57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116139705790505b50505050508152505081526020019060010190613904565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611092578382906000526020600020018054613a09906147a1565b80601f0160208091040260200160405190810160405280929190818152602001828054613a35906147a1565b8015613a825780601f10613a5757610100808354040283529160200191613a82565b820191906000526020600020905b815481529060010190602001808311613a6557829003601f168201915b5050505050815260200190600101906139ea565b60085460009060ff1615613aae575060085460ff1690565b604051630667f9d760e41b8152600080516020617ec3833981519152600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d919061481a565b1415905090565b6028546040516303223eab60e11b81526001600160a01b039091166004820152600080516020617ec3833981519152906306447d56906024016