UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

1,681 lines 137 kB
{ "_format": "hh-sol-artifact-1", "contractName": "WitnetPriceFeedsDefault", "sourceName": "contracts/core/defaults/WitnetPriceFeedsDefault.sol", "abi": [ { "inputs": [ { "internalType": "contract WitnetOracle", "name": "_wrb", "type": "address" }, { "internalType": "bool", "name": "_upgradable", "type": "bool" }, { "internalType": "bytes32", "name": "_versionTag", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "EmptyBuffer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "range", "type": "uint256" } ], "name": "IndexOutOfBounds", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "InvalidLengthEncoding", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "read", "type": "uint256" }, { "internalType": "uint256", "name": "expected", "type": "uint256" } ], "name": "UnexpectedMajorType", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "unexpected", "type": "uint256" } ], "name": "UnsupportedMajorType", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "baseAddr", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "baseCodehash", "type": "bytes32" }, { "indexed": false, "internalType": "string", "name": "versionTag", "type": "string" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "WitnetFeedDeleted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes4", "name": "feedId", "type": "bytes4" }, { "indexed": false, "internalType": "bytes32", "name": "radHash", "type": "bytes32" } ], "name": "WitnetFeedSettled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes4", "name": "feedId", "type": "bytes4" }, { "indexed": false, "internalType": "address", "name": "solver", "type": "address" } ], "name": "WitnetFeedSolverSettled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "origin", "type": "address" }, { "indexed": true, "internalType": "bytes4", "name": "feedId", "type": "bytes4" }, { "indexed": false, "internalType": "uint256", "name": "witnetQueryId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "witnetQueryEvmReward", "type": "uint256" }, { "components": [ { "internalType": "uint8", "name": "committeeSize", "type": "uint8" }, { "internalType": "uint64", "name": "witnessingFeeNanoWit", "type": "uint64" } ], "indexed": false, "internalType": "struct WitnetV2.RadonSLA", "name": "witnetQuerySLA", "type": "tuple" } ], "name": "WitnetFeedUpdateRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "origin", "type": "address" }, { "indexed": true, "internalType": "bytes4", "name": "feedId", "type": "bytes4" }, { "indexed": false, "internalType": "uint256", "name": "witnetQueryId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "witnetQueryReward", "type": "uint256" } ], "name": "WitnetFeedUpdateRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "solver", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "codehash", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "constructorParams", "type": "bytes" } ], "name": "WitnetPriceSolverDeployed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "evmReward", "type": "uint256" }, { "components": [ { "internalType": "uint8", "name": "committeeSize", "type": "uint8" }, { "internalType": "uint64", "name": "witnessingFeeNanoWit", "type": "uint64" } ], "indexed": false, "internalType": "struct WitnetV2.RadonSLA", "name": "witnetSLA", "type": "tuple" } ], "name": "WitnetQuery", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "evmGasPrice", "type": "uint256" } ], "name": "WitnetQueryResponse", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "evmGasPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "evmCallbackGas", "type": "uint256" } ], "name": "WitnetQueryResponseDelivered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "resultCborBytes", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "evmGasPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "evmCallbackActualGas", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "evmCallbackRevertReason", "type": "string" } ], "name": "WitnetQueryResponseDeliveryFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "evmReward", "type": "uint256" } ], "name": "WitnetQueryRewardUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint8", "name": "committeeSize", "type": "uint8" }, { "internalType": "uint64", "name": "witnessingFeeNanoWit", "type": "uint64" } ], "indexed": false, "internalType": "struct WitnetV2.RadonSLA", "name": "sla", "type": "tuple" } ], "name": "WitnetRadonSLA", "type": "event" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "base", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseFeeOverheadPercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "class", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "codehash", "outputs": [ { "internalType": "bytes32", "name": "_codehash", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dataType", "outputs": [ { "internalType": "enum Witnet.RadonDataTypes", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultRadonSLA", "outputs": [ { "components": [ { "internalType": "uint8", "name": "numWitnesses", "type": "uint8" }, { "internalType": "uint8", "name": "minConsensusPercentage", "type": "uint8" }, { "internalType": "uint64", "name": "witnessReward", "type": "uint64" }, { "internalType": "uint64", "name": "witnessCollateral", "type": "uint64" }, { "internalType": "uint64", "name": "minerCommitRevealFee", "type": "uint64" } ], "internalType": "struct Witnet.RadonSLA", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" } ], "name": "deleteFeed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deleteFeeds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "initcode", "type": "bytes" }, { "internalType": "bytes", "name": "constructorParams", "type": "bytes" } ], "name": "deployPriceSolver", "outputs": [ { "internalType": "address", "name": "_solver", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deployer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "initcode", "type": "bytes" }, { "internalType": "bytes", "name": "constructorParams", "type": "bytes" } ], "name": "determinePriceSolverAddress", "outputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_evmGasPrice", "type": "uint256" } ], "name": "estimateUpdateBaseFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "footprint", "outputs": [ { "internalType": "bytes4", "name": "_footprint", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" } ], "name": "hash", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_initData", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isUpgradable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" } ], "name": "isUpgradableFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lastValidQueryId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lastValidResponse", "outputs": [ { "components": [ { "internalType": "address", "name": "reporter", "type": "address" }, { "internalType": "uint64", "name": "finality", "type": "uint64" }, { "internalType": "uint32", "name": "resultTimestamp", "type": "uint32" }, { "internalType": "bytes32", "name": "resultTallyHash", "type": "bytes32" }, { "internalType": "bytes", "name": "resultCborBytes", "type": "bytes" } ], "internalType": "struct WitnetV2.Response", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "latestPrice", "outputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes32", "name": "tallyHash", "type": "bytes32" }, { "internalType": "enum WitnetV2.ResponseStatus", "name": "status", "type": "uint8" } ], "internalType": "struct IWitnetPriceSolver.Price", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4[]", "name": "feedIds", "type": "bytes4[]" } ], "name": "latestPrices", "outputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes32", "name": "tallyHash", "type": "bytes32" }, { "internalType": "enum WitnetV2.ResponseStatus", "name": "status", "type": "uint8" } ], "internalType": "struct IWitnetPriceSolver.Price[]", "name": "_prices", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "latestUpdateQueryId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "latestUpdateRequest", "outputs": [ { "components": [ { "internalType": "address", "name": "requester", "type": "address" }, { "internalType": "uint24", "name": "gasCallback", "type": "uint24" }, { "internalType": "uint72", "name": "evmReward", "type": "uint72" }, { "internalType": "bytes", "name": "witnetBytecode", "type": "bytes" }, { "internalType": "bytes32", "name": "witnetRAD", "type": "bytes32" }, { "components": [ { "internalType": "uint8", "name": "committeeSize", "type": "uint8" }, { "internalType": "uint64", "name": "witnessingFeeNanoWit", "type": "uint64" } ], "internalType": "struct WitnetV2.RadonSLA", "name": "witnetSLA", "type": "tuple" } ], "internalType": "struct WitnetV2.Request", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "latestUpdateResponse", "outputs": [ { "components": [ { "internalType": "address", "name": "reporter", "type": "address" }, { "internalType": "uint64", "name": "finality", "type": "uint64" }, { "internalType": "uint32", "name": "resultTimestamp", "type": "uint32" }, { "internalType": "bytes32", "name": "resultTallyHash", "type": "bytes32" }, { "internalType": "bytes", "name": "resultCborBytes", "type": "bytes" } ], "internalType": "struct WitnetV2.Response", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "latestUpdateResponseStatus", "outputs": [ { "internalType": "enum WitnetV2.ResponseStatus", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "latestUpdateResultError", "outputs": [ { "components": [ { "internalType": "enum Witnet.ResultErrorCodes", "name": "code", "type": "uint8" }, { "internalType": "string", "name": "reason", "type": "string" } ], "internalType": "struct Witnet.ResultError", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lookupCaption", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lookupDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lookupPriceSolver", "outputs": [ { "internalType": "contract IWitnetPriceSolver", "name": "_solverAddress", "type": "address" }, { "internalType": "string[]", "name": "_solverDeps", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lookupWitnetBytecode", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lookupWitnetRadHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "lookupWitnetRetrievals", "outputs": [ { "components": [ { "internalType": "uint8", "name": "argsCount", "type": "uint8" }, { "internalType": "enum Witnet.RadonDataRequestMethods", "name": "method", "type": "uint8" }, { "internalType": "enum Witnet.RadonDataTypes", "name": "resultDataType", "type": "uint8" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "string", "name": "body", "type": "string" }, { "internalType": "string[2][]", "name": "headers", "type": "string[2][]" }, { "internalType": "bytes", "name": "script", "type": "bytes" } ], "internalType": "struct Witnet.RadonRetrieval[]", "name": "_retrievals", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "prefix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract WitnetRequestBytecodes", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" } ], "name": "requestUpdate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "feedId", "type": "bytes4" }, { "components": [ { "internalType": "uint8", "name": "committeeSize", "type": "uint8" }, { "internalType": "uint64", "name": "witnessingFeeNanoWit", "type": "uint64" } ], "internalType": "struct WitnetV2.RadonSLA", "name": "updateSLA", "type": "tuple" } ], "name": "requestUpdate", "outputs": [ { "internalType": "uint256", "name": "_usedFunds", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_baseFeeOverheadPercentage", "type": "uint16" } ], "name": "settleBaseFeeOverheadPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint8", "name": "committeeSize", "type": "uint8" }, { "internalType": "uint64", "name": "witnessingFeeNanoWit", "type": "uint64" } ], "internalType": "struct WitnetV2.RadonSLA", "name": "defaultSLA", "type": "tuple" } ], "name": "settleDefaultRadonSLA", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" }, { "internalType": "bytes32", "name": "radHash", "type": "bytes32" } ], "name": "settleFeedRequest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" }, { "internalType": "contract WitnetRequest", "name": "request", "type": "address" } ], "name": "settleFeedRequest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" }, { "internalType": "contract WitnetRequestTemplate", "name": "template", "type": "address" }, { "internalType": "string[][]", "name": "args", "type": "string[][]" } ], "name": "settleFeedRequest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" }, { "internalType": "address", "name": "solver", "type": "address" }, { "internalType": "string[]", "name": "deps", "type": "string[]" } ], "name": "settleFeedSolver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "specs", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "supportedFeeds", "outputs": [ { "internalType": "bytes4[]", "name": "_ids", "type": "bytes4[]" }, { "internalType": "string[]", "name": "_captions", "type": "string[]" }, { "internalType": "bytes32[]", "name": "_solvers", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "caption", "type": "string" } ], "name": "supportsCaption", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFeeds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "feedId", "type": "bytes32" } ], "name": "valueFor", "outputs": [ { "internalType": "int256", "name": "_value", "type": "int256" }, { "internalType": "uint256", "name": "_timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "_status", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "witnet", "outputs": [ { "internalType": "contract WitnetOracle", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6101c0604052336101405263346916ef60e11b6101805234801561002257600080fd5b5060405161628e38038061628e83398101604081905261004191610251565b81816040518060400160405280601f81526020017f696f2e7769746e65742e70726f786961626c652e66656564732e707269636500815250823360046040518060400160405280600681526020016550726963652d60d01b8152508160138111156100ae576100ae6102a5565b60808160138111156100c2576100c26102a5565b9052506100ce81610142565b60a05250506001600160a01b03811661010157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61010a81610155565b503060c0521515610100526001600255610120919091528051602090910120610160525050506001600160a01b03166101a0526102e7565b600061014f826020610171565b92915050565b600180546001600160a01b031916905561016e81610201565b50565b600060208260ff161115610187576101876102bb565b60008260ff1684511161019b5783516101a0565b8260ff165b905060005b818110156101f957806008028582815181106101c3576101c36102d1565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217916001016101a5565b505092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060006060848603121561026657600080fd5b83516001600160a01b038116811461027d57600080fd5b6020850151909350801515811461029357600080fd5b80925050604084015190509250925092565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615e8e610400600039600081816105740152818161169101528181611726015281816118b801528181611b97015281816123570152818161272a01528181612aed01528181612e9d01528181613172015281816134da015281816135780152818161368e0152818161372b015281816137c00152613d19015260006109cb0152600061064d01526000610b2501526000611a4101526000818161067e0152611ab00152600050506000818161061701528181610961015281816115d10152818161164d0152818161180b015261182d015260008181611b6701526132760152600081816106f50152611e020152615e8e6000f3fe6080604052600436106103505760003560e01c80638da5cb5b116101c6578063d5f39488116100f7578063f2fde38b11610095578063f9f34bb61161006f578063f9f34bb614610c7e578063fae91a5114610cab578063ff24fb4f14610ccb578063ff75890f14610ceb57610350565b8063f2fde38b14610c03578063f78eea8314610c23578063f9b4a27f14610c5e57610350565b8063e30c3978116100d1578063e30c397814610b7e578063eb92b29b14610b93578063ef1dff2b14610bb6578063f14cb81214610bd657610350565b8063d5f3948814610b13578063d6a3614f14610b47578063e1c9e3c014610b6957610350565b8063b411ee9411610164578063c064d3721161013e578063c064d37214610a79578063c3d98ea814610a99578063c5010d1714610ac6578063d3471e3414610ae657610350565b8063b411ee94146109ed578063b8d38c9614610a13578063bff852fa14610a3357610350565b8063a9e954b9116101a0578063a9e954b914610952578063abc86c6e14610986578063ac82c60814610999578063adb7c3f7146109b957610350565b80638da5cb5b146108f45780638df3fdfd14610912578063a55b471c1461093257610350565b80635be93984116102a057806379ba50971161023e57806384292f071161021857806384292f071461086557806386ac03e01461088557806389a87b16146108a55780638a416ea9146108d257610350565b806379ba50971461080e5780637b10399914610823578063806d7e8f1461083857610350565b80636b58960a1161027a5780636b58960a146107565780636d1178e514610776578063715018a6146107e457806375dadb32146107f957610350565b80635be93984146106c35780636175ff00146106e35780636ab221f81461072457610350565b806346d1d21a1161030d5780635001f3b5116102e75780635001f3b51461060857806352d1902d1461063b5780635479d9401461066f57806354fd4d50146106ae57610350565b806346d1d21a1461056257806349492ef1146105ae5780634efef9c0146105db57610350565b8063029db9581461048a5780630306732e146104bd57806303f3813d146104e1578063384ac938146105015780633e088e121461052f578063439fab9114610542575b34801561035c57600080fd5b506000356001600160e01b03191663e0d20f7360e01b14801561037e57503330145b156104365760006103a56020610394368461447a565b6001600160c01b031916901b610d0b565b600601546001600160a01b03169050806104115760405162461bcd60e51b815260206004820152602260248201527f5769746e6574507269636546656564733a20756e736574746c656420736f6c7660448201526132b960f11b60648201526084015b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610432578184f35b8184fd5b60405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564733a206e6f7420696d706c656d656e74656044820152601960fa1b6064820152608401610408565b005b34801561049657600080fd5b506104aa6104a53660046144be565b610d45565b6040519081526020015b60405180910390f35b3480156104c957600080fd5b506104d2610d56565b6040516104b493929190614585565b3480156104ed57600080fd5b506104886104fc3660046146c0565b610fb5565b34801561050d57600080fd5b5061052161051c3660046144be565b6113ab565b6040516104b4929190614744565b6104aa61053d3660046144be565b61147d565b34801561054e57600080fd5b5061048861055d3660046148a2565b6114b1565b34801561056e57600080fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016104b4565b3480156105ba57600080fd5b506105ce6105c93660046144be565b6118a1565b6040516104b49190614900565b3480156105e757600080fd5b506105fb6105f63660046144be565b611951565b6040516104b49190614937565b34801561061457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610596565b34801561064757600080fd5b506104aa7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016104b4565b3480156106ba57600080fd5b506105fb611a3a565b3480156106cf57600080fd5b506104aa6106de3660046144be565b611a6a565b3480156106ef57600080fd5b506107177f000000000000000000000000000000000000000000000000000000000000000081565b6040516104b4919061495e565b34801561073057600080fd5b5061074461073f3660046144be565b611a7f565b60405160ff90911681526020016104b4565b34801561076257600080fd5b5061069e61077136600461496c565b611a97565b34801561078257600080fd5b5061078b611af2565b6040516104b49190600060a08201905060ff835116825260ff602084015116602083015260408301516001600160401b038082166040850152806060860151166060850152806080860151166080850152505092915050565b3480156107f057600080fd5b50610488611b4c565b34801561080557600080fd5b506105fb611b60565b34801561081a57600080fd5b50610488611b8b565b34801561082f57600080fd5b50610596611b93565b34801561084457600080fd5b506108586108533660046144be565b611c17565b6040516104b49190614a1f565b34801561087157600080fd5b50610488610880366004614b05565b611df8565b34801561089157600080fd5b506104886108a0366004614b50565b6120a6565b3480156108b157600080fd5b506108c56108c03660046144be565b612311565b6040516104b49190614b91565b3480156108de57600080fd5b506108e76123f0565b6040516104b49190614c20565b34801561090057600080fd5b506000546001600160a01b0316610596565b34801561091e57600080fd5b506104aa61092d3660046144be565b6124aa565b34801561093e57600080fd5b5061059661094d366004614c35565b6124bf565b34801561095e57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f6104aa565b6104aa610994366004614cb2565b612598565b3480156109a557600080fd5b506104886109b4366004614ce8565b612652565b3480156109c557600080fd5b506108e77f000000000000000000000000000000000000000000000000000000000000000081565b3480156109f957600080fd5b506108e7610a083660046148a2565b805160209091012090565b348015610a1f57600080fd5b50610488610a2e366004614d3e565b6126c6565b348015610a3f57600080fd5b5060408051808201909152601781527f5769746e65745072696365466565647344656661756c7400000000000000000060208201526105fb565b348015610a8557600080fd5b506104aa610a94366004614d62565b6126e6565b348015610aa557600080fd5b50610ab9610ab43660046144be565b6127a9565b6040516104b49190614db5565b348015610ad257600080fd5b5061069e610ae1366004614b50565b6129bc565b348015610af257600080fd5b50610b06610b013660046144be565b612abe565b6040516104b49190614dc3565b348015610b1f57600080fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b348015610b5357600080fd5b50600080516020615e39833981519152546104aa565b348015610b7557600080fd5b50610488612b86565b348015610b8a57600080fd5b50610596612cfe565b348015610b9f57600080fd5b5060045460405161ffff90911681526020016104b4565b348015610bc257600080fd5b506105fb610bd13660046144be565b612d12565b348015610be257600080fd5b50610bf6610bf13660046144be565b612dad565b6040516104b49190614e1d565b348015610c0f57600080fd5b50610488610c1e36600461496c565b612dc0565b348015610c2f57600080fd5b50610c43610c3e366004614d62565b612dd4565b604080519384526020840192909252908201526060016104b4565b348015610c6a57600080fd5b50610b06610c793660046144be565b612e6e565b348015610c8a57600080fd5b50610c9e610c99366004614e2b565b612ed3565b6040516104b49190614e60565b348015610cb757600080fd5b50610488610cc6366004614eae565b612faa565b348015610cd757600080fd5b50610488610ce63660046146c0565b613051565b348015610cf757600080fd5b50610596610d06366004614c35565b6130b2565b6001600160e01b03191660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040902090565b6000610d5082613141565b92915050565b600080516020615e3983398151915280546040805160208084028201810190925282815260609384938493830182828015610ddd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d9f5790505b5050505050925082516001600160401b03811115610dfd57610dfd614768565b604051908082528060200260200182016040528015610e3057816020015b6060815260200190600190039081610e1b5790505b50915082516001600160401b03811115610e4c57610e4c614768565b604051908082528060200260200182016040528015610e75578160200160208202803683370190505b50905060005b8351811015610faf576000610ea8858381518110610e9b57610e9b614eca565b6020026020010151610d0b565b9050806000018054610eb990614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee590614ee0565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050505050848381518110610f4957610f49614eca565b602090810291909101015260068101546001600160a01b031615610f8357600681015460601b6bffffffffffffffffffffffff1916610f89565b80600501545b838381518110610f9b57610f9b614eca565b602090810291909101015250600101610e7b565b50909192565b610fbd613217565b6001600160a01b03831661101f5760405162461bcd60e51b815260206004820152602360248201527f5769746e6574507269636546656564733a206e6f20736f6c766572206164647260448201526265737360e81b6064820152608401610408565b600061106086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b9050600061106d82610d0b565b9050806002015460000361113d5780611087878983614f64565b506110928787613244565b60018201805460ff191660ff92909216919091179055600080516020615e198339815191526001908101546110c691615039565b60028201556006810180546001600160a01b0319166001600160a01b038716179055600080516020615e198339815191526001908101805491820181556000908152602090206008820401805463ffffffff60079093166004026101000a928302191660e085901c92909202919091179055611179565b60068101546001600160a01b0386811691161461117957600060058201556006810180546001600160a01b0319166001600160a01b0387161790555b600080866001600160a01b031663e6f8715860e01b8588886040516024016111a3939291906150ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111e19190615136565b600060405180830381855af49150503d806000811461121c576040519150601f19603f3d011682016040523d82523d6000602084013e611221565b606091505b50915091508161127b576004810190508080602001905181019061124591906151aa565b60405160200161125591906151de565b60408051601f198184030181529082905262461bcd60e51b825261040891600401614937565b5050600080306001600160a01b031663e0d20f7360e01b856040516024016112a39190614c20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112e19190615136565b600060405180830381855afa9150503d806000811461131c576040519150601f19603f3d011682016040523d82523d6000602084013e611321565b606091505b509150915081611355576004810190508080602001905181019061134591906151aa565b6040516020016112559190615241565b5050604080516001600160e01b0319841681526001600160a01b03871660208201527f850802cc670161a9f185e45414c2fe7efb5e71b23a8e32a53caffb7dd000aca3910160405180910390a150505050505050565b600060606113b883610d0b565b600601546001600160a01b0316915060006113d28461332a565b905080516001600160401b038111156113ed576113ed614768565b60405190808252806020026020018201604052801561142057816020015b606081526020019060019003908161140b5790505b50915060005b81518110156114765761145182828151811061144457611444614eca565b6020026020010151612d12565b83828151811061146357611463614eca565b6020908102919091010152600101611426565b5050915091565b6040805180820190915260035460ff8116825261010090046001600160401b03166020820152600090610d50908390613414565b6000546001600160a01b03168061152a57818060200190518101906114d69190615294565b90506114e18161394f565b60408051808201909152600a808252630bebc2006020909201919091526003805468ffffffffffffffff