{ "_format": "hh-sol-artifact-1", "contractName": "ChunkLinearReward", "sourceName": "contracts/reward/ChunkLinearReward.sol", "abi": [ { "inputs": [ { "internalType": "uint256", "name": "releaseSeconds_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "pricingIndex", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DistributeReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PARAMS_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pricingIndex", "type": "uint256" }, { "internalType": "address payable", "name": "beneficiary", "type": "address" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "claimMineReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "donate", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "beforeLength", "type": "uint256" }, { "internalType": "uint256", "name": "chargedSectors", "type": "uint256" } ], "name": "fillReward", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "firstRewardableChunk", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "market_", "type": "address" }, { "internalType": "address", "name": "mine_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "market", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mine", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dest", "type": "address" } ], "name": "payments", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "releaseSeconds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pricingIndex", "type": "uint256" } ], "name": "rewardDeadline", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewards", "outputs": [ { "internalType": "uint128", "name": "lockedReward", "type": "uint128" }, { "internalType": "uint128", "name": "claimableReward", "type": "uint128" }, { "internalType": "uint128", "name": "distributedReward", "type": "uint128" }, { "internalType": "uint40", "name": "startTime", "type": "uint40" }, { "internalType": "uint40", "name": "lastUpdate", "type": "uint40" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "serviceFeeRateBps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "baseReward_", "type": "uint256" } ], "name": "setBaseReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "bps", "type": "uint256" } ], "name": "setServiceFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "treasury_", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBaseReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "payee", "type": "address" } ], "name": "withdrawPayments", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60c06040523480156200001157600080fd5b506040516200262238038062002622833981016040819052620000349162000083565b604051620000429062000075565b604051809103906000f0801580156200005f573d6000803e3d6000fd5b506001600160a01b031660805260a0526200009d565b61058c806200209683390190565b6000602082840312156200009657600080fd5b5051919050565b60805160a051611fb0620000e660003960008181610283015281816106fc0152818161145e01526115370152600081816107820152818161109601526115a40152611fb06000f3fe6080604052600436106101cd5760003560e01c80639010d07c116100f7578063b7a3c04c11610095578063e2982c2111610064578063e2982c2114610548578063ed88c68e14610568578063f0f4426014610570578063f301af421461059057600080fd5b8063b7a3c04c146104d2578063c0575111146104f2578063ca15c87314610508578063d547741f1461052857600080fd5b80639b1d3091116100d15780639b1d30911461044d578063a217fddf1461046d578063b15d20da14610482578063b3b30c1a146104a457600080fd5b80639010d07c146103ed57806391d148541461040d57806399f4b2511461042d57600080fd5b806331b3eb941161016f57806361d027b31161013e57806361d027b31461036957806376ad03bc146103a15780637f1b5e43146103b757806380f55605146103cd57600080fd5b806331b3eb94146102f657806336568abe14610316578063485cc9551461033657806359e967001461035657600080fd5b8063158ef93e116101ab578063158ef93e146102575780632129593114610271578063248a9ca3146102a55780632f2ff15d146102d657600080fd5b806301ffc9a7146101d25780630373a23a146102075780630a539a1914610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611b4a565b610637565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610227610222366004611b74565b610662565b005b34801561023557600080fd5b50610249610244366004611b74565b610680565b6040519081526020016101fe565b34801561026357600080fd5b506000546101f29060ff1681565b34801561027d57600080fd5b506102497f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b157600080fd5b506102496102c0366004611b74565b6000908152600160208190526040909120015490565b3480156102e257600080fd5b506102276102f1366004611ba2565b610738565b34801561030257600080fd5b50610227610311366004611bd2565b610763565b34801561032257600080fd5b50610227610331366004611ba2565b6107e1565b34801561034257600080fd5b50610227610351366004611bef565b610864565b610227610364366004611c1d565b610926565b34801561037557600080fd5b50600954610389906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b3480156103ad57600080fd5b5061024960075481565b3480156103c357600080fd5b5061024960065481565b3480156103d957600080fd5b50600354610389906001600160a01b031681565b3480156103f957600080fd5b50610389610408366004611c1d565b610d0e565b34801561041957600080fd5b506101f2610428366004611ba2565b610d26565b34801561043957600080fd5b50600454610389906001600160a01b031681565b34801561045957600080fd5b50610227610468366004611b74565b610d51565b34801561047957600080fd5b50610249600081565b34801561048e57600080fd5b50610249600080516020611f5b83398151915281565b3480156104b057600080fd5b506104b9610d6f565b60405167ffffffffffffffff90911681526020016101fe565b3480156104de57600080fd5b506102276104ed366004611c3f565b610e1d565b3480156104fe57600080fd5b5061024960085481565b34801561051457600080fd5b50610249610523366004611b74565b611037565b34801561053457600080fd5b50610227610543366004611ba2565b61104e565b34801561055457600080fd5b50610249610563366004611bd2565b611074565b610227611103565b34801561057c57600080fd5b5061022761058b366004611bd2565b61111c565b34801561059c57600080fd5b506105f56105ab366004611b74565b600560205260009081526040902080546001909101546001600160801b0380831692600160801b908190048216929182169164ffffffffff918104821691600160a81b9091041685565b604080516001600160801b0396871681529486166020860152929094169183019190915264ffffffffff9081166060830152909116608082015260a0016101fe565b60006001600160e01b03198216635a05180f60e01b148061065c575061065c82611157565b92915050565b600080516020611f5b83398151915261067a8161118c565b50600755565b6000818152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff908304811660608301819052600160a81b9093041660808201529082036106fa5750600092915050565b7f0000000000000000000000000000000000000000000000000000000000000000816060015164ffffffffff166107319190611c8d565b9392505050565b600082815260016020819052604090912001546107548161118c565b61075e8383611199565b505050565b6040516351cff8d960e01b81526001600160a01b0382811660048301527f000000000000000000000000000000000000000000000000000000000000000016906351cff8d990602401600060405180830381600087803b1580156107c657600080fd5b505af11580156107da573d6000803e3d6000fd5b5050505050565b6001600160a01b03811633146108565760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61086082826111bb565b5050565b60005460ff16156108c35760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b606482015260840161084d565b6000805460ff191660011781556108e0906108db3390565b611199565b6108f8600080516020611f5b83398151915233611199565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6003546001600160a01b0316336001600160a01b0316146109895760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e00604482015260640161084d565b60006127106008543461099c9190611ca0565b6109a69190611cd5565b905080156109c4576009546109c4906001600160a01b0316826111dd565b60006109d08234611ce9565b9050826000816101006109e561040080611ca0565b6109f190610400611ca0565b6109fc906008611ca0565b610a069190611cd5565b610a109085611ca0565b610a1a9190611cd5565b90506000610a288388611c8d565b90506000610100610a3b61040080611ca0565b610a4790610400611ca0565b610a52906008611ca0565b610a5c9190611cd5565b610a669089611cfc565b610100610a7561040080611ca0565b610a8190610400611ca0565b610a8c906008611ca0565b610a969190611cd5565b610aa09190611ce9565b905060006001610100610ab561040080611ca0565b610ac190610400611ca0565b610acc906008611ca0565b610ad69190611cd5565b610ae0848c611c8d565b610aea9190611cd5565b610af49190611ce9565b90506000610100610b0761040080611ca0565b610b1390610400611ca0565b610b1e906008611ca0565b610b289190611cd5565b610b33600186611ce9565b610b3d9190611cfc565b610b48906001611c8d565b90506000610100610b5b61040080611ca0565b610b6790610400611ca0565b610b72906008611ca0565b610b7c9190611cd5565b610b868387611ce9565b610b909190611cd5565b90506000610100610ba361040080611ca0565b610baf90610400611ca0565b610bba906008611ca0565b610bc49190611cd5565b610bcf836001611c8d565b610bd99190611ca0565b86149050818403610c02576000848152600560205260409020610bfd9034836112f6565b610d00565b610c5f610100610c1461040080611ca0565b610c2090610400611ca0565b610c2b906008611ca0565b610c359190611cd5565b610c3f878a611ca0565b610c499190611cd5565b60008681526005602052604090209060016112f6565b6000610c6c856001611c8d565b90505b82811015610ca3576000818152600560205260409020610c91908960016112f6565b80610c9b81611d10565b915050610c6f565b50610d00610100610cb661040080611ca0565b610cc290610400611ca0565b610ccd906008611ca0565b610cd79190611cd5565b610ce1858a611ca0565b610ceb9190611cd5565b600084815260056020526040902090836112f6565b505050505050505050505050565b6000828152600260205260408120610731908361142a565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611f5b833981519152610d698161118c565b50600855565b6000806104005b610d898167ffffffffffffffff16611436565b15610da357905080610d9c600282611d29565b9050610d76565b8067ffffffffffffffff168267ffffffffffffffff161015610e175760006002610dcd8484611d59565b610dd79190611d7a565b610de19084611da1565b9050610df68167ffffffffffffffff16611436565b15610e0d57610e06816001611da1565b9250610e11565b8091505b50610da3565b50919050565b6004546001600160a01b0316336001600160a01b031614610e805760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e00604482015260640161084d565b6000838152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff90830481166060830152600160a81b909204909116608082015290610ef482611456565b9050610f008282611482565b6000610f0b836114d1565b60008781526005602090815260408083208751928801516001600160801b03938416600160801b9185168202178255918801516001909101805460608a015160808b0151939095166001600160a81b03199091161764ffffffffff9485169093029290921764ffffffffff60a81b1916600160a81b9390911692909202919091179055909150610f9c878584611532565b905060008160065411610fb157600654610fb3565b815b9050610fbf8184611c8d565b92508060066000828254610fd39190611ce9565b9091555050821561102d57610fe88784611585565b866001600160a01b0316887f83617a1b0f847971f005bd162dde513cfe93df96e6293c3bbb5fe9c40629dd4c8560405161102491815260200190565b60405180910390a35b5050505050505050565b600081815260026020526040812061065c90611606565b6000828152600160208190526040909120015461106a8161118c565b61075e83836111bb565b6040516371d4ed8d60e11b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e3a9db1a90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065c9190611dc2565b34600660008282546111159190611c8d565b9091555050565b600080516020611f5b8339815191526111348161118c565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216637965db0b60e01b148061065c57506301ffc9a760e01b6001600160e01b031983161461065c565b6111968133611610565b50565b6111a38282611669565b600082815260026020526040902061075e90826116d4565b6111c582826116e9565b600082815260026020526040902061075e9082611750565b8047101561122d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161084d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461127a576040519150601f19603f3d011682016040523d82523d6000602084013e61127f565b606091505b505090508061075e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161084d565b6001600160801b0382111561133f5760405162461bcd60e51b815260206004820152600f60248201526e526577617264206f766572666c6f7760881b604482015260640161084d565b6001830154600160801b900464ffffffffff161561139f5760405162461bcd60e51b815260206004820181905260248201527f526577617264206974656d20686173206265656e20696e697469616c697a6564604482015260640161084d565b8254829084906000906113bc9084906001600160801b0316611ddb565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550801561075e575050600101805469ffffffffffffffffffff60801b1916600160801b4264ffffffffff1690810264ffffffffff60a81b191691909117600160a81b91909102179055565b60006107318383611765565b60008061144283610680565b905080158015906107315750421192915050565b600061065c827f000000000000000000000000000000000000000000000000000000000000000061178f565b80826000018181516114949190611dfb565b6001600160801b03169052506020820180518291906114b4908390611ddb565b6001600160801b03169052505064ffffffffff4216608090910152565b600080600283602001516114e59190611e1b565b905080836020018181516114f99190611dfb565b6001600160801b0316905250604083018051829190611519908390611ddb565b6001600160801b03908116909152919091169392505050565b6000427f0000000000000000000000000000000000000000000000000000000000000000846060015164ffffffffff1661156c9190611c8d565b111561157b5750600754610731565b5060009392505050565b60405163f340fa0160e01b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f340fa019083906024016000604051808303818588803b1580156115e957600080fd5b505af11580156115fd573d6000803e3d6000fd5b50505050505050565b600061065c825490565b61161a8282610d26565b6108605761162781611853565b611632836020611865565b604051602001611643929190611e59565b60408051601f198184030181529082905262461bcd60e51b825261084d91600401611ece565b6116738282610d26565b6108605760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610731836001600160a01b038416611a01565b6116f38282610d26565b156108605760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610731836001600160a01b038416611a50565b600082600001828154811061177c5761177c611f01565b9060005260206000200154905092915050565b6000826080015164ffffffffff166000036117ac5750600061065c565b6000836040015184602001516117c29190611ddb565b6001600160801b0316905060008185600001516001600160801b03166117e89190611c8d565b90506000856060015164ffffffffff16426118039190611ce9565b90506000856118128385611ca0565b61181c9190611cd5565b9050828111156118295750815b8381101561183e57600094505050505061065c565b6118488482611ce9565b979650505050505050565b606061065c6001600160a01b03831660145b60606000611874836002611ca0565b61187f906002611c8d565b67ffffffffffffffff81111561189757611897611f17565b6040519080825280601f01601f1916602001820160405280156118c1576020820181803683370190505b509050600360fc1b816000815181106118dc576118dc611f01565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061190b5761190b611f01565b60200101906001600160f81b031916908160001a905350600061192f846002611ca0565b61193a906001611c8d565b90505b60018111156119b2576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061196e5761196e611f01565b1a60f81b82828151811061198457611984611f01565b60200101906001600160f81b031916908160001a90535060049490941c936119ab81611f2d565b905061193d565b5083156107315760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161084d565b6000818152600183016020526040812054611a485750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561065c565b50600061065c565b60008181526001830160205260408120548015611b39576000611a74600183611ce9565b8554909150600090611a8890600190611ce9565b9050818114611aed576000866000018281548110611aa857611aa8611f01565b9060005260206000200154905080876000018481548110611acb57611acb611f01565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611afe57611afe611f44565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061065c565b600091505061065c565b5092915050565b600060208284031215611b5c57600080fd5b81356001600160e01b03198116811461073157600080fd5b600060208284031215611b8657600080fd5b5035919050565b6001600160a01b038116811461119657600080fd5b60008060408385031215611bb557600080fd5b823591506020830135611bc781611b8d565b809150509250929050565b600060208284031215611be457600080fd5b813561073181611b8d565b60008060408385031215611c0257600080fd5b8235611c0d81611b8d565b91506020830135611bc781611b8d565b60008060408385031215611c3057600080fd5b50508035926020909101359150565b600080600060608486031215611c5457600080fd5b833592506020840135611c6681611b8d565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b8082018082111561065c5761065c611c77565b6000816000190483118215151615611cba57611cba611c77565b500290565b634e487b7160e01b600052601260045260246000fd5b600082611ce457611ce4611cbf565b500490565b8181038181111561065c5761065c611c77565b600082611d0b57611d0b611cbf565b500690565b600060018201611d2257611d22611c77565b5060010190565b600067ffffffffffffffff80831681851681830481118215151615611d5057611d50611c77565b02949350505050565b67ffffffffffffffff828116828216039080821115611b4357611b43611c77565b600067ffffffffffffffff80841680611d9557611d95611cbf565b92169190910492915050565b67ffffffffffffffff818116838216019080821115611b4357611b43611c77565b600060208284031215611dd457600080fd5b5051919050565b6001600160801b03818116838216019080821115611b4357611b43611c77565b6001600160801b03828116828216039080821115611b4357611b43611c77565b60006001600160801b0380841680611d9557611d95611cbf565b60005b83811015611e50578181015183820152602001611e38565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611e91816017850160208801611e35565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ec2816028840160208801611e35565b01602801949350505050565b6020815260008251806020840152611eed816040850160208701611e35565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600081611f3c57611f3c611c77565b506000190190565b634e487b7160e01b600052603160045260246000fdfeb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a264697066735822122011623615efde74e54e33006a7cf6893b47d34d216d6fcddd126b275916f5bd9e64736f6c63430008100033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050e8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b808201808211156104d257634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220e52cf2b51f0a8d14b10d6c445edb47884f6fbd6d5fbaed7572ef106f818cf48064736f6c63430008100033", "deployedBytecode": "0x6080604052600436106101cd5760003560e01c80639010d07c116100f7578063b7a3c04c11610095578063e2982c2111610064578063e2982c2114610548578063ed88c68e14610568578063f0f4426014610570578063f301af421461059057600080fd5b8063b7a3c04c146104d2578063c0575111146104f2578063ca15c87314610508578063d547741f1461052857600080fd5b80639b1d3091116100d15780639b1d30911461044d578063a217fddf1461046d578063b15d20da14610482578063b3b30c1a146104a457600080fd5b80639010d07c146103ed57806391d148541461040d57806399f4b2511461042d57600080fd5b806331b3eb941161016f57806361d027b31161013e57806361d027b31461036957806376ad03bc146103a15780637f1b5e43146103b757806380f55605146103cd57600080fd5b806331b3eb94146102f657806336568abe14610316578063485cc9551461033657806359e967001461035657600080fd5b8063158ef93e116101ab578063158ef93e146102575780632129593114610271578063248a9ca3146102a55780632f2ff15d146102d657600080fd5b806301ffc9a7146101d25780630373a23a146102075780630a539a1914610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611b4a565b610637565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610227610222366004611b74565b610662565b005b34801561023557600080fd5b50610249610244366004611b74565b610680565b6040519081526020016101fe565b34801561026357600080fd5b506000546101f29060ff1681565b34801561027d57600080fd5b506102497f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b157600080fd5b506102496102c0366004611b74565b6000908152600160208190526040909120015490565b3480156102e257600080fd5b506102276102f1366004611ba2565b610738565b34801561030257600080fd5b50610227610311366004611bd2565b610763565b34801561032257600080fd5b50610227610331366004611ba2565b6107e1565b34801561034257600080fd5b50610227610351366004611bef565b610864565b610227610364366004611c1d565b610926565b34801561037557600080fd5b50600954610389906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b3480156103ad57600080fd5b5061024960075481565b3480156103c357600080fd5b5061024960065481565b3480156103d957600080fd5b50600354610389906001600160a01b031681565b3480156103f957600080fd5b50610389610408366004611c1d565b610d0e565b34801561041957600080fd5b506101f2610428366004611ba2565b610d26565b34801561043957600080fd5b50600454610389906001600160a01b031681565b34801561045957600080fd5b50610227610468366004611b74565b610d51565b34801561047957600080fd5b50610249600081565b34801561048e57600080fd5b50610249600080516020611f5b83398151915281565b3480156104b057600080fd5b506104b9610d6f565b60405167ffffffffffffffff90911681526020016101fe565b3480156104de57600080fd5b506102276104ed366004611c3f565b610e1d565b3480156104fe57600080fd5b5061024960085481565b34801561051457600080fd5b50610249610523366004611b74565b611037565b34801561053457600080fd5b50610227610543366004611ba2565b61104e565b34801561055457600080fd5b50610249610563366004611bd2565b611074565b610227611103565b34801561057c57600080fd5b5061022761058b366004611bd2565b61111c565b34801561059c57600080fd5b506105f56105ab366004611b74565b600560205260009081526040902080546001909101546001600160801b0380831692600160801b908190048216929182169164ffffffffff918104821691600160a81b9091041685565b604080516001600160801b0396871681529486166020860152929094169183019190915264ffffffffff9081166060830152909116608082015260a0016101fe565b60006001600160e01b03198216635a05180f60e01b148061065c575061065c82611157565b92915050565b600080516020611f5b83398151915261067a8161118c565b50600755565b6000818152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff908304811660608301819052600160a81b9093041660808201529082036106fa5750600092915050565b7f0000000000000000000000000000000000000000000000000000000000000000816060015164ffffffffff166107319190611c8d565b9392505050565b600082815260016020819052604090912001546107548161118c565b61075e8383611199565b505050565b6040516351cff8d960e01b81526001600160a01b0382811660048301527f000000000000000000000000000000000000000000000000000000000000000016906351cff8d990602401600060405180830381600087803b1580156107c657600080fd5b505af11580156107da573d6000803e3d6000fd5b5050505050565b6001600160a01b03811633146108565760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61086082826111bb565b5050565b60005460ff16156108c35760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b606482015260840161084d565b6000805460ff191660011781556108e0906108db3390565b611199565b6108f8600080516020611f5b83398151915233611199565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6003546001600160a01b0316336001600160a01b0316146109895760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e00604482015260640161084d565b60006127106008543461099c9190611ca0565b6109a69190611cd5565b905080156109c4576009546109c4906001600160a01b0316826111dd565b60006109d08234611ce9565b9050826000816101006109e561040080611ca0565b6109f190610400611ca0565b6109fc906008611ca0565b610a069190611cd5565b610a109085611ca0565b610a1a9190611cd5565b90506000610a288388611c8d565b90506000610100610a3b61040080611ca0565b610a4790610400611ca0565b610a52906008611ca0565b610a5c9190611cd5565b610a669089611cfc565b610100610a7561040080611ca0565b610a8190610400611ca0565b610a8c906008611ca0565b610a969190611cd5565b610aa09190611ce9565b905060006001610100610ab561040080611ca0565b610ac190610400611ca0565b610acc906008611ca0565b610ad69190611cd5565b610ae0848c611c8d565b610aea9190611cd5565b610af49190611ce9565b90506000610100610b0761040080611ca0565b610b1390610400611ca0565b610b1e906008611ca0565b610b289190611cd5565b610b33600186611ce9565b610b3d9190611cfc565b610b48906001611c8d565b90506000610100610b5b61040080611ca0565b610b6790610400611ca0565b610b72906008611ca0565b610b7c9190611cd5565b610b868387611ce9565b610b909190611cd5565b90506000610100610ba361040080611ca0565b610baf90610400611ca0565b610bba906008611ca0565b610bc49190611cd5565b610bcf836001611c8d565b610bd99190611ca0565b86149050818403610c02576000848152600560205260409020610bfd9034836112f6565b610d00565b610c5f610100610c1461040080611ca0565b610c2090610400611ca0565b610c2b906008611ca0565b610c359190611cd5565b610c3f878a611ca0565b610c499190611cd5565b60008681526005602052604090209060016112f6565b6000610c6c856001611c8d565b90505b82811015610ca3576000818152600560205260409020610c91908960016112f6565b80610c9b81611d10565b915050610c6f565b50610d00610100610cb661040080611ca0565b610cc290610400611ca0565b610ccd906008611ca0565b610cd79190611cd5565b610ce1858a611ca0565b610ceb9190611cd5565b600084815260056020526040902090836112f6565b505050505050505050505050565b6000828152600260205260408120610731908361142a565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611f5b833981519152610d698161118c565b50600855565b6000806104005b610d898167ffffffffffffffff16611436565b15610da357905080610d9c600282611d29565b9050610d76565b8067ffffffffffffffff168267ffffffffffffffff161015610e175760006002610dcd8484611d59565b610dd79190611d7a565b610de19084611da1565b9050610df68167ffffffffffffffff16611436565b15610e0d57610e06816001611da1565b9250610e11565b8091505b50610da3565b50919050565b6004546001600160a01b0316336001600160a01b031614610e805760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e00604482015260640161084d565b6000838152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff90830481166060830152600160a81b909204909116608082015290610ef482611456565b9050610f008282611482565b6000610f0b836114d1565b60008781526005602090815260408083208751928801516001600160801b03938416600160801b9185168202178255918801516001909101805460608a015160808b0151939095166001600160a81b03199091161764ffffffffff9485169093029290921764ffffffffff60a81b1916600160a81b9390911692909202919091179055909150610f9c878584611532565b905060008160065411610fb157600654610fb3565b815b9050610fbf8184611c8d565b92508060066000828254610fd39190611ce9565b9091555050821561102d57610fe88784611585565b866001600160a01b0316887f83617a1b0f847971f005bd162dde513cfe93df96e6293c3bbb5fe9c40629dd4c8560405161102491815260200190565b60405180910390a35b5050505050505050565b600081815260026020526040812061065c90611606565b6000828152600160208190526040909120015461106a8161118c565b61075e83836111bb565b6040516371d4ed8d60e11b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e3a9db1a90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065c9190611dc2565b34600660008282546111159190611c8d565b9091555050565b600080516020611f5b8339815191526111348161118c565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216637965db0b60e01b148061065c57506301ffc9a760e01b6001600160e01b031983161461065c565b6111968133611610565b50565b6111a38282611669565b600082815260026020526040902061075e90826116d4565b6111c582826116e9565b600082815260026020526040902061075e9082611750565b8047101561122d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161084d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461127a576040519150601f19603f3d011682016040523d82523d6000602084013e61127f565b606091505b505090508061075e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161084d565b6001600160801b0382111561133f5760405162461bcd60e51b815260206004820152600f60248201526e526577617264206f766572666c6f7760881b604482015260640161084d565b6001830154600160801b900464ffffffffff161561139f5760405162461bcd60e51b815260206004820181905260248201527f526577617264206974656d20686173206265656e20696e697469616c697a6564604482015260640161084d565b8254829084906000906113bc9084906001600160801b0316611ddb565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550801561075e575050600101805469ffffffffffffffffffff60801b1916600160801b4264ffffffffff1690810264ffffffffff60a81b191691909117600160a81b91909102179055565b60006107318383611765565b60008061144283610680565b905080158015906107315750421192915050565b600061065c827f000000000000000000000000000000000000000000000000000000000000000061178f565b80826000018181516114949190611dfb565b6001600160801b03169052506020820180518291906114b4908390611ddb565b6001600160801b03169052505064ffffffffff4216608090910152565b600080600283602001516114e59190611e1b565b905080836020018181516114f99190611dfb565b6001600160801b0316905250604083018051829190611519908390611ddb565b6001600160801b03908116909152919091169392505050565b6000427f0000000000000000000000000000000000000000000000000000000000000000846060015164ffffffffff1661156c9190611c8d565b111561157b5750600754610731565b5060009392505050565b60405163f340fa0160e01b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f340fa019083906024016000604051808303818588803b1580156115e957600080fd5b505af11580156115fd573d6000803e3d6000fd5b50505050505050565b600061065c825490565b61161a8282610d26565b6108605761162781611853565b611632836020611865565b604051602001611643929190611e59565b60408051601f198184030181529082905262461bcd60e51b825261084d91600401611ece565b6116738282610d26565b6108605760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610731836001600160a01b038416611a01565b6116f38282610d26565b156108605760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610731836001600160a01b038416611a50565b600082600001828154811061177c5761177c611f01565b9060005260206000200154905092915050565b6000826080015164ffffffffff166000036117ac5750600061065c565b6000836040015184602001516117c29190611ddb565b6001600160801b0316905060008185600001516001600160801b03166117e89190611c8d565b90506000856060015164ffffffffff16426118039190611ce9565b90506000856118128385611ca0565b61181c9190611cd5565b9050828111156118295750815b8381101561183e57600094505050505061065c565b6118488482611ce9565b979650505050505050565b606061065c6001600160a01b03831660145b60606000611874836002611ca0565b61187f906002611c8d565b67ffffffffffffffff81111561189757611897611f17565b6040519080825280601f01601f1916602001820160405280156118c1576020820181803683370190505b509050600360fc1b816000815181106118dc576118dc611f01565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061190b5761190b611f01565b60200101906001600160f81b031916908160001a905350600061192f846002611ca0565b61193a906001611c8d565b90505b60018111156119b2576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061196e5761196e611f01565b1a60f81b82828151811061198457611984611f01565b60200101906001600160f81b031916908160001a90535060049490941c936119ab81611f2d565b905061193d565b5083156107315760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161084d565b6000818152600183016020526040812054611a485750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561065c565b50600061065c565b60008181526001830160205260408120548015611b39576000611a74600183611ce9565b8554909150600090611a8890600190611ce9565b9050818114611aed576000866000018281548110611aa857611aa8611f01565b9060005260206000200154905080876000018481548110611acb57611acb611f01565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611afe57611afe611f44565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061065c565b600091505061065c565b5092915050565b600060208284031215611b5c57600080fd5b81356001600160e01b03198116811461073157600080fd5b600060208284031215611b8657600080fd5b5035919050565b6001600160a01b038116811461119657600080fd5b60008060408385031215611bb557600080fd5b823591506020830135611bc781611b8d565b809150509250929050565b600060208284031215611be457600080fd5b813561073181611b8d565b60008060408385031215611c0257600080fd5b8235611c0d81611b8d565b91506020830135611bc781611b8d565b60008060408385031215611c3057600080fd5b50508035926020909101359150565b600080600060608486031215611c5457600080fd5b833592506020840135611c6681611b8d565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b8082018082111561065c5761065c611c77565b6000816000190483118215151615611cba57611cba611c77565b500290565b634e487b7160e01b600052601260045260246000fd5b600082611ce457611ce4611cbf565b500490565b8181038181111561065c5761065c611c77565b600082611d0b57611d0b611cbf565b500690565b600060018201611d2257611d22611c77565b5060010190565b600067ffffffffffffffff80831681851681830481118215151615611d5057611d50611c77565b02949350505050565b67ffffffffffffffff828116828216039080821115611b4357611b43611c77565b600067ffffffffffffffff80841680611d9557611d95611cbf565b92169190910492915050565b67ffffffffffffffff818116838216019080821115611b4357611b43611c77565b600060208284031215611dd457600080fd5b5051919050565b6001600160801b03818116838216019080821115611b4357611b43611c77565b6001600160801b03828116828216039080821115611b4357611b43611c77565b60006001600160801b0380841680611d9557611d95611cbf565b60005b83811015611e50578181015183820152602001611e38565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611e91816017850160208801611e35565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611ec2816028840160208801611e35565b01602801949350505050565b6020815260008251806020840152611eed816040850160208701611e35565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600081611f3c57611f3c611c77565b506000190190565b634e487b7160e01b600052603160045260246000fdfeb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a264697066735822122011623615efde74e54e33006a7cf6893b47d34d216d6fcddd126b275916f5bd9e64736f6c63430008100033", "linkReferences": {}, "deployedLinkReferences": {} }