13 txs
38 calls
constructor
No constructor.
functions
flashFee
purefunction flashFee(address, uint256) pure returns (uint256)
maxFlashLoan
viewfunction maxFlashLoan(address token) view returns (uint256)
orderExists
viewfunction orderExists(bytes32 orderHash) view returns (bool)
quote
viewfunction quote(tuple quoteConfig) view returns (bool, uint256, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
vaultBalance
viewfunction vaultBalance(address owner, address token, uint256 vaultId) view returns (uint256)
addOrder2
nonpayablefunction addOrder2(tuple orderConfig, tuple[] post) returns (bool)
clear2
nonpayablefunction clear2(tuple aliceOrder, tuple bobOrder, tuple clearConfig, tuple[] aliceSignedContext, tuple[] bobSignedContext)
deposit2
nonpayablefunction deposit2(address token, uint256 vaultId, uint256 depositAmount, tuple[] post)
entask
nonpayablefunction entask(tuple[] post)
flashLoan
nonpayablefunction flashLoan(address receiver, address token, uint256 amount, bytes data) returns (bool)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
removeOrder2
nonpayablefunction removeOrder2(tuple order, tuple[] post) returns (bool stateChanged)
takeOrders2
nonpayablefunction takeOrders2(tuple config) returns (uint256 totalTakerInput, uint256 totalTakerOutput)
withdraw2
nonpayablefunction withdraw2(address token, uint256 vaultId, uint256 targetAmount, tuple[] post)
events
AddOrderV2
event AddOrderV2(address sender, bytes32 orderHash, (address owner, (address interpreter, address store, bytes bytecode) evaluable, (address token, uint8 decimals, uint256 vaultId)[] validInputs, (address token, uint8 decimals, uint256 vaultId)[] validOutputs, bytes32 nonce) order)
AfterClear
event AfterClear(address sender, (uint256 aliceOutput, uint256 bobOutput, uint256 aliceInput, uint256 bobInput) clearStateChange)
ClearV2
event ClearV2(address sender, (address owner, (address interpreter, address store, bytes bytecode) evaluable, (address token, uint8 decimals, uint256 vaultId)[] validInputs, (address token, uint8 decimals, uint256 vaultId)[] validOutputs, bytes32 nonce) alice, (address owner, (address interpreter, address store, bytes bytecode) evaluable, (address token, uint8 decimals, uint256 vaultId)[] validInputs, (address token, uint8 decimals, uint256 vaultId)[] validOutputs, bytes32 nonce) bob, (uint256 aliceInputIOIndex, uint256 aliceOutputIOIndex, uint256 bobInputIOIndex, uint256 bobOutputIOIndex, uint256 aliceBountyVaultId, uint256 bobBountyVaultId) clearConfig)
Context
event Context(address sender, uint256[][] context)
Deposit
event Deposit(address sender, address token, uint256 vaultId, uint256 amount)
MetaV1_2
event MetaV1_2(address sender, bytes32 subject, bytes meta)
OrderExceedsMaxRatio
event OrderExceedsMaxRatio(address sender, address owner, bytes32 orderHash)
OrderNotFound
event OrderNotFound(address sender, address owner, bytes32 orderHash)
OrderZeroAmount
event OrderZeroAmount(address sender, address owner, bytes32 orderHash)
RemoveOrderV2
event RemoveOrderV2(address sender, bytes32 orderHash, (address owner, (address interpreter, address store, bytes bytecode) evaluable, (address token, uint8 decimals, uint256 vaultId)[] validInputs, (address token, uint8 decimals, uint256 vaultId)[] validOutputs, bytes32 nonce) order)
TakeOrderV2
event TakeOrderV2(address sender, ((address owner, (address interpreter, address store, bytes bytecode) evaluable, (address token, uint8 decimals, uint256 vaultId)[] validInputs, (address token, uint8 decimals, uint256 vaultId)[] validOutputs, bytes32 nonce) order, uint256 inputIOIndex, uint256 outputIOIndex, (address signer, uint256[] context, bytes signature)[] signedContext) config, uint256 input, uint256 output)
Withdraw
event Withdraw(address sender, address token, uint256 vaultId, uint256 targetAmount, uint256 amount)
errors
ClearZeroAmount
error ClearZeroAmount()
FlashLenderCallbackFailed
error FlashLenderCallbackFailed(bytes32 result)
InvalidSignature
error InvalidSignature(uint256 i)
MinimumInput
error MinimumInput(uint256 minimumInput, uint256 input)
NoOrders
error NoOrders()
NotOrderOwner
error NotOrderOwner(address sender, address owner)
NotRainMetaV1
error NotRainMetaV1(bytes unmeta)
OrderNoHandleIO
error OrderNoHandleIO()
OrderNoInputs
error OrderNoInputs()
OrderNoOutputs
error OrderNoOutputs()
OrderNoSources
error OrderNoSources()
SameOwner
error SameOwner()
TokenDecimalsMismatch
error TokenDecimalsMismatch()
TokenMismatch
error TokenMismatch()
TokenSelfTrade
error TokenSelfTrade()
UnsupportedCalculateOutputs
error UnsupportedCalculateOutputs(uint256 outputs)
ZeroDepositAmount
error ZeroDepositAmount(address sender, address token, uint256 vaultId)
ZeroMaximumInput
error ZeroMaximumInput()
ZeroWithdrawTargetAmount
error ZeroWithdrawTargetAmount(address sender, address token, uint256 vaultId)
creation bytecode
0x6080604052348015600f57600080fd5b5060016000556158dd806100246000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391337c0a11610097578063d97b2e4811610066578063d97b2e4814610223578063d9d98ce414610263578063e0e530b714610279578063f513c42d146102a957600080fd5b806391337c0a146101ca578063a08f5dff146101dd578063a616864d146101f0578063ac9650d81461020357600080fd5b80632cb77e9f116100d35780632cb77e9f1461015f5780635cffe9de14610183578063613255ab146101965780638d7b6beb146101b757600080fd5b806301ffc9a7146100fa5780630997c4a0146101225780630d4f7f711461014a575b600080fd5b61010d61010836600461414f565b6102bc565b60405190151581526020015b60405180910390f35b6101356101303660046141a9565b610355565b60408051928352602083019190915201610119565b61015d610158366004614223565b610f55565b005b61010d61016d366004614265565b6000908152600160208190526040909120541490565b61010d6101913660046142a3565b610fa9565b6101a96101a4366004614342565b6110e1565b604051908152602001610119565b61010d6101c536600461435f565b611165565b61015d6101d83660046143c8565b6112bf565b61015d6101eb3660046148ee565b6114cf565b61010d6101fe3660046149b0565b611b17565b610216610211366004614223565b611e06565b6040516101199190614a39565b6101a9610231366004614abb565b6001600160a01b0392831660009081526002602090815260408083209490951682529283528381209181529152205490565b6101a9610271366004614afc565b600092915050565b61028c610287366004614b28565b611eee565b604080519315158452602084019290925290820152606001610119565b61015d6102b73660046143c8565b61205d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fe414309100000000000000000000000000000000000000000000000000000000148061034f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080610360612283565b61036d6060840184614b63565b90506000036103a8576040517f9c95219f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b0614073565b6103b86140a1565b606060006103c887830188614b63565b604080516020600193909301830281019091529350880135915050600081900361041e576040517fc2ee700900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b61042e6060890189614b63565b90508110801561043e5750600082115b15610b74576104506060890189614b63565b8281811061046057610460614bad565b90506020028101906104729190614bdc565b61047b90614c1a565b8051909550935061048f6060890189614b63565b60008181106104a0576104a0614bad565b90506020028101906104b29190614bdc565b6104bc9080614cb4565b6104ca906040810190614ce8565b6104d760608b018b614b63565b60008181106104e8576104e8614bad565b90506020028101906104fa9190614bdc565b6020013581811061050d5761050d614bad565b6105239260206060909202019081019150614342565b6001600160a01b0316846040015186602001518151811061054657610546614bad565b6020026020010151600001516001600160a01b031614158061063f57506105706060890189614b63565b600081811061058157610581614bad565b90506020028101906105939190614bdc565b61059d9080614cb4565b6105ab906060810190614ce8565b6105b860608b018b614b63565b60008181106105c9576105c9614bad565b90506020028101906105db9190614bdc565b604001358181106105ee576105ee614bad565b6106049260206060909202019081019150614342565b6001600160a01b0316846060015186604001518151811061062757610627614bad565b6020026020010151600001516001600160a01b031614155b15610676576040517f936bb5ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836060015185604001518151811061069057610690614bad565b6020026020010151600001516001600160a01b031684604001518660200151815181106106bf576106bf614bad565b6020026020010151600001516001600160a01b03160361070b576040517f734bc71c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107186060890189614b63565b600081811061072957610729614bad565b905060200281019061073b9190614bdc565b6107459080614cb4565b610753906040810190614ce8565b61076060608b018b614b63565b600081811061077157610771614bad565b90506020028101906107839190614bdc565b6020013581811061079657610796614bad565b90506060020160200160208101906107ae9190614d31565b60ff1684604001518660200151815181106107cb576107cb614bad565b60200260200101516020015160ff161415806108b457506107ef6060890189614b63565b600081811061080057610800614bad565b90506020028101906108129190614bdc565b61081c9080614cb4565b61082a906060810190614ce8565b61083760608b018b614b63565b600081811061084857610848614bad565b905060200281019061085a9190614bdc565b6040013581811061086d5761086d614bad565b90506060020160200160208101906108859190614d31565b60ff1684606001518660400151815181106108a2576108a2614bad565b60200260200101516020015160ff1614155b156108eb576040517f697e864b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108f6856122f6565b60008181526001602052604090205490915061095c578451604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610b6b565b60006109778688602001518960400151338b60600151612326565b90508960400135816060015111156109da578551604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610b69565b8060400151600003610a2e578551604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa906060016109cd565b60008660600151886040015181518110610a4a57610a4a614bad565b602090810291909101810151015160408301519091506000610a718760ff8516600261297f565b905080821115610a7f578091505b50600080610a9d8560600151600185612a049092919063ffffffff16565b9050610add8a604001518c6020015181518110610abc57610abc614bad565b60200260200101516020015160ff16600183612a229092919063ffffffff16565b915060009050610af28360ff86166002612a22565b9050610afe8189614d7d565b9750610b0a828d614d90565b9b50610b17828287612a84565b7f10de99b9032184587540c04e1850dff94a7683ae1fcc9eb06098621c739c0275338c8385604051610b4c9493929190614eca565b60405180910390a150508651600101808852602002870183905250505b505b50600101610421565b610b828260208a0135614d7d565b965050508535851015610bd0576040517f45094d8800000000000000000000000000000000000000000000000000000000815286356004820152602481018690526044015b60405180910390fd5b8415610c8c57610c8c3386610be860608a018a614b63565b6000818110610bf957610bf9614bad565b9050602002810190610c0b9190614bdc565b610c159080614cb4565b610c23906060810190614ce8565b610c3060608c018c614b63565b6000818110610c4157610c41614bad565b9050602002810190610c539190614bdc565b60400135818110610c6657610c66614bad565b610c7c9260206060909202019081019150614342565b6001600160a01b03169190612dad565b6000610c9b6080880188614fd4565b90501115610e4e573363059bebe6610cb66060890189614b63565b6000818110610cc757610cc7614bad565b9050602002810190610cd99190614bdc565b610ce39080614cb4565b610cf1906060810190614ce8565b610cfe60608b018b614b63565b6000818110610d0f57610d0f614bad565b9050602002810190610d219190614bdc565b60400135818110610d3457610d34614bad565b610d4a9260206060909202019081019150614342565b610d5760608a018a614b63565b6000818110610d6857610d68614bad565b9050602002810190610d7a9190614bdc565b610d849080614cb4565b610d92906040810190614ce8565b610d9f60608c018c614b63565b6000818110610db057610db0614bad565b9050602002810190610dc29190614bdc565b60200135818110610dd557610dd5614bad565b610deb9260206060909202019081019150614342565b8888610dfa60808d018d614fd4565b6040518763ffffffff1660e01b8152600401610e1b96959493929190615046565b600060405180830381600087803b158015610e3557600080fd5b505af1158015610e49573d6000803e3d6000fd5b505050505b8315610f0c57610f0c333086610e6760608b018b614b63565b6000818110610e7857610e78614bad565b9050602002810190610e8a9190614bdc565b610e949080614cb4565b610ea2906040810190614ce8565b610eaf60608d018d614b63565b6000818110610ec057610ec0614bad565b9050602002810190610ed29190614bdc565b60200135818110610ee557610ee5614bad565b610efb9260206060909202019081019150614342565b6001600160a01b0316929190612e5b565b60005b8151811015610f4257610f3a828281518110610f2d57610f2d614bad565b6020026020010151612eb2565b600101610f0f565b50505050610f506001600055565b915091565b610f5d612283565b60408051600080825260208201909252610f9b91610f8b565b6060815260200190600190039081610f765790505b50610f96838561508b565b6130b8565b610fa56001600055565b5050565b6000610fbf6001600160a01b0386168786612dad565b6040517f23e30c8b0000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906323e30c8b906110119033908a908a9087908b908b90600401615046565b6020604051808303816000875af1158015611030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110549190615155565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd981146110b2576040517f5b62c54800000000000000000000000000000000000000000000000000000000815260048101829052602401610bc7565b6110d487306110c2600089614d90565b6001600160a01b038a16929190612e5b565b5060019695505050505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190615155565b600061116f612283565b61117c6020850185614342565b6001600160a01b0316336001600160a01b0316146111e757336111a26020860186614342565b6040517f4702b9140000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015291166024820152604401610bc7565b60006111fa6111f58661516e565b6122f6565b600081815260016020526040902054909150600019016112ad5760008181526001602081905260408083209290925590519092507fa2d7a96afe77c99b6a2d72ca8b4d3c5c88b6466ee34ca74e0955951f449425c89061125f903390849089906152a9565b60405180910390a16040805160028152602081018390523381830152606081019091526112ad906112a3905b60408051600181526020810192909252818101905290565b610f96858761508b565b506112b86001600055565b9392505050565b6112c7612283565b82600003611319576040517f40e97a5e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038616602482015260448101859052606401610bc7565b604080513381526001600160a01b0387166020820152908101859052606081018490527fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79060800160405180910390a161137e6001600160a01b038616333086612e5b565b3360009081526002602090815260408083206001600160a01b038916845282528083208784529091529020546113b48482614d90565b3360009081526002602090815260408083206001600160a01b038b168452825280832089845290915290205581156114bd576000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144a91906153ab565b60ff169050600061145d8383600061297f565b9050600061146d8784600061297f565b60408051600481526001600160a01b038c1660208201528082018b9052606081018590526080810183905260a081019091529091506114b9906114af9061128b565b610f96878961508b565b5050505b506114c86001600055565b5050505050565b6114d7612283565b835185516001600160a01b0391821691160361151f576040517f2a63c7cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836040015183604001358151811061153957611539614bad565b6020026020010151600001516001600160a01b0316856060015184602001358151811061156857611568614bad565b6020026020010151600001516001600160a01b03161415806115e4575060408501518051843590811061159d5761159d614bad565b6020026020010151600001516001600160a01b031684606001518460600135815181106115cc576115cc614bad565b6020026020010151600001516001600160a01b031614155b1561161b576040517f936bb5ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846060015183602001358151811061163557611635614bad565b6020026020010151600001516001600160a01b0316856040015184600001358151811061166457611664614bad565b6020026020010151600001516001600160a01b0316036116b0576040517f734bc71c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83604001518360400135815181106116ca576116ca614bad565b60200260200101516020015160ff1685606001518460200135815181106116f3576116f3614bad565b60200260200101516020015160ff1614158061175d575060408501518051843590811061172257611722614bad565b60200260200101516020015160ff16846060015184606001358151811061174b5761174b614bad565b60200260200101516020015160ff1614155b15611794576040517f697e864b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160006117a3886122f6565b81526020019081526020016000205403611815577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f33386600001516117e7886122f6565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a1611b0d565b600060016000611824876122f6565b81526020019081526020016000205403611868577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f33385600001516117e7876122f6565b7f692ee69af2843c70772be93470669f3c73e583316a047b6bfefdae5629de37ce3386868660405161189d94939291906153c8565b60405180910390a160006118c08685600001358660200135886000015186612326565b905060006118dd86866040013587606001358a6000015188612326565b905060006118eb8383613290565b90506119008160400151826000015185612a84565b6119138160600151826020015184612a84565b6060810151815160009161192691614d7d565b905060008260400151836020015161193e9190614d7d565b905081156119ca57336000908152600260209081526040822060608d01518051869492938d013590811061197457611974614bad565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008a60800135815260200190815260200160002060008282546119c49190614d90565b90915550505b8015611a52573360009081526002602052604081206060808c015180518594928d01359081106119fc576119fc614bad565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008a60a0013581526020019081526020016000206000828254611a4c9190614d90565b90915550505b5050604080513381528251602080830191909152830151818301529082015160608083019190915282015160808201527f3f20e55919cca701abb2a40ab72542b25ea7eed63a50f979dd2cd3231e5f488d9060a00160405180910390a1611ab883612eb2565b611ac182612eb2565b8051158015611ad257506020810151155b15611b09576040517f21badf1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505b6114c86001600055565b6000611b21612283565b611b2e6020850185614ce8565b9050600003611b69576040517f6c44ef8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b766040850185614ce8565b9050600003611bb1576040517f540e5f0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810190915233815260009060208101611bd08780615445565b611bd990615479565b8152602001868060200190611bee9190614ce8565b808060200260200160405190810160405280939291908181526020016000905b82821015611c3a57611c2b60608302860136819003810190615485565b81526020019060010190611c0e565b5050509183525050602001611c526040880188614ce8565b808060200260200160405190810160405280939291908181526020016000905b82821015611c9e57611c8f60608302860136819003810190615485565b81526020019060010190611c72565b50505050508152602001866060013581525090506000611cbd826122f6565b600081815260016020526040902054909150158015611df85760008281526001602081905260409182902055835190517f3ce8bbe652d8778b67dd565c479c3bbaa843e55e477d075f756f889ec4bbdaee91611d1c91859087906154a1565b60405180910390a16000611d3360a0890189614fd4565b90501115611dd057611d85611d4b60a0890189614fd4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132e692505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec3699083611db760a08b018b614fd4565b604051611dc794939291906154c9565b60405180910390a15b604080516002815260208101849052338183015260608101909152611df8906114af9061128b565b925050506112b86001600055565b6040805160008152602081019091526060908267ffffffffffffffff811115611e3157611e31614432565b604051908082528060200260200182016040528015611e6457816020015b6060815260200190600190039081611e4f5790505b50915060005b83811015611ee657611ec130868684818110611e8857611e88614bad565b9050602002810190611e9a9190614fd4565b85604051602001611ead939291906154f2565b60405160208183030381529060405261332a565b838281518110611ed357611ed3614bad565b6020908102919091010152600101611e6a565b505092915050565b6000808080611f09611f008680614cb4565b6111f59061516e565b60008181526001602081905260409091205491925014611f3457600080600093509350935050612056565b611f3e8580614cb4565b611f4c906060810190614ce8565b8660400135818110611f6057611f60614bad565b611f769260206060909202019081019150614342565b6001600160a01b0316611f898680614cb4565b611f97906040810190614ce8565b8760200135818110611fab57611fab614bad565b611fc19260206060909202019081019150614342565b6001600160a01b031603612001576040517f734bc71c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061203f6120108780614cb4565b6120199061516e565b602088013560408901353361203160608c018c614b63565b61203a91615519565b612326565b905060018160400151826060015194509450945050505b9193909250565b612065612283565b826000036120b7576040517ff7a898f60000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038616602482015260448101859052606401610bc7565b3360009081526002602090815260408083206001600160a01b03891684528252808320878452909152812054906120ee858361334f565b9050801561213d576121008183614d7d565b3360008181526002602090815260408083206001600160a01b038d168085529083528184208c85529092529091209290925561213d919083612dad565b604080513381526001600160a01b038916602082015290810187905260608101869052608081018290527febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9060a00160405180910390a18215612277576000876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe91906153ab565b60ff169050611b0961226d61128b8a6001600160a01b03168a6122238887600061297f565b61222f8888600061297f565b61223b8d89600261297f565b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b610f96868861508b565b50506114c86001600055565b6002600054036122ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bc7565b6002600055565b6000816040516020016123099190615526565b604051602081830303815290604052805190602001209050919050565b61232e61410c565b6000612339876122f6565b60408051600480825260a08201909252919250606091600091816020015b60608152602001906001900390816123575790505089516040805160038152602081018790526001600160a01b039283168183015291891660608301526080820190529091508160018003815181106123b2576123b2614bad565b60200260200101819052506000600260008b600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008b604001518b8151811061240057612400614bad565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008b604001518b8151811061244457612444614bad565b602002602001015160400151815260200190815260200160002054905061254e8a604001518a8151811061247a5761247a614bad565b6020026020010151600001516001600160a01b03168b604001518b815181106124a5576124a5614bad565b60200260200101516020015160ff16670de0b6b3a76400000267ffffffffffffffff168c604001518c815181106124de576124de614bad565b60200260200101516040015161251a858f604001518f8151811061250457612504614bad565b60200260200101516020015160ff16600061297f565b600060408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b8260016003038151811061256457612564614bad565b6020026020010181905250506000600260008b600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008b606001518a815181106125b3576125b3614bad565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008b606001518a815181106125f7576125f7614bad565b60200260200101516040015181526020019081526020016000205490506126b78a60600151898151811061262d5761262d614bad565b6020026020010151600001516001600160a01b03168b606001518a8151811061265857612658614bad565b60200260200101516020015160ff16670de0b6b3a76400000267ffffffffffffffff168c606001518b8151811061269157612691614bad565b60200260200101516040015161251a858f606001518e8151811061250457612504614bad565b826001600403815181106126cd576126cd614bad565b6020026020010181905250506126e38186613365565b915050600088600001516001600160a01b031690506000808a60200151600001516001600160a01b031663d6e3357a8c602001516020015161272f863060009182526020526040902090565b60208f01516040015160008981604051908082528060200260200182016040528015612765578160200160208202803683370190505b506040518763ffffffff1660e01b815260040161278796959493929190615586565b600060405180830381865afa1580156127a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127cc9190810190615651565b915091506002825110156128115781516040517f3eee3954000000000000000000000000000000000000000000000000000000008152600401610bc791815260200190565b6020828101516040808501518e516001600160a01b03166000908152600290945290832060608f01518051939492938391908f90811061285357612853614bad565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008f606001518e8151811061289757612897614bad565b602002602001015160400151815260200190815260200160002054905060006128f08f606001518e815181106128cf576128cf614bad565b60200260200101516020015160ff1660008461297f9092919063ffffffff16565b9050808311156128fe578092505b5050604080516002815260208101839052808201849052606081019091528660028151811061292f5761292f614bad565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b600082601211156129b457601283900360028316156129aa576129a28582613668565b9150506112b8565b6129a285826136b9565b60128311156129fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee830160018316156129f3576129a285826136f1565b6129a2858261373f565b50826112b8565b6000612a1a8484670de0b6b3a764000085613762565b949350505050565b60008260121115612a4557601283900360018316156129f3576129a285826136f1565b60128311156129fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee830160028316156129aa576129a28582613668565b612adf83670de0b6b3a76400008360800151600381518110612aa857612aa8614bad565b6020026020010151600181518110612ac257612ac2614bad565b602002602001015181612ad757612ad76156b5565b04600061297f565b8160800151600381518110612af657612af6614bad565b6020026020010151600481518110612b1057612b10614bad565b602002602001018181525050612b7782670de0b6b3a76400008360800151600481518110612b4057612b40614bad565b6020026020010151600181518110612b5a57612b5a614bad565b602002602001015181612b6f57612b6f6156b5565b04600161297f565b8160800151600481518110612b8e57612b8e614bad565b6020026020010151600481518110612ba857612ba8614bad565b60209081029190910101528215612c8f578051516001600160a01b0316600090815260026020526040812060808301518051869391906003908110612bef57612bef614bad565b6020026020010151600081518110612c0957612c09614bad565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008360800151600381518110612c4a57612c4a614bad565b6020026020010151600281518110612c6457612c64614bad565b602002602001015181526020019081526020016000206000828254612c899190614d90565b90915550505b8115612d6b578051516001600160a01b0316600090815260026020526040812060808301518051859391906004908110612ccb57612ccb614bad565b6020026020010151600081518110612ce557612ce5614bad565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008360800151600481518110612d2657612d26614bad565b6020026020010151600281518110612d4057612d40614bad565b602002602001015181526020019081526020016000206000828254612d659190614d7d565b90915550505b7f17a5c0f3785132a57703932032f6863e7920434150aa1dc940e567b440fdce1f338260800151604051612da09291906156e4565b60405180910390a1505050565b6040516001600160a01b038316602482015260448101829052612e569084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526137bf565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052612eac9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612df2565b50505050565b60c08101515115612f4a578051602090810151015160a082015160c08301516040517f946aadc60000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263946aadc692612f17929091600401615706565b600060405180830381600087803b158015612f3157600080fd5b505af1158015612f45573d6000803e3d6000fd5b505050505b805160209081015180519082015160a08401516000908152309093526040832083926001600160a01b03169163d6e3357a918651602001516040015160808801516001906000604051908082528060200260200182016040528015612fb9578160200160208202803683370190505b506040518763ffffffff1660e01b8152600401612fdb96959493929190615586565b600060405180830381865afa158015612ff8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130209190810190615651565b8051919350915015612e56578251602090810151015160a08401516040517f946aadc60000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163946aadc691613081918590600401615706565b600060405180830381600087803b15801561309b57600080fd5b505af11580156130af573d6000803e3d6000fd5b50505050505050565b336130eb6040805160a0810182526000918101828152606080830193909352608082018390528152602081019190915290565b60005b83518110156114c85783818151811061310957613109614bad565b60200260200101519150600082600001516040015151111561328857815180516020918201516000868152309093526040832083926001600160a01b03169163d6e3357a9187600001516040015160006131678d8b60200151613365565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e089901b169091526131b395949392919060248101615586565b600060405180830381865afa1580156131d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131f89190810190615651565b8051919350915015613285578351602001516040517f946aadc60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063946aadc6906132529088908590600401615706565b600060405180830381600087803b15801561326c57600080fd5b505af1158015613280573d6000803e3d6000fd5b505050505b50505b6001016130ee565b6132bb6040518060800160405280600081526020016000815260200160008152602001600081525090565b6132c583836138c1565b825260408201526132d682846138c1565b6020830152606082015292915050565b6132ef81613a25565b61332757806040517f644cc258000000000000000000000000000000000000000000000000000000008152600401610bc7919061571f565b50565b60606112b883836040518060600160405280602781526020016158b660279139613a55565b600081831061335e57816112b8565b5090919050565b60606000825167ffffffffffffffff81111561338357613383614432565b6040519080825280602002602001820160405280156133ac578160200160208202803683370190505b5090506000808451116133c05760006133c6565b83516001015b855160010101905060008167ffffffffffffffff8111156133e9576133e9614432565b60405190808252806020026020018201604052801561341c57816020015b60608152602001906001900390816134075790505b5090506000613441604080516002815233602082015230818301526060810190915290565b82828151811061345357613453614bad565b602002602001018190525060005b87518110156134b157818060010192505087818151811061348457613484614bad565b602002602001015183838151811061349e5761349e614bad565b6020908102919091010152600101613461565b5085511561365e578080600101915050838282815181106134d4576134d4614bad565b602002602001018190525060005b865181101561365c5761359387828151811061350057613500614bad565b60200260200101516000015161357061353d8a858151811061352457613524614bad565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b89848151811061358257613582614bad565b602002602001015160400151613acd565b6135cc576040517f52bf984800000000000000000000000000000000000000000000000000000000815260048101829052602401610bc7565b8681815181106135de576135de614bad565b6020026020010151600001516001600160a01b031685828151811061360557613605614bad565b602002602001018181525050818060010192505086818151811061362b5761362b614bad565b60200260200101516020015183838151811061364957613649614bad565b60209081029190910101526001016134e2565b505b5095945050505050565b6000604e821061368a57821561368057600019613683565b60005b905061034f565b50600a81900a82810290838183816136a4576136a46156b5565b04146136b257600019612a1a565b5092915050565b600a81900a6136c88184615732565b9050604e821061034f5782156136e8576136e382600a61582d565b6112b8565b50600092915050565b6000604e821061371557821561370857600161370b565b60005b60ff16905061034f565b600a82900a808481613729576137296156b5565b04915080820284146136b2575060010192915050565b6000604e8210156136e85781600a0a838161375c5761375c6156b5565b046112b8565b600080613770868686613b24565b9050600183600281111561378657613786615839565b1480156137a357506000848061379e5761379e6156b5565b868809115b156137b6576137b3600182614d90565b90505b95945050505050565b6000613814826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613c309092919063ffffffff16565b90508051600014806138355750808060200190518101906138359190615868565b612e56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610bc7565b60008060006138e4856060015160018760400151612a049092919063ffffffff16565b9050600085604001519050846040015182111561391857604085015160608701519092506139159083906000613c3f565b90505b600061395c86600001516060015187602001518151811061393b5761393b614bad565b60200260200101516020015160ff16600185612a229092919063ffffffff16565b90506139a086600001516060015187602001518151811061397f5761397f614bad565b60200260200101516020015160ff16600085612a229092919063ffffffff16565b9450848111156139d75760608701516000906139c790670de0b6b3a7640000906001613c3f565b90506139d38184614d7d565b9250505b613a198760000151606001518860200151815181106139f8576139f8614bad565b60200260200101516020015160ff16600084612a229092919063ffffffff16565b93505050509250929050565b6000600882511015613a3957506000919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b6060600080856001600160a01b031685604051613a72919061588a565b600060405180830381855af49150503d8060008114613aad576040519150601f19603f3d011682016040523d82523d6000602084013e613ab2565b606091505b5091509150613ac386838387613c55565b9695505050505050565b6000806000613adc8585613ce8565b90925090506000816004811115613af557613af5615839565b148015613b135750856001600160a01b0316826001600160a01b0316145b80613ac35750613ac3868686613d2d565b6000808060001985870985870292508281108382030391505080600003613b5e57838281613b5457613b546156b5565b04925050506112b8565b808411613bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401610bc7565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6060612a1a8484600085613e5f565b6000612a1a84670de0b6b3a76400008585613762565b60608315613cde578251600003613cd7576001600160a01b0385163b613cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bc7565b5081612a1a565b612a1a8383613f6b565b6000808251604103613d1e5760208301516040840151606085015160001a613d1287828585613faf565b94509450505050613d26565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401613d5792919061589c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051613dc2919061588a565b600060405180830381855afa9150503d8060008114613dfd576040519150601f19603f3d011682016040523d82523d6000602084013e613e02565b606091505b5091509150818015613e1657506020815110155b8015613ac3575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090613e549083016020908101908401615155565b149695505050505050565b606082471015613ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610bc7565b600080866001600160a01b03168587604051613f0d919061588a565b60006040518083038185875af1925050503d8060008114613f4a576040519150601f19603f3d011682016040523d82523d6000602084013e613f4f565b606091505b5091509150613f6087838387613c55565b979650505050505050565b815115613f7b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc7919061571f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fe6575060009050600361406a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561403a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140635760006001925092505061406a565b9150600090505b94509492505050565b60405180608001604052806140866140a1565b81526020016000815260200160008152602001606081525090565b6040518060a0016040528060006001600160a01b031681526020016140f2604051806060016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b815260606020820181905260408201819052600091015290565b6040518060e0016040528061411f6140a1565b81526020016000815260200160008152602001600081526020016060815260200160008152602001606081525090565b60006020828403121561416157600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112b857600080fd5b600060a082840312156141a357600080fd5b50919050565b6000602082840312156141bb57600080fd5b813567ffffffffffffffff8111156141d257600080fd5b612a1a84828501614191565b60008083601f8401126141f057600080fd5b50813567ffffffffffffffff81111561420857600080fd5b6020830191508360208260051b8501011115613d2657600080fd5b6000806020838503121561423657600080fd5b823567ffffffffffffffff81111561424d57600080fd5b614259858286016141de565b90969095509350505050565b60006020828403121561427757600080fd5b5035919050565b6001600160a01b038116811461332757600080fd5b803561429e8161427e565b919050565b6000806000806000608086880312156142bb57600080fd5b85356142c68161427e565b945060208601356142d68161427e565b935060408601359250606086013567ffffffffffffffff808211156142fa57600080fd5b818801915088601f83011261430e57600080fd5b81358181111561431d57600080fd5b89602082850101111561432f57600080fd5b9699959850939650602001949392505050565b60006020828403121561435457600080fd5b81356112b88161427e565b60008060006040848603121561437457600080fd5b833567ffffffffffffffff8082111561438c57600080fd5b61439887838801614191565b945060208601359150808211156143ae57600080fd5b506143bb868287016141de565b9497909650939450505050565b6000806000806000608086880312156143e057600080fd5b85356143eb8161427e565b94506020860135935060408601359250606086013567ffffffffffffffff81111561441557600080fd5b614421888289016141de565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561448457614484614432565b60405290565b60405160a0810167ffffffffffffffff8111828210171561448457614484614432565b6040805190810167ffffffffffffffff8111828210171561448457614484614432565b604051601f8201601f1916810167ffffffffffffffff811182821017156144f9576144f9614432565b604052919050565b600082601f83011261451257600080fd5b813567ffffffffffffffff81111561452c5761452c614432565b61453f6020601f19601f840116016144d0565b81815284602083860101111561455457600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561458357600080fd5b61458b614461565b905081356145988161427e565b815260208201356145a88161427e565b6020820152604082013567ffffffffffffffff8111156145c757600080fd5b6145d384828501614501565b60408301525092915050565b600067ffffffffffffffff8211156145f9576145f9614432565b5060051b60200190565b60ff8116811461332757600080fd5b60006060828403121561462457600080fd5b61462c614461565b905081356146398161427e565b8152602082013561464981614603565b806020830152506040820135604082015292915050565b600082601f83011261467157600080fd5b81356020614686614681836145df565b6144d0565b8083825260208201915060606020606086028801019450878511156146aa57600080fd5b602087015b858110156146ce576146c18982614612565b84529284019281016146af565b5090979650505050505050565b600060a082840312156146ed57600080fd5b6146f561448a565b905061470082614293565b8152602082013567ffffffffffffffff8082111561471d57600080fd5b61472985838601614571565b6020840152604084013591508082111561474257600080fd5b61474e85838601614660565b6040840152606084013591508082111561476757600080fd5b5061477484828501614660565b6060830152506080820135608082015292915050565b600060c082840312156141a357600080fd5b60006147aa614681846145df565b8381529050602080820190600585811b8501878111156147c957600080fd5b855b818110156148c257803567ffffffffffffffff808211156147ec5760008081fd5b908801906060828c0312156148015760008081fd5b614809614461565b82356148148161427e565b815282870135828111156148285760008081fd5b8301601f81018d1361483a5760008081fd5b8035614848614681826145df565b81815290881b8201890190898101908f8311156148655760008081fd5b928a01925b828410156148835783358252928a0192908a019061486a565b848b0152506040915050838101358381111561489f5760008081fd5b6148ab8e828701614501565b9183019190915250875250509383019383016147cb565b50505050509392505050565b600082601f8301126148df57600080fd5b6112b88383356020850161479c565b6000806000806000610140868803121561490757600080fd5b853567ffffffffffffffff8082111561491f57600080fd5b61492b89838a016146db565b9650602088013591508082111561494157600080fd5b61494d89838a016146db565b955061495c8960408a0161478a565b945061010088013591508082111561497357600080fd5b61497f89838a016148ce565b935061012088013591508082111561499657600080fd5b506149a3888289016148ce565b9150509295509295909350565b6000806000604084860312156149c557600080fd5b833567ffffffffffffffff808211156149dd57600080fd5b6143988783880161478a565b60005b83811015614a045781810151838201526020016149ec565b50506000910152565b60008151808452614a258160208601602086016149e9565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614aae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452614a9c858351614a0d565b94509285019290850190600101614a62565b5092979650505050505050565b600080600060608486031215614ad057600080fd5b8335614adb8161427e565b92506020840135614aeb8161427e565b929592945050506040919091013590565b60008060408385031215614b0f57600080fd5b8235614b1a8161427e565b946020939093013593505050565b600060208284031215614b3a57600080fd5b813567ffffffffffffffff811115614b5157600080fd5b8201608081850312156112b857600080fd5b6000808335601e19843603018112614b7a57600080fd5b83018035915067ffffffffffffffff821115614b9557600080fd5b6020019150600581901b3603821315613d2657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112614c1057600080fd5b9190910192915050565b600060808236031215614c2c57600080fd5b6040516080810167ffffffffffffffff8282108183111715614c5057614c50614432565b816040528435915080821115614c6557600080fd5b614c71368387016146db565b835260208501356020840152604085013560408401526060850135915080821115614c9b57600080fd5b50614ca8368286016148ce565b60608301525092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112614c1057600080fd5b6000808335601e19843603018112614cff57600080fd5b83018035915067ffffffffffffffff821115614d1a57600080fd5b6020019150606081023603821315613d2657600080fd5b600060208284031215614d4357600080fd5b81356112b881614603565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561034f5761034f614d4e565b8082018082111561034f5761034f614d4e565b60008151808452602080850194506020840160005b83811015614df657815180516001600160a01b031688528381015160ff16848901526040908101519088015260609096019590820190600101614db8565b509495945050505050565b60006001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e0850152614e4f610100850182614a0d565b905060408301518482036040860152614e688282614da3565b91505060608301518482036060860152614e828282614da3565b915050608083015160808501528091505092915050565b60008151808452602080850194506020840160005b83811015614df657815187529582019590820190600101614eae565b60006001600160a01b03808716835260206080818501528651608080860152614ef7610100860182614e01565b90508188015160a086015260408089015160c08701526060808a01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808885030160e08901528381518086528686019150868160051b870101878401935060005b82811015614fb257601f1988830301845284518a815116835289810151878b850152614f8688850182614e99565b91890151848303858b0152919050614f9e8183614a0d565b968b0196958b019593505050600101614f58565b5080995050505050505050505083604083015282606083015295945050505050565b6000808335601e19843603018112614feb57600080fd5b83018035915067ffffffffffffffff82111561500657600080fd5b602001915036819003821315613d2657600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261507f60a08301848661501b565b98975050505050505050565b6000615099614681846145df565b80848252602080830192508560051b8501368111156150b757600080fd5b855b8181101561514957803567ffffffffffffffff808211156150da5760008081fd5b8189019150604082360312156150f05760008081fd5b6150f86144ad565b8235828111156151085760008081fd5b61511436828601614571565b82525085830135828111156151295760008081fd5b615135368286016148ce565b8288015250875250509382019382016150b9565b50919695505050505050565b60006020828403121561516757600080fd5b5051919050565b600061034f36836146db565b600081356151878161427e565b6001600160a01b0390811684526020830135906151a38261427e565b166020840152604082013536839003601e190181126151c157600080fd5b820160208101903567ffffffffffffffff8111156151de57600080fd5b8036038213156151ed57600080fd5b606060408601526137b660608601828461501b565b6000808335601e1984360301811261521957600080fd5b830160208101925035905067ffffffffffffffff81111561523957600080fd5b606081023603821315613d2657600080fd5b8183526000602080850194508260005b85811015614df657813561526e8161427e565b6001600160a01b031687528183013561528681614603565b60ff1687840152604082810135908801526060968701969091019060010161525b565b60006001600160a01b0380861683528460208401526060604084015283356152d08161427e565b1660608301526020830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa101811261530c57600080fd5b60a06080840152615323610100840185830161517a565b90506153326040850185615202565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0808685030160a087015261536884838561524b565b93506153776060880188615202565b93509150808685030160c08701525061539183838361524b565b92505050608084013560e084015280915050949350505050565b6000602082840312156153bd57600080fd5b81516112b881614603565b60006101206001600160a01b03871683528060208401526153eb81840187614e01565b905082810360408401526153ff8186614e01565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614c1057600080fd5b600061034f3683614571565b60006060828403121561549757600080fd5b6112b88383614612565b6001600160a01b03841681528260208201526060604082015260006137b66060830184614e01565b6001600160a01b0385168152836020820152606060408201526000613ac360608301848661501b565b82848237600083820160008152835161550f8183602088016149e9565b0195945050505050565b60006112b836848461479c565b6020815260006112b86020830184614e01565b60008282518085526020808601955060208260051b8401016020860160005b848110156146ce57601f19868403018952615574838351614e99565b98840198925090830190600101615558565b6001600160a01b038716815285602082015260c0604082015260006155ae60c0830187614a0d565b85606084015282810360808401526155c68186615539565b905082810360a08401526155da8185614e99565b9998505050505050505050565b600082601f8301126155f857600080fd5b81516020615608614681836145df565b8083825260208201915060208460051b87010193508684111561562a57600080fd5b602086015b84811015615646578051835291830191830161562f565b509695505050505050565b6000806040838503121561566457600080fd5b825167ffffffffffffffff8082111561567c57600080fd5b615688868387016155e7565b9350602085015191508082111561569e57600080fd5b506156ab858286016155e7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6001600160a01b0383168152604060208201526000612a1a6040830184615539565b828152604060208201526000612a1a6040830184614e99565b6020815260006112b86020830184614a0d565b808202811582820484141761034f5761034f614d4e565b600181815b8085111561578457816000190482111561576a5761576a614d4e565b8085161561577757918102915b93841c939080029061574e565b509250929050565b60008261579b5750600161034f565b816157a85750600061034f565b81600181146157be57600281146157c8576157e4565b600191505061034f565b60ff8411156157d9576157d9614d4e565b50506001821b61034f565b5060208310610133831016604e8410600b8410161715615807575081810a61034f565b6158118383615749565b806000190482111561582557615825614d4e565b029392505050565b60006112b8838361578c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561587a57600080fd5b815180151581146112b857600080fd5b60008251614c108184602087016149e9565b828152604060208201526000612a1a6040830184614a0d56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564