0 txs
367 calls
constructor
No constructor.
functions
activeField
viewfunction activeField() view returns (uint256)
balanceOfPods
viewfunction balanceOfPods(address account, uint256 fieldId) view returns (uint256 pods)
beanSown
viewfunction beanSown() view returns (uint256)
fieldCount
viewfunction fieldCount() view returns (uint256)
floodHarvestablePods
viewfunction floodHarvestablePods() view returns (uint256)
getPlotIndexesFromAccount
viewfunction getPlotIndexesFromAccount(address account, uint256 fieldId) view returns (uint256[] plotIndexes)
getPlotsFromAccount
viewfunction getPlotsFromAccount(address account, uint256 fieldId) view returns (tuple[] plots)
getSoilMostlySoldOutThreshold
viewfunction getSoilMostlySoldOutThreshold() view returns (uint256)
getSoilSoldOutThreshold
viewfunction getSoilSoldOutThreshold() view returns (uint256)
harvestableIndex
viewfunction harvestableIndex(uint256 fieldId) view returns (uint256)
initialSoil
viewfunction initialSoil() view returns (uint256)
isHarvesting
viewfunction isHarvesting(uint256 fieldId) view returns (bool)
maxTemperature
viewfunction maxTemperature() view returns (uint256)
plot
viewfunction plot(address account, uint256 fieldId, uint256 index) view returns (uint256)
podIndex
viewfunction podIndex(uint256 fieldId) view returns (uint256)
remainingPods
viewfunction remainingPods() view returns (uint256)
temperature
viewfunction temperature() view returns (uint256)
totalHarvestable
viewfunction totalHarvestable(uint256 fieldId) view returns (uint256)
totalHarvestableForActiveField
viewfunction totalHarvestableForActiveField() view returns (uint256)
totalHarvested
viewfunction totalHarvested(uint256 fieldId) view returns (uint256)
totalPods
viewfunction totalPods(uint256 fieldId) view returns (uint256)
totalSoil
viewfunction totalSoil() view returns (uint256)
totalUnharvestable
viewfunction totalUnharvestable(uint256 fieldId) view returns (uint256)
totalUnharvestableForActiveField
viewfunction totalUnharvestableForActiveField() view returns (uint256)
addField
nonpayablefunction addField()
harvest
payablefunction harvest(uint256 fieldId, uint256[] plots, uint8 mode) payable returns (uint256 beansHarvested)
setActiveField
nonpayablefunction setActiveField(uint256 fieldId, uint32 _temperature)
sow
payablefunction sow(uint256 beans, uint256 minTemperature, uint8 mode) payable returns (uint256 pods)
sowWithMin
payablefunction sowWithMin(uint256 beans, uint256 minTemperature, uint256 minSoil, uint8 mode) payable returns (uint256 pods)
events
ActiveFieldSet
event ActiveFieldSet(uint256 fieldId)
FieldAdded
event FieldAdded(uint256 fieldId)
Harvest
event Harvest(address indexed account, uint256 fieldId, uint256[] plots, uint256 beans)
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
PodListingCancelled
event PodListingCancelled(address indexed lister, uint256 fieldId, uint256 index)
SoilMostlySoldOut
event SoilMostlySoldOut(uint256 secondsSinceStart)
SoilSoldOut
event SoilSoldOut(uint256 secondsSinceStart)
Sow
event Sow(address indexed account, uint256 fieldId, uint256 index, uint256 beans, uint256 pods)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)
PRBMathUD60x18__LogInputTooSmall
error PRBMathUD60x18__LogInputTooSmall(uint256 x)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600f57600080fd5b5061409f8061001f6000396000f3fe6080604052600436106101825760003560e01c806383fdddec116100d7578063b94e871c11610085578063b94e871c14610421578063bb485bbd14610436578063ccda40b91461044b578063d1eba54414610477578063d72545771461048c578063e9bbb033146104aa578063f1e0a211146104bd578063f29ffe94146104dd57600080fd5b806383fdddec1461034657806391b242841461035b5780639a337c1d146103885780639ee7ea12146103a8578063adccea12146103c8578063b511654d146103dd578063b60327211461040c57600080fd5b806332ab68ce1161013457806332ab68ce14610269578063352525a61461027c5780634bea67c4146102ab5780635487cc45146102db578063553030d0146102f957806356ba3e241461030c5780637907091f1461032157600080fd5b8063057c571b146101875780630b1d5412146101a957806317bb8f9e146101dd578063237dbac5146101f2578063253fcfb5146102075780632e76f597146102345780633285008a14610254575b600080fd5b34801561019357600080fd5b506101a76101a236600461395d565b6104fd565b005b3480156101b557600080fd5b50600654600160801b90046001600160801b03165b6040519081526020015b60405180910390f35b3480156101e957600080fd5b506101ca610856565b3480156101fe57600080fd5b506101ca610873565b34801561021357600080fd5b506102276102223660046139ab565b610898565b6040516101d491906139d7565b34801561024057600080fd5b506101ca61024f366004613a1b565b610912565b34801561026057600080fd5b506101ca610934565b6101ca610277366004613a43565b610989565b34801561028857600080fd5b506101ca610297366004613a1b565b600090815260208052604090206001015490565b3480156102b757600080fd5b506102cb6102c6366004613a1b565b610c2f565b60405190151581526020016101d4565b3480156102e757600080fd5b506006546001600160801b03166101ca565b6101ca610307366004613a78565b610c42565b34801561031857600080fd5b506101ca610ee9565b34801561032d57600080fd5b5060e154600160c01b90046001600160401b03166101ca565b34801561035257600080fd5b506101ca610ef3565b34801561036757600080fd5b5061037b6103763660046139ab565b610f1f565b6040516101d49190613ab7565b34801561039457600080fd5b506101ca6103a33660046139ab565b61109d565b3480156103b457600080fd5b506101ca6103c3366004613b06565b611180565b3480156103d457600080fd5b506101ca6111b5565b3480156103e957600080fd5b506101ca6103f8366004613a1b565b600090815260208052604090206002015490565b34801561041857600080fd5b506101ca6111bf565b34801561042d57600080fd5b506101a76111e0565b34801561044257600080fd5b506008546101ca565b34801561045757600080fd5b506101ca610466366004613a1b565b600090815260208052604090205490565b34801561048357600080fd5b506007546101ca565b34801561049857600080fd5b5060ee546001600160801b03166101ca565b6101ca6104b8366004613b3b565b6114a8565b3480156104c957600080fd5b506101ca6104d8366004613a1b565b611761565b3480156104e957600080fd5b506101ca6104f8366004613a1b565b61177f565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056b9190613bd0565b60c454909150600061057b61179d565b90506000610588826118d1565b600354909150600119016105b75760405162461bcd60e51b81526004016105ae90613be9565b60405180910390fd5b60026003556105c46119d5565b60085486106106155760405162461bcd60e51b815260206004820152601b60248201527f4669656c643a204669656c6420646f6573206e6f74206578697374000000000060448201526064016105ae565b600786905560e1805463ffffffff60801b63ffffffff60a01b6001600160a01b0390921663ffffffff8916600160c01b0263ffffffff60a01b191617919091176001600160a01b0319161790556040518681527f321faeb9c95b0ccaaaea362d3b3661a45664fa7150bbffc794abe79b6f3492769060200160405180910390a1600160035560006106a5836118d1565b905083600060c4015410156106cc5760405162461bcd60e51b81526004016105ae90613c20565b60005b8351811015610731578181815181106106ea576106ea613c57565b602002602001015183828151811061070457610704613c57565b6020026020010151146107295760405162461bcd60e51b81526004016105ae90613c6d565b6001016106cf565b50505050508061073f600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190613bd0565b146107cb5760405162461bcd60e51b81526004016105ae90613cb1565b5060006107d661179d565b90506000806107e483611a6b565b9150915060005b835181101561084e5782818151811061080657610806613c57565b602002602001015182828151811061082057610820613c57565b602002602001015110156108465760405162461bcd60e51b81526004016105ae90613cde565b6001016107eb565b505050505050565b600a5460009061086e906001600160801b0316611e7d565b905090565b60075460009081526020805260408120600181015460029091015461086e9190613d2b565b6001600160a01b03821660009081526020818152604080832084845260150182529182902060020180548351818402810184019094528084526060939283018282801561090457602002820191906000526020600020905b8154815260200190600101908083116108f0575b505050505090505b92915050565b60008181526020805260408120600181015460029091015461090c9190613d2b565b60d454600090600160c81b900460ff1661095857506006546001600160801b031690565b60065460e15461086e916001600160801b031690600160c01b90046001600160401b0316610984611ea8565b611f3f565b6000808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc9190613bd0565b6001549091506001600160a01b03166000610a1561179d565b90506000610a22826118d1565b60035490915060011901610a485760405162461bcd60e51b81526004016105ae90613be9565b6002600355610a5988888189611f7d565b945060016003556000610a6b836118d1565b905060005b8351811015610b0657846001600160a01b0316848281518110610a9557610a95613c57565b60200260200101516001600160a01b03160315610afe57818181518110610abe57610abe613c57565b6020026020010151838281518110610ad857610ad8613c57565b60200260200101511115610afe5760405162461bcd60e51b81526004016105ae90613d3e565b600101610a70565b505050505080610b14600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190613bd0565b1115610ba15760405162461bcd60e51b81526004016105ae90613d8f565b506000610bac61179d565b9050600080610bba83611a6b565b9150915060005b8351811015610c2457828181518110610bdc57610bdc613c57565b6020026020010151828281518110610bf657610bf6613c57565b60200260200101511015610c1c5760405162461bcd60e51b81526004016105ae90613cde565b600101610bc1565b505050509392505050565b600080610c3b8361177f565b1192915050565b6000808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb59190613bd0565b6001549091506001600160a01b03166000610cce61179d565b90506000610cdb826118d1565b60035490915060011901610d015760405162461bcd60e51b81526004016105ae90613be9565b6002600355610d1289898989611f7d565b945060016003556000610d24836118d1565b905060005b8351811015610dbf57846001600160a01b0316848281518110610d4e57610d4e613c57565b60200260200101516001600160a01b03160315610db757818181518110610d7757610d77613c57565b6020026020010151838281518110610d9157610d91613c57565b60200260200101511115610db75760405162461bcd60e51b81526004016105ae90613d3e565b600101610d29565b505050505080610dcd600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3c9190613bd0565b1115610e5a5760405162461bcd60e51b81526004016105ae90613d8f565b506000610e6561179d565b9050600080610e7383611a6b565b9150915060005b8351811015610edd57828181518110610e9557610e95613c57565b6020026020010151828281518110610eaf57610eaf613c57565b60200260200101511015610ed55760405162461bcd60e51b81526004016105ae90613cde565b600101610e7a565b50505050949350505050565b600061086e612058565b600a546000906001600160801b031681610f0c82611e7d565b9050610f1882826120c1565b9250505090565b6001600160a01b0382166000908152602081815260408083208484526015018252808320600201805482518185028101850190935280835260609493830182828015610f8a57602002820191906000526020600020905b815481526020019060010190808311610f76575b505050505090508051600003610fa0575061090c565b80516001600160401b03811115610fb957610fb9613dbe565b604051908082528060200260200182016040528015610ffe57816020015b6040805180820190915260008082526020820152815260200190600190039081610fd75790505b50915060005b815181101561109557600082828151811061102157611021613c57565b6020908102919091018101516040805180820182528281526001600160a01b038a1660009081528085528281208a825260150185528281208482528552919091205492810192909252855190925085908490811061108157611081613c57565b602090810291909101015250600101611004565b505092915050565b6001600160a01b03821660009081526020818152604080832084845260150182528083206002018054825181850281018501909352808352849383018282801561110657602002820191906000526020600020905b8154815260200190600101908083116110f2575b5050505050905060005b8151811015611095576001600160a01b0385166000908152602081815260408083208784526015019091528120835190919084908490811061115457611154613c57565b6020026020010151815260200190815260200160002054836111769190613dd4565b9250600101611110565b6001600160a01b03831660009081526020818152604080832085845260150182528083208484529091529020545b9392505050565b600061086e611ea8565b600754600090815260208052604081206002810154905461086e9190613d2b565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190613bd0565b60c454909150600061125e61179d565b9050600061126b826118d1565b600354909150600119016112915760405162461bcd60e51b81526004016105ae90613be9565b600260035561129e6119d5565b6008805490819060006112b083613de7565b90915550506040518181527fe0787a1e9106428db986fa2956ffad041bbaad7f5b962f942a0a59c20f91288e9060200160405180910390a150600160035560006112f9836118d1565b905083600060c4015410156113205760405162461bcd60e51b81526004016105ae90613c20565b60005b83518110156113855781818151811061133e5761133e613c57565b602002602001015183828151811061135857611358613c57565b60200260200101511461137d5760405162461bcd60e51b81526004016105ae90613c6d565b600101611323565b505050505080611393600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156113de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114029190613bd0565b1461141f5760405162461bcd60e51b81526004016105ae90613cb1565b50600061142a61179d565b905060008061143883611a6b565b9150915060005b83518110156114a25782818151811061145a5761145a613c57565b602002602001015182828151811061147457611474613c57565b6020026020010151101561149a5760405162461bcd60e51b81526004016105ae90613cde565b60010161143f565b50505050565b6000808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190613bd0565b6001549091506001600160a01b0316600061153461179d565b90506000611541826118d1565b600354909150600119016115675760405162461bcd60e51b81526004016105ae90613be9565b60026003556115778989896120ff565b600154909550611599906001600160a01b031686611593612241565b8961228d565b600160035560006115a9836118d1565b905060005b835181101561164457846001600160a01b03168482815181106115d3576115d3613c57565b60200260200101516001600160a01b0316031561163c578181815181106115fc576115fc613c57565b602002602001015183828151811061161657611616613c57565b6020026020010151111561163c5760405162461bcd60e51b81526004016105ae90613d3e565b6001016115ae565b505050505080611652600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c19190613bd0565b146116de5760405162461bcd60e51b81526004016105ae90613cb1565b5060006116e961179d565b90506000806116f783611a6b565b9150915060005b8351811015610edd5782818151811061171957611719613c57565b602002602001015182828151811061173357611733613c57565b602002602001015110156117595760405162461bcd60e51b81526004016105ae90613cde565b6001016116fe565b600081815260208052604081206001810154905461090c9190613d2b565b600081815260208052604081206002810154905461090c9190613d2b565b606060006117a96122d0565b905060006117b56123d5565b90506000815183516117c79190613dd4565b9050806001600160401b038111156117e1576117e1613dbe565b60405190808252806020026020018201604052801561180a578160200160208202803683370190505b50935060005b83518110156118655783818151811061182b5761182b613c57565b602002602001015185828151811061184557611845613c57565b6001600160a01b0390921660209283029190910190910152600101611810565b5060005b82518110156118ca5782818151811061188457611884613c57565b60200260200101518582865161189a9190613dd4565b815181106118aa576118aa613c57565b6001600160a01b0390921660209283029190910190910152600101611869565b5050505090565b606081516001600160401b038111156118ec576118ec613dbe565b604051908082528060200260200182016040528015611915578160200160208202803683370190505b50905060005b82518110156119cf5782818151811061193657611936613c57565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016119699190613e00565b602060405180830381865afa158015611986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119aa9190613bd0565b8282815181106119bc576119bc613c57565b602090810291909101015260010161191b565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600401546001600160a01b0316331480611a0f57503330145b611a695760405162461bcd60e51b815260206004820152602560248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f722060448201526437bbb732b960d91b60648201526084016105ae565b565b606080600083516001600160401b03811115611a8957611a89613dbe565b604051908082528060200260200182016040528015611ab2578160200160208202803683370190505b50925083516001600160401b03811115611ace57611ace613dbe565b604051908082528060200260200182016040528015611af7578160200160208202803683370190505b50915060005b8451811015611e765781600101601b016000868381518110611b2157611b21613c57565b6020908102919091018101516001600160a01b031682528101919091526040016000908120549060ca840190600181526020019081526020016000206000878481518110611b7157611b71613c57565b6020908102919091018101516001600160a01b031682528101919091526040016000908120546001600160801b03169060ca8501908081526020019081526020016000206000888581518110611bc957611bc9613c57565b6020908102919091018101516001600160a01b0316825281019190915260400160009081205488516001600160801b039091169160c78701918a9087908110611c1457611c14613c57565b6020908102919091018101516001600160a01b0316825281019190915260400160002054611c4b91906001600160801b0316613e2a565b611c559190613e2a565b6001600160801b0316611c689190613dd4565b848281518110611c7a57611c7a613c57565b6020908102919091010152600182015485516001600160a01b0390911690869083908110611caa57611caa613c57565b60200260200101516001600160a01b031603611d58578160010160080154848281518110611cda57611cda613c57565b60200260200101818151611cee9190613dd4565b90525060005b6008830154811015611d5657600081815260208085019052604090206001810154600290910154611d259190613d2b565b858381518110611d3757611d37613c57565b60200260200101818151611d4b9190613dd4565b905250600101611cf4565b505b81600101610101016000016000868381518110611d7757611d77613c57565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054848281518110611db257611db2613c57565b60200260200101818151611dc69190613dd4565b9052508451859082908110611ddd57611ddd613c57565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611e109190613e00565b602060405180830381865afa158015611e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e519190613bd0565b838281518110611e6357611e63613c57565b6020908102919091010152600101611afd565b5050915091565b600061090c6302faf0806305f5e100611e996298968086613e51565b611ea39190613e7e565b612443565b60e15460d7546000918291600160c01b9091046001600160401b0316908290421115611ee05760d7830154611edd9042613d2b565b90505b60e2830154600160801b900461ffff16808210611f005750909392505050565b6000611f0d848385612459565b9050611f1a606485613e7e565b811015611f3657611f2c606485613e7e565b9550505050505090565b95945050505050565b6000611f75611f5c611f55620f42406064613e51565b85906124db565b611f6d611f55620f42406064613e51565b8691906124e7565b949350505050565b600080600080611f8b6125b4565b925092509250858310158015611fa15750858810155b611fe45760405162461bcd60e51b81526020600482015260146024820152734669656c643a20536f696c20536c69707061676560601b60448201526064016105ae565b868210156120345760405162461bcd60e51b815260206004820152601b60248201527f4669656c643a2054656d706572617475726520536c697070616765000000000060448201526064016105ae565b82881015612040578792505b61204c83838388612626565b98975050505050505050565b60d4546000908190600160c81b900460ff16156120a257600681015460e182015461209c916001600160801b031690600160c01b90046001600160401b03166126bb565b91505090565b600681015461209c906001600160801b03166120bc611ea8565b6126bb565b6000816305f5e1006301312d006120d786611e7d565b6120e19087613d2b565b6120eb9190613e51565b6120f59190613e7e565b6111ae9190613dd4565b6000805b828110156121c557600085815260208052604090206002015484848381811061212e5761212e613c57565b90506020020135106121825760405162461bcd60e51b815260206004820152601b60248201527f4669656c643a20506c6f74206e6f74204861727665737461626c65000000000060448201526064016105ae565b60006121ae61218f612241565b878787868181106121a2576121a2613c57565b905060200201356126ee565b90506121ba8184613dd4565b925050600101612103565b506000848152602080526040812060010180548392906121e6908490613dd4565b909155506121f49050612241565b6001600160a01b03167f291f1f0a12949a2a5e0e2a43aa545e7f90b9ea1de10409a053002c795e2329f6858585856040516122329493929190613ea0565b60405180910390a29392505050565b60006122747f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b0382161161228a5750335b90565b82156114a25760018160018111156122a7576122a7613e14565b036122bc576122b782858561287e565b6114a2565b6114a26001600160a01b03851683856128b5565b60c95460609060009081816001600160401b038111156122f2576122f2613dbe565b60405190808252806020026020018201604052801561231b578160200160208202803683370190505b50935060005b828110156123cb5760c9840180548290811061233f5761233f613c57565b600091825260209091200154600160a01b900460ff16156123c35760c9840180548290811061237057612370613c57565b6000918252602090912001546001600160a01b0316858361239081613de7565b9450815181106123a2576123a2613c57565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612321565b5080845250505090565b606060006123e1612919565b905060005b81518110156119cf5761241182828151811061240457612404613c57565b6020026020010151612a14565b82828151811061242357612423613c57565b6001600160a01b03909216602092830291909101909101526001016123e6565b600081831061245257816111ae565b5090919050565b60e25460009081906001600160801b03166124a5670de0b6b3a76400008083612482828a613e51565b61248c9190613e51565b6124969190613e7e565b6124a09190613dd4565b612aa9565b6124bd670de0b6b3a76400008084612482828a613e51565b6124c79088613e51565b6124d19190613e7e565b9695505050505050565b60006111ae8284613dd4565b60008080600019858709858702925082811083820303915050806000036125215783828161251757612517613e68565b04925050506111ae565b83811061254b57604051631dcf306360e21b815260048101829052602481018590526044016105ae565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008080806125c1611ea8565b60d4820154909350600160c81b900460ff169150816125ef5760068101546001600160801b03169350612620565b600681015460e182015461261d916001600160801b031690600160c01b90046001600160401b031685611f3f565b93505b50909192565b600154600090819061264a906001600160a01b031687612644612241565b86612b5f565b955061265f8686612659612241565b87612c48565b915061266a86612e71565b60068201805460109061268e908490600160801b90046001600160801b0316613e2a565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050949350505050565b60006111ae6126d86126d1620f42406064613e51565b84906124db565b6126e6620f42406064613e51565b8591906124e7565b6001600160a01b0383166000908152602081815260408083208584526015018252808320848452909152812054806127595760405162461bcd60e51b815260206004820152600e60248201526d119a595b190e881b9bc81c1b1bdd60921b60448201526064016105ae565b60008481526020805260409020600201546127749084612ea9565b9150612788612781612241565b8585612eb5565b6001600160a01b03851660009081526020818152604080832087845260150182528083208684529091528120556127c0858585612fa6565b8082106127ce5790506111ae565b60006127da84846124db565b90506127e68284612ea9565b6001600160a01b038716600090815260208181526040808320898452601501808352818420868552808452918420949094556002018054600181810183558285528385209091018690559289905292905290546128439190613d2b565b6001600160a01b0387166000908152602081815260408083208984526015018252808320948352600390940190529190912055509392505050565b600061288a84846130b3565b9050600061289882846124db565b90506128ae8585836128a9876130e0565b61310d565b5050505050565b6040516001600160a01b0383811660248301526044820183905261291491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061320f565b505050565b60c95460609060009081816001600160401b0381111561293b5761293b613dbe565b604051908082528060200260200182016040528015612964578160200160208202803683370190505b50935060005b828110156123cb5760c9840180548290811061298857612988613c57565b600091825260209091200154600160b81b900460ff1615612a0c5760c984018054829081106129b9576129b9613c57565b6000918252602090912001546001600160a01b031685836129d981613de7565b9450815181106129eb576129eb613c57565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161296a565b600080826001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a7d9190810190613ef1565b905080612a8982613269565b81518110612a9957612a99613c57565b6020026020010151915050919050565b6000670de0b6b3a7640000821015612ad757604051633621413760e21b8152600481018390526024016105ae565b6000612aec670de0b6b3a764000084046132fb565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff198101612b15575050919050565b6706f05b59d3b200005b8015612b5757670de0b6b3a7640000828002049150671bc16d674ec800008210612b4f579283019260019190911c905b60011c612b1f565b505050919050565b600080826003811115612b7457612b74613e14565b03612be35760405163079cc67960e41b81526001600160a01b038481166004830152602482018690528616906379cc679090604401600060405180830381600087803b158015612bc357600080fd5b505af1158015612bd7573d6000803e3d6000fd5b50505050839050611f75565b612bef858585856133df565b604051630852cd8d60e31b8152600481018290529091506001600160a01b038616906342966c6890602401600060405180830381600087803b158015612c3457600080fd5b505af1158015610edd573d6000803e3d6000fd5b600754600090819081808515612c8c5760e1840154600160c01b90046001600160401b0316612c788a8a83613565565b9150612c8482826126bb565b925050612c9b565b5087612c9881896126bb565b91505b60008211612ceb5760405162461bcd60e51b815260206004820152601b60248201527f506f6473206d7573742062652067726561746572207468616e2030000000000060448201526064016105ae565b60068401546001600160801b0316811115612d17576006840180546001600160801b0319169055612d52565b6006840154612d2f906001600160801b031682613596565b6006850180546001600160801b0319166001600160801b03929092169190911790555b6000838152602080860181526040808320546001600160a01b038b16845287835281842087855260150180845282852082865280855292852087905560029092018054600181810183558287528587209091018390559488905291909252549091612dbc91613d2b565b6001600160a01b038916600081815260208881526040808320898452601501825280832086845260030182529182902093909355805187815292830184905282018c905260608201859052907fbc306f0d3e2a09c671ab461f3f17c7d67439ddecd71086f1b959f3bf7c99b4b19060800160405180910390a2600084815260208087019052604081208054859290612e55908490613dd4565b90915550612e6390506135a2565b509098975050505050505050565b60006001600160801b03821115612ea5576040516306dfcc6560e41b815260806004820152602481018390526044016105ae565b5090565b60006111ae8284613d2b565b6001600160a01b0383166000908152602081815260408083208584526015018252808320848452909152812054612f405760405162461bcd60e51b815260206004820152602960248201527f4d61726b6574706c6163653a204c697374696e67206e6f74206f776e656420626044820152683c9039b2b73232b91760b91b60648201526084016105ae565b6000838152601a82016020908152604080832085845282528083209290925581518581529081018490526001600160a01b038616917f4b0619de736a4127da55b6139ca00a79ef95704d2736332cdee8c8035eb892d3910160405180910390a250505050565b6001600160a01b038316600090815260208181526040808320858452601501808352818420858552600381018452918420548685529252600281018054612fef90600190613d2b565b81548110612fff57612fff613c57565b906000526020600020015481600201838154811061301f5761301f613c57565b90600052602060002001819055508181600301600083600201858154811061304957613049613c57565b9060005260206000200154815260200190815260200160002081905550600019816003016000868152602001908152602001600020819055508060020180548061309557613095613fa9565b60019003818190600052602060002001600090559055505050505050565b6001600160a01b03918216600090815260208181526040808320939094168252601b909201909152205490565b60006001600160ff1b03821115612ea55760405163123baf0360e11b8152600481018390526024016105ae565b6000808212156131665761314461312383613fbf565b6001600160a01b0386166000908152601c8401602052604090205490612ea9565b6001600160a01b0385166000908152601c8301602052604090208190556131a9565b6001600160a01b0384166000908152601c8201602052604090205461318b90836124db565b6001600160a01b0385166000908152601c8301602052604090208190555b506001600160a01b03858116600081815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42910160405180910390a35050505050565b60006132246001600160a01b03841683613706565b905080516000141580156132495750808060200190518101906132479190613fdb565b155b156129145782604051635274afe760e01b81526004016105ae9190613e00565b6000805b82518210156132bb5782828151811061328857613288613c57565b602090810291909101015160018201546001600160a01b039081169116146132b05750919050565b81600101915061326d565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b60448201526064016105ae565b6000600160801b821061331b57608091821c916133189082613dd4565b90505b600160401b821061333957604091821c916133369082613dd4565b90505b640100000000821061335857602091821c916133559082613dd4565b90505b62010000821061337557601091821c916133729082613dd4565b90505b610100821061339157600891821c9161338e9082613dd4565b90505b601082106133ac57600491821c916133a99082613dd4565b90505b600482106133c757600291821c916133c49082613dd4565b90505b600282106133da5761090c600182613dd4565b919050565b6000836000036133f157506000611f75565b600082600381111561340557613405613e14565b146134515761342b838686600186600381111561342457613424613e14565b1415613714565b90508084148061344c5750600382600381111561344a5761344a613e14565b145b611f75575b6040516370a0823160e01b81526000906001600160a01b038716906370a0823190613480903090600401613e00565b602060405180830381865afa15801561349d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c19190613bd0565b90506134e484306134d28589613d2b565b6001600160a01b038a169291906137c6565b6124d161355e82886001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016135179190613e00565b602060405180830381865afa158015613534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135589190613bd0565b90612ea9565b83906124db565b6000611f7561357b611f55620f42406064613e51565b61358c611f55620f42406064613e51565b86919060016137ff565b60006111ae8284613ffd565b600a5460065460e1546000926001600160801b03908116921690600160a01b900463ffffffff16836135d384611e7d565b905060006135e185836120c1565b905080841115801561360757506135fd600163ffffffff61401d565b63ffffffff168310155b1561084e5763fffffffe19830161369b5781841061369b5761362e600163ffffffff61401d565b60e18701805463ffffffff60a01b1916600160a01b63ffffffff9384160217905560d78701547fd0c4dfb09b52bea8b5e7c334f71422df7109dec0523df44962ad951304e957b191613682914291612ea916565b60405190815260200160405180910390a1505050505050565b81841161084e5760d78601546136b2904290612ea9565b60e18701805463ffffffff60a01b1916600160a01b63ffffffff9384160217905560d78701547f54b1b29d3a7533bee561556cfbf59ca967d0a6a2fda087ae3033728465031e1491613682914291612ea916565b60606111ae83836000613850565b60008061372186866130b3565b9050828061372f5750838110155b61378a5760405162461bcd60e51b815260206004820152602660248201527f42616c616e63653a20496e73756666696369656e7420696e7465726e616c2062604482015265616c616e636560d01b60648201526084016105ae565b6137948185612443565b915060006137a28383613d2b565b90506137bc8787836137b3876130e0565b6128a990613fbf565b5050949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526114a29186918216906323b872dd906084016128e2565b60008061380d8686866124e7565b9050600183600281111561382357613823613e14565b14801561384057506000848061383b5761383b613e68565b868809115b15611f36576124d1600182613dd4565b606081471015613875573060405163cd78605960e01b81526004016105ae9190613e00565b600080856001600160a01b03168486604051613891919061403a565b60006040518083038185875af1925050503d80600081146138ce576040519150601f19603f3d011682016040523d82523d6000602084013e6138d3565b606091505b50915091506124d18683836060826138f3576138ee82613931565b6111ae565b815115801561390a57506001600160a01b0384163b155b1561392a5783604051639996b31560e01b81526004016105ae9190613e00565b50806111ae565b8051156139415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6000806040838503121561397057600080fd5b82359150602083013563ffffffff8116811461398b57600080fd5b809150509250929050565b6001600160a01b038116811461395a57600080fd5b600080604083850312156139be57600080fd5b82356139c981613996565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015613a0f578351835292840192918401916001016139f3565b50909695505050505050565b600060208284031215613a2d57600080fd5b5035919050565b8035600481106133da57600080fd5b600080600060608486031215613a5857600080fd5b8335925060208401359150613a6f60408501613a34565b90509250925092565b60008060008060808587031215613a8e57600080fd5b843593506020850135925060408501359150613aac60608601613a34565b905092959194509250565b602080825282518282018190526000919060409081850190868401855b82811015613af957815180518552860151868501529284019290850190600101613ad4565b5091979650505050505050565b600080600060608486031215613b1b57600080fd5b8335613b2681613996565b95602085013595506040909401359392505050565b60008060008060608587031215613b5157600080fd5b8435935060208501356001600160401b0380821115613b6f57600080fd5b818701915087601f830112613b8357600080fd5b813581811115613b9257600080fd5b8860208260051b8501011115613ba757600080fd5b602083019550809450505050604085013560028110613bc557600080fd5b939692955090935050565b600060208284031215613be257600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561090c5761090c613d15565b60208082526031908201527f494e563a206f6e654f7574466c6f77206d756c7469706c6520746f6b656e2062604082015270185b185b98d95cc8191958dc99585cd959607a1b606082015260800190565b6020808252601590820152741253958e8814dd5c1c1b1e481a5b98dc99585cd959605a1b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b8082018082111561090c5761090c613d15565b600060018201613df957613df9613d15565b5060010190565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052602160045260246000fd5b6001600160801b03818116838216019080821115613e4a57613e4a613d15565b5092915050565b808202811582820484141761090c5761090c613d15565b634e487b7160e01b600052601260045260246000fd5b600082613e9b57634e487b7160e01b600052601260045260246000fd5b500490565b848152606060208201819052810183905260006001600160fb1b03841115613ec757600080fd5b8360051b80866080850137604083019390935250016080019392505050565b80516133da81613996565b60006020808385031215613f0457600080fd5b82516001600160401b0380821115613f1b57600080fd5b818501915085601f830112613f2f57600080fd5b815181811115613f4157613f41613dbe565b8060051b604051601f19603f83011681018181108582111715613f6657613f66613dbe565b604052918252848201925083810185019188831115613f8457600080fd5b938501935b8285101561204c57613f9a85613ee6565b84529385019392850192613f89565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b8201613fd457613fd4613d15565b5060000390565b600060208284031215613fed57600080fd5b815180151581146111ae57600080fd5b6001600160801b03828116828216039080821115613e4a57613e4a613d15565b63ffffffff828116828216039080821115613e4a57613e4a613d15565b6000825160005b8181101561405b5760208186018101518583015201614041565b50600092019182525091905056fea2646970667358221220b4ce68a25afd568c6875ef0f3aba8f106d50985246e9ac4894646d5a956fd92964736f6c63430008190033