2 txs
9 calls
constructor
constructor(address _iweth)
functions
book
viewfunction book(uint256) view returns (uint64 id, uint32 status, uint32 time, uint32 filledTime, uint256 srcFilledAmount, address maker, tuple ask, tuple bid)
iweth
viewfunction iweth() view returns (address)
length
viewfunction length() view returns (uint64)
makerOrders
viewfunction makerOrders(address, uint256) view returns (uint64)
MIN_BID_DELAY_SECONDS
viewfunction MIN_BID_DELAY_SECONDS() view returns (uint32)
MIN_OUTBID_PERCENT
viewfunction MIN_OUTBID_PERCENT() view returns (uint32)
order
viewfunction order(uint64 id) view returns (tuple)
orderIdsByMaker
viewfunction orderIdsByMaker(address maker) view returns (uint64[])
PERCENT_BASE
viewfunction PERCENT_BASE() view returns (uint32)
STALE_BID_SECONDS
viewfunction STALE_BID_SECONDS() view returns (uint32)
STATUS_CANCELED
viewfunction STATUS_CANCELED() view returns (uint32)
STATUS_COMPLETED
viewfunction STATUS_COMPLETED() view returns (uint32)
status
viewfunction status(uint256) view returns (uint32)
VERSION
viewfunction VERSION() view returns (uint8)
ask
nonpayablefunction ask(tuple _ask) returns (uint64 id)
bid
nonpayablefunction bid(uint64 id, address exchange, uint256 dstFee, uint32 slippagePercent, bytes data)
cancel
nonpayablefunction cancel(uint64 id)
fill
nonpayablefunction fill(uint64 id)
prune
nonpayablefunction prune(uint64 id)
events
OrderBid
event OrderBid(uint64 indexed id, address indexed maker, address indexed exchange, uint32 slippagePercent, (uint32 time, address taker, address exchange, uint256 dstAmount, uint256 dstFee, bytes data) bid)
OrderCanceled
event OrderCanceled(uint64 indexed id, address indexed maker, address sender)
OrderCompleted
event OrderCompleted(uint64 indexed id, address indexed maker, address indexed exchange, address taker)
OrderCreated
event OrderCreated(uint64 indexed id, address indexed maker, address indexed exchange, (address exchange, address srcToken, address dstToken, uint256 srcAmount, uint256 srcBidAmount, uint256 dstMinAmount, uint32 deadline, uint32 bidDelay, uint32 fillDelay, bytes data) ask)
OrderFilled
event OrderFilled(uint64 indexed id, address indexed maker, address indexed exchange, address taker, uint256 srcAmountIn, uint256 dstAmountOut, uint256 dstFee, uint256 srcFilledAmount)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b50604051620039c9380380620039c983398101604081905262000034916200004b565b60016000556001600160a01b03166080526200007d565b6000602082840312156200005e57600080fd5b81516001600160a01b03811681146200007657600080fd5b9392505050565b60805161391b620000ae6000396000818161033a015281816113c70152818161207c01526129ac015261391b6000f3fe6080604052600436106101185760003560e01c8063724f27ee116100a0578063a8efb99811610064578063a8efb99814610308578063c11a463d14610328578063cc75ca8614610374578063f58e65b81461038a578063ffa1ad74146103aa57600080fd5b8063724f27ee14610278578063805d835d1461028d57806385e471d5146102a4578063a0b94e0b146102c4578063a3d890b6146102f157600080fd5b80633ab22f01116100e75780633ab22f01146101e157806342d21ef7146102015780634c125e791461022157806352e8b2881461024357806356f65bee1461026357600080fd5b80630392c34a146101245780631116fd041461015a578063112017a71461018e5780631f7b6d32146101b857600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f366004612f30565b6103d1565b6040516101519190612f4b565b60405180910390f35b34801561016657600080fd5b5061017a610175366004612f98565b61046f565b60405161015198979695949392919061311c565b34801561019a57600080fd5b506101a3601e81565b60405163ffffffff9091168152602001610151565b3480156101c457600080fd5b506001545b6040516001600160401b039091168152602001610151565b3480156101ed57600080fd5b506101c96101fc366004613196565b6106df565b34801561020d57600080fd5b506101a361021c366004612f98565b61072b565b34801561022d57600080fd5b5061024161023c3660046131d7565b610765565b005b34801561024f57600080fd5b5061024161025e3660046131d7565b610abd565b34801561026f57600080fd5b506101a3600181565b34801561028457600080fd5b506101a3600281565b34801561029957600080fd5b506101a3620186a081565b3480156102b057600080fd5b506102416102bf3660046131d7565b610e5e565b3480156102d057600080fd5b506102e46102df3660046131d7565b61103b565b60405161015191906131f2565b3480156102fd57600080fd5b506101a362018a8881565b34801561031457600080fd5b506101c96103233660046132a1565b611353565b34801561033457600080fd5b5061035c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610151565b34801561038057600080fd5b506101a361025881565b34801561039657600080fd5b506102416103a53660046132f0565b611988565b3480156103b657600080fd5b506103bf600481565b60405160ff9091168152602001610151565b6001600160a01b03811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561046357602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116104205790505b50505050509050919050565b6001818154811061047f57600080fd5b600091825260209182902060109091020180546001820154600283015460408051610140810182526003860180546001600160a01b039081168352600488015481169883019890985260058701548816928201929092526006860154606082015260078601546080820152600886015460a0820152600986015463ffffffff81811660c0840152600160201b8204811660e0840152600160401b918290048116610100840152600a880180546001600160401b0389169b50928804821699600160601b8904831699600160801b9099049092169791909516949093916101208401919061056b9061339c565b80601f01602080910402602001604051908101604052809291908181526020018280546105979061339c565b80156105e45780601f106105b9576101008083540402835291602001916105e4565b820191906000526020600020905b8154815290600101906020018083116105c757829003601f168201915b5050509190925250506040805160c081018252600b8501805463ffffffff811683526001600160a01b03600160201b90910481166020840152600c8701541692820192909252600d8501546060820152600e8501546080820152600f8501805494959491935060a08401916106589061339c565b80601f01602080910402602001604051908101604052809291908181526020018280546106849061339c565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b505050505081525050905088565b600360205281600052604060002081815481106106fb57600080fd5b9060005260206000209060049182820401919006600802915091509054906101000a90046001600160401b031681565b6002818154811061073b57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b61076d611ced565b60006107788261103b565b90508060a001516001600160a01b0316336001600160a01b0316146107cc5760405162461bcd60e51b815260206004820152600560248201526436b0b5b2b960d91b60448201526064015b60405180910390fd5b60016002836001600160401b0316815481106107ea576107ea6133d6565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506001816020019063ffffffff16908163ffffffff1681525050806001836001600160401b031681548110610853576108536133d6565b6000918252602091829020835160109092020180548484015160408087015160608089015163ffffffff908116600160801b0263ffffffff60801b19938216600160601b029390931667ffffffffffffffff60601b19958216600160401b9081026001600160601b03199098166001600160401b03909a1699909917969096179490941694909417178455608080880151600186015560a0808901516002870180546001600160a01b039283166001600160a01b03199182161790915560c0808c0151805160038b0180549186169185169190911781559b81015160048b0180549186169185169190911790559586015160058a0180549190941692169190911790915594830151600687015590820151600786015581015160088501559182015160098401805460e08501516101008601518516909702968416600160201b0267ffffffffffffffff199190911692909316919091179190911763ffffffff60401b191693909317909255610120820151909290600a8401906109d79082613448565b50505060e08201518051600b83018054602084015163ffffffff9093166001600160c01b031990911617600160201b6001600160a01b03938416021781556040830151600c850180546001600160a01b03191691909316179091556060820151600d8401556080820151600e84015560a0820151600f840190610a5a9082613448565b50505060a083015183516040513381526001600160a01b0390921693506001600160401b031691507f84433a3c591ac98de0b89e7fc7a3d5d6705a3cbec760e7d529439c65d6feb3099060200160405180910390a350610aba6001600055565b50565b610ac5611ced565b6000610ad08261103b565b9050600080600080610ae185611d46565b92965090945092509050610af585846121ac565b60a080860151608080880151604080513381526020810189905290810187905260608101869052918201526001600160a01b03808816939216916001600160401b038a16917fc7529bc0224b03ba593d84e2064baeac956a4221ca93d37af0f1810ad17df7a9910160405180910390a4610b6e85612204565b600003610c2557600280876001600160401b031681548110610b9257610b926133d6565b60009182526020918290206008820401805460079092166004026101000a63ffffffff8181021990931694909216919091029290921790915560028682015260a086015186516040513381526001600160a01b03888116949316926001600160401b03909216917fd08d3326dcd14f1021feb19d05834c4f6d0b7ff1fecac35981f24fd5f73873c5910160405180910390a45b846001876001600160401b031681548110610c4257610c426133d6565b6000918252602091829020835160109092020180548484015160408087015160608089015163ffffffff908116600160801b0263ffffffff60801b19938216600160601b029390931667ffffffffffffffff60601b19958216600160401b9081026001600160601b03199098166001600160401b03909a1699909917969096179490941694909417178455608080880151600186015560a0808901516002870180546001600160a01b039283166001600160a01b03199182161790915560c0808c0151805160038b0180549186169185169190911781559b81015160048b0180549186169185169190911790559586015160058a0180549190941692169190911790915594830151600687015590820151600786015581015160088501559182015160098401805460e08501516101008601518516909702968416600160201b0267ffffffffffffffff199190911692909316919091179190911763ffffffff60401b191693909317909255610120820151909290600a840190610dc69082613448565b50505060e08201518051600b83018054602084015163ffffffff9093166001600160c01b031990911617600160201b6001600160a01b03938416021781556040830151600c850180546001600160a01b03191691909316179091556060820151600d8401556080820151600e84015560a0820151600f840190610e499082613448565b5050509050505050505050610aba6001600055565b610e66611ced565b6000610e718261103b565b9050806020015163ffffffff164210610e9c5760405162461bcd60e51b81526004016107c390613507565b8060c0015161010001518160600151610eb5919061353d565b63ffffffff164211610ef65760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b60448201526064016107c3565b610eff81612204565b60c08201516020015160a0830151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190613561565b10806110075750610f8d81612204565b60c08201516020015160a08301516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190613561565b105b6107cc5760405162461bcd60e51b81526020600482015260056024820152641d985b1a5960da1b60448201526064016107c3565b611043612ddc565b6001546001600160401b0316826001600160401b0316106110935760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b60448201526064016107c3565b6001826001600160401b0316815481106110af576110af6133d6565b6000918252602091829020604080516101008082018352601090940290920180546001600160401b038116845263ffffffff600160401b808304821686890152600160601b8304821686860152600160801b9092048116606080870191909152600184015460808088019190915260028501546001600160a01b0390811660a0808a019190915287516101408101895260038801805484168252600489015484169c82019c909c52600588015490921697820197909752600686015492810192909252600785015490820152600884015494810194909452600983015480821660c086810191909152600160201b8204831660e08701529290041694830194909452600a8101805493959194860193610120840191906111ce9061339c565b80601f01602080910402602001604051908101604052809291908181526020018280546111fa9061339c565b80156112475780601f1061121c57610100808354040283529160200191611247565b820191906000526020600020905b81548152906001019060200180831161122a57829003601f168201915b5050509190925250505081526040805160c081018252600b8401805463ffffffff811683526001600160a01b03600160201b9091048116602084810191909152600c87015490911693830193909352600d8501546060830152600e8501546080830152600f8501805493909401939192909160a08401916112c79061339c565b80601f01602080910402602001604051908101604052809291908181526020018280546112f39061339c565b80156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b5050509190925250505090525092915050565b600061135d611ced565b600061136f6040840160208501612f30565b6001600160a01b0316141580156113b657506113916060830160408401612f30565b6001600160a01b03166113aa6040840160208501612f30565b6001600160a01b031614155b801561142657506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166113f76040840160208501612f30565b6001600160a01b03161415806114265750600061141a6060840160408501612f30565b6001600160a01b031614155b8015611436575060008260600135115b8015611446575060008260800135115b801561145a57508160600135826080013511155b801561146a575060008260a00135115b801561148a57504261148260e0840160c0850161357a565b63ffffffff16115b80156114ad5750601e6114a4610100840160e0850161357a565b63ffffffff1610155b6114e25760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b60448201526064016107c3565b60006114f66114f060015490565b84612235565b9050611501816123c6565b600180548082018255600091909152815160109091027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6810180546020808601516040808801516060808a015163ffffffff908116600160801b0263ffffffff60801b19938216600160601b029390931667ffffffffffffffff60601b19958216600160401b9081026001600160601b03199099166001600160401b03909c169b909b179790971794909416959095171785556080808901517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf788015560a0808a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8890180546001600160a01b039283166001600160a01b03199182161790915560c0808d015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98d018054918616918516919091178155988101517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa8d018054918616918516919091179055958601517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb8c01805491909416921691909117909155958301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc890155908201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd8801558101517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfe870155928301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cff8601805460e08601516101008701518516909902988416600160201b0267ffffffffffffffff199190911692909316919091179190911763ffffffff60401b191695909517909455610120810151859492939192917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d0001906117e69082613448565b50505060e08201518051600b83018054602084015163ffffffff9093166001600160c01b031990911617600160201b6001600160a01b03938416021781556040830151600c850180546001600160a01b03191691909316179091556060820151600d8401556080820151600e84015560a0820151600f8401906118699082613448565b50505060208084015160028054600181810190925560088082047f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805463ffffffff95861660046007909516850261010090810a9182029790910219909116959095179055336000908152600380875260408083208b51815497880182559084529790922093850490930180546001600160401b039788169590941690920290940a9283029285021990911691909117905560c0850151805160a0870151875193516001600160a01b0392831697509116945091909216917fc89c7afb3b7aae6050ec036e1d630c7e5c61390047d1971bff0511d8918664c39161196e9190613595565b60405180910390a45190506119836001600055565b919050565b611990611ced565b6001600160a01b038516158015906119b05750620186a063ffffffff8416105b6119e55760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b60448201526064016107c3565b60006119f08761103b565b90506000611a0282888888888861254c565b9050611a4c87828887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089969594939250506127e29050565b816001896001600160401b031681548110611a6957611a696133d6565b6000918252602091829020835160109092020180548484015160408087015160608089015163ffffffff908116600160801b0263ffffffff60801b19938216600160601b029390931667ffffffffffffffff60601b19958216600160401b9081026001600160601b03199098166001600160401b03909a1699909917969096179490941694909417178455608080880151600186015560a0808901516002870180546001600160a01b039283166001600160a01b03199182161790915560c0808c0151805160038b0180549186169185169190911781559b81015160048b0180549186169185169190911790559586015160058a0180549190941692169190911790915594830151600687015590820151600786015581015160088501559182015160098401805460e08501516101008601518516909702968416600160201b0267ffffffffffffffff199190911692909316919091179190911763ffffffff60401b191693909317909255610120820151909290600a840190611bed9082613448565b50505060e08201518051600b83018054602084015163ffffffff9093166001600160c01b031990911617600160201b6001600160a01b03938416021781556040830151600c850180546001600160a01b03191691909316179091556060820151600d8401556080820151600e84015560a0820151600f840190611c709082613448565b505050905050866001600160a01b03168260a001516001600160a01b031683600001516001600160401b03167fc6c7dd24446d66051e106d8289c1e1e3657b16ae283f4824b89417b1ec39664f888660e00151604051611cd19291906135a8565b60405180910390a45050611ce56001600055565b505050505050565b600260005403611d3f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c3565b6002600055565b6000806000808460e00151602001516001600160a01b0316336001600160a01b031614611d9d5760405162461bcd60e51b81526020600482015260056024820152643a30b5b2b960d91b60448201526064016107c3565b846020015163ffffffff164210611dc65760405162461bcd60e51b81526004016107c390613507565b8460c0015160e001518560e0015160000151611de2919061353d565b63ffffffff164211611e225760405162461bcd60e51b81526020600482015260096024820152686269642064656c617960b81b60448201526064016107c3565b5060e08401516040810151608090910151909350611e3f85612204565b92506000611e4c86612848565b60a087015160c088015160200151919250611e72916001600160a01b0316903087612864565b60c0860151602001516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee49190613561565b60c087015160200151909450611f04906001600160a01b031686866128d5565b846001600160a01b031663b1c972ad8760c0015160200151611f2589612982565b87611f3087876135c7565b8b60c0015161012001518c60e0015160a001516040518763ffffffff1660e01b8152600401611f64969594939291906135da565b600060405180830381600087803b158015611f7e57600080fd5b505af1158015611f92573d6000803e3d6000fd5b50505050611f9f86612982565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120099190613561565b92506120158284613633565b9250808310156120515760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b60448201526064016107c3565b60c0860151604001516001600160a01b031661216c576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d9082906370a0823190602401602060405180830381865afa1580156120d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f79190613561565b6040518263ffffffff1660e01b815260040161211591815260200190565b600060405180830381600087803b15801561212f57600080fd5b505af1158015612143573d6000803e3d6000fd5b505050506121598660e0015160200151836129d1565b6121678660a00151846129d1565b6121a4565b6121928660e00151602001518361218289612982565b6001600160a01b03169190612aef565b6121a48660a001518461218289612982565b509193509193565b63ffffffff42106121cf5760405162461bcd60e51b81526004016107c390613646565b8160e0016121db612ecb565b905263ffffffff421660608301526080820180518291906121fd9083906135c7565b9052505050565b600061222f8260c001516080015183608001518460c001516060015161222a9190613633565b612b1f565b92915050565b61223d612ddc565b63ffffffff42108015612268575063ffffffff61226060e0840160c0850161357a565b63ffffffff16105b801561228d575063ffffffff612285610100840160e0850161357a565b63ffffffff16105b80156122b3575063ffffffff6122ab6101208401610100850161357a565b63ffffffff16105b6122cf5760405162461bcd60e51b81526004016107c390613646565b6040805161010081019091526001600160401b0384168152602081016122fb60e0850160c0860161357a565b63ffffffff908116825242166020820152600060408201819052606082015233608082015260a00161232c8461371b565b81526020016040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b03811115612390576123906133ec565b6040519080825280601f01601f1916602001820160405280156123ba576020820181803683370190505b50905290529392505050565b6123cf81612204565b60c08201516020015160a0830151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d9190613561565b101561248d5760405162461bcd60e51b815260206004820152600f60248201526e6d616b657220616c6c6f77616e636560881b60448201526064016107c3565b61249681612204565b60c08201516020015160a08301516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156124ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250e9190613561565b1015610aba5760405162461bcd60e51b815260206004820152600d60248201526c6d616b65722062616c616e636560981b60448201526064016107c3565b6000866020015163ffffffff1642106125775760405162461bcd60e51b81526004016107c390613507565b8660c0015161010001518760600151612590919061353d565b63ffffffff1642116125d15760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b60448201526064016107c3565b60c0870151516001600160a01b031615806126055750856001600160a01b03168760c00151600001516001600160a01b0316145b61263c5760405162461bcd60e51b815260206004820152600860248201526765786368616e676560c01b60448201526064016107c3565b856001600160a01b0316638369111f8860c001516020015161265d8a612982565b6126668b612204565b8b60c00151610120015188886040518763ffffffff1660e01b8152600401612693969594939291906137ea565b602060405180830381865afa1580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d49190613561565b9050620186a06126ea63ffffffff861683613853565b6126f49190613872565b6126fe9082613633565b905061270a8582613633565b60e088015160600151909150620186a0906127299062018a8890613853565b6127339190613872565b811180612757575060e08701515161274e906102589061353d565b63ffffffff1642115b61278d5760405162461bcd60e51b81526020600482015260076024820152661b1bddc8189a5960ca1b60448201526064016107c3565b61279687612b37565b8110156127cf5760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b60448201526064016107c3565b6127d8876123c6565b9695505050505050565b63ffffffff42106128055760405162461bcd60e51b81526004016107c390613646565b6040805160c08101825263ffffffff421681523360208201526001600160a01b0395909516908501526060840192909252608083015260a082015260e090910152565b600061222f8260e001516060015161285f84612b37565b612b68565b6040516001600160a01b03808516602483015283166044820152606481018290526128cf9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612b77565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129499190613561565b90506128cf8463095ea7b360e01b8561296286866135c7565b6040516001600160a01b0390921660248301526044820152606401612898565b60c0810151604001516000906001600160a01b0316156129aa578160c001516040015161222f565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b80471015612a215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107c3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612a6e576040519150601f19603f3d011682016040523d82523d6000602084013e612a73565b606091505b5050905080612aea5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107c3565b505050565b6040516001600160a01b038316602482015260448101829052612aea90849063a9059cbb60e01b90606401612898565b6000818310612b2e5781612b30565b825b9392505050565b60008160c0015160800151612b4b83612204565b8360c0015160a00151612b5e9190613853565b61222f9190613872565b6000818311612b2e5781612b30565b6000612bcc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612c4c9092919063ffffffff16565b9050805160001480612bed575080806020019051810190612bed9190613894565b612aea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107c3565b6060612c5b8484600085612c63565b949350505050565b606082471015612cc45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107c3565b600080866001600160a01b03168587604051612ce091906138b6565b60006040518083038185875af1925050503d8060008114612d1d576040519150601f19603f3d011682016040523d82523d6000602084013e612d22565b606091505b5091509150612d3387838387612d3e565b979650505050505050565b60608315612dad578251600003612da6576001600160a01b0385163b612da65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107c3565b5081612c5b565b612c5b8383815115612dc25781518083602001fd5b8060405162461bcd60e51b81526004016107c391906138d2565b60405180610100016040528060006001600160401b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff1681526020016000815260200160006001600160a01b03168152602001612eb960405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001606081525090565b8152602001612ec6612ecb565b905290565b6040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b80356001600160a01b038116811461198357600080fd5b600060208284031215612f4257600080fd5b612b3082612f19565b6020808252825182820181905260009190848201906040850190845b81811015612f8c5783516001600160401b031683529284019291840191600101612f67565b50909695505050505050565b600060208284031215612faa57600080fd5b5035919050565b60005b83811015612fcc578181015183820152602001612fb4565b50506000910152565b60008151808452612fed816020860160208601612fb1565b601f01601f19169290920160200192915050565b80516001600160a01b031682526000610140602083015161302d60208601826001600160a01b03169052565b50604083015161304860408601826001600160a01b03169052565b50606083015160608501526080830151608085015260a083015160a085015260c083015161307e60c086018263ffffffff169052565b5060e083015161309660e086018263ffffffff169052565b506101008381015163ffffffff1690850152610120808401518186018390526127d883870182612fd5565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a0850152612c5b60c0850182612fd5565b6001600160401b038916815263ffffffff8881166020830152878116604083015286166060820152608081018590526001600160a01b03841660a082015261010060c0820181905260009061317383820186613001565b905082810360e084015261318781856130c1565b9b9a5050505050505050505050565b600080604083850312156131a957600080fd5b6131b283612f19565b946020939093013593505050565b80356001600160401b038116811461198357600080fd5b6000602082840312156131e957600080fd5b612b30826131c0565b602081526001600160401b0382511660208201526000602083015161321f604084018263ffffffff169052565b50604083015163ffffffff8116606084015250606083015163ffffffff8116608084015250608083015160a083015260a083015161326860c08401826001600160a01b03169052565b5060c08301516101008060e0850152613285610120850183613001565b915060e0850151601f1985840301828601526127d883826130c1565b6000602082840312156132b357600080fd5b81356001600160401b038111156132c957600080fd5b82016101408185031215612b3057600080fd5b803563ffffffff8116811461198357600080fd5b60008060008060008060a0878903121561330957600080fd5b613312876131c0565b955061332060208801612f19565b945060408701359350613335606088016132dc565b925060808701356001600160401b038082111561335157600080fd5b818901915089601f83011261336557600080fd5b81358181111561337457600080fd5b8a602082850101111561338657600080fd5b6020830194508093505050509295509295509295565b600181811c908216806133b057607f821691505b6020821081036133d057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f821115612aea57600081815260208120601f850160051c810160208610156134295750805b601f850160051c820191505b81811015611ce557828155600101613435565b81516001600160401b03811115613461576134616133ec565b6134758161346f845461339c565b84613402565b602080601f8311600181146134aa57600084156134925750858301515b600019600386901b1c1916600185901b178555611ce5565b600085815260208120601f198616915b828110156134d9578886015182559484019460019091019084016134ba565b50858210156134f75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526006908201526573746174757360d01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff81811683821601908082111561355a5761355a613527565b5092915050565b60006020828403121561357357600080fd5b5051919050565b60006020828403121561358c57600080fd5b612b30826132dc565b602081526000612b306020830184613001565b63ffffffff83168152604060208201526000612c5b60408301846130c1565b8082018082111561222f5761222f613527565b6001600160a01b03878116825286166020820152604081018590526060810184905260c06080820181905260009061361490830185612fd5565b82810360a08401526136268185612fd5565b9998505050505050505050565b8181038181111561222f5761222f613527565b6020808252600690820152653ab4b73a199960d11b604082015260600190565b60405161014081016001600160401b0381118282101715613689576136896133ec565b60405290565b600082601f8301126136a057600080fd5b81356001600160401b03808211156136ba576136ba6133ec565b604051601f8301601f19908116603f011681019082821181831017156136e2576136e26133ec565b816040528381528660208588010111156136fb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000610140823603121561372e57600080fd5b613736613666565b61373f83612f19565b815261374d60208401612f19565b602082015261375e60408401612f19565b6040820152606083013560608201526080830135608082015260a083013560a082015261378d60c084016132dc565b60c082015261379e60e084016132dc565b60e08201526101006137b18185016132dc565b90820152610120838101356001600160401b038111156137d057600080fd5b6137dc3682870161368f565b918301919091525092915050565b6001600160a01b038781168252861660208201526040810185905260a06060820181905260009061381d90830186612fd5565b8281036080840152838152838560208301376000602085830101526020601f19601f860116820101915050979650505050505050565b600081600019048311821515161561386d5761386d613527565b500290565b60008261388f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156138a657600080fd5b81518015158114612b3057600080fd5b600082516138c8818460208701612fb1565b9190910192915050565b602081526000612b306020830184612fd556fea26469706673582212203d758674d2479f2b9150274ee512320b8e457eb6004ee14a7f1f7149c650678164736f6c634300081000330000000000000000000000004200000000000000000000000000000000000006