270.3k txs
1.1m calls
constructor
constructor(address _router, address _roleStore, address _dataStore, address _eventEmitter, address _depositHandler, address _withdrawalHandler, address _orderHandler)
functions
dataStore
viewfunction dataStore() view returns (address)
depositHandler
viewfunction depositHandler() view returns (address)
eventEmitter
viewfunction eventEmitter() view returns (address)
orderHandler
viewfunction orderHandler() view returns (address)
roleStore
viewfunction roleStore() view returns (address)
router
viewfunction router() view returns (address)
withdrawalHandler
viewfunction withdrawalHandler() view returns (address)
cancelDeposit
payablefunction cancelDeposit(bytes32 key) payable
cancelOrder
payablefunction cancelOrder(bytes32 key) payable
cancelWithdrawal
payablefunction cancelWithdrawal(bytes32 key) payable
claimAffiliateRewards
payablefunction claimAffiliateRewards(address[] markets, address[] tokens, address receiver) payable returns (uint256[])
claimCollateral
payablefunction claimCollateral(address[] markets, address[] tokens, uint256[] timeKeys, address receiver) payable returns (uint256[])
claimFundingFees
payablefunction claimFundingFees(address[] markets, address[] tokens, address receiver) payable returns (uint256[])
claimUiFees
payablefunction claimUiFees(address[] markets, address[] tokens, address receiver) payable returns (uint256[])
createDeposit
payablefunction createDeposit(tuple params) payable returns (bytes32)
createOrder
payablefunction createOrder(tuple params) payable returns (bytes32)
createWithdrawal
payablefunction createWithdrawal(tuple params) payable returns (bytes32)
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
sendNativeToken
payablefunction sendNativeToken(address receiver, uint256 amount) payable
sendTokens
payablefunction sendTokens(address token, address receiver, uint256 amount) payable
sendWnt
payablefunction sendWnt(address receiver, uint256 amount) payable
setSavedCallbackContract
payablefunction setSavedCallbackContract(address market, address callbackContract) payable
setUiFeeFactor
payablefunction setUiFeeFactor(uint256 uiFeeFactor) payable
simulateExecuteDeposit
payablefunction simulateExecuteDeposit(bytes32 key, tuple simulatedOracleParams) payable
simulateExecuteOrder
payablefunction simulateExecuteOrder(bytes32 key, tuple simulatedOracleParams) payable
simulateExecuteWithdrawal
payablefunction simulateExecuteWithdrawal(bytes32 key, tuple simulatedOracleParams) payable
updateOrder
payablefunction updateOrder(bytes32 key, uint256 sizeDeltaUsd, uint256 acceptablePrice, uint256 triggerPrice, uint256 minOutputAmount) payable
events
No events.
errors
CollateralAlreadyClaimed
error CollateralAlreadyClaimed(uint256 adjustedClaimableAmount, uint256 claimedAmount)
DisabledFeature
error DisabledFeature(bytes32 key)
DisabledMarket
error DisabledMarket(address market)
EmptyAddressInMarketTokenBalanceValidation
error EmptyAddressInMarketTokenBalanceValidation(address market, address token)
EmptyDeposit
error EmptyDeposit()
EmptyHoldingAddress
error EmptyHoldingAddress()
EmptyMarket
error EmptyMarket()
EmptyOrder
error EmptyOrder()
EmptyReceiver
error EmptyReceiver()
EmptyTokenTranferGasLimit
error EmptyTokenTranferGasLimit(address token)
InvalidClaimAffiliateRewardsInput
error InvalidClaimAffiliateRewardsInput(uint256 marketsLength, uint256 tokensLength)
InvalidClaimCollateralInput
error InvalidClaimCollateralInput(uint256 marketsLength, uint256 tokensLength, uint256 timeKeysLength)
InvalidClaimFundingFeesInput
error InvalidClaimFundingFeesInput(uint256 marketsLength, uint256 tokensLength)
InvalidClaimUiFeesInput
error InvalidClaimUiFeesInput(uint256 marketsLength, uint256 tokensLength)
InvalidMarketTokenBalance
error InvalidMarketTokenBalance(address market, address token, uint256 balance, uint256 expectedMinBalance)
InvalidMarketTokenBalanceForClaimableFunding
error InvalidMarketTokenBalanceForClaimableFunding(address market, address token, uint256 balance, uint256 claimableFundingFeeAmount)
InvalidMarketTokenBalanceForCollateralAmount
error InvalidMarketTokenBalanceForCollateralAmount(address market, address token, uint256 balance, uint256 collateralAmount)
InvalidUiFeeFactor
error InvalidUiFeeFactor(uint256 uiFeeFactor, uint256 maxUiFeeFactor)
TokenTransferError
error TokenTransferError(address token, address receiver, uint256 amount)
Unauthorized
error Unauthorized(address msgSender, string role)
creation bytecode
0x6101606040523480156200001257600080fd5b506040516200540a3803806200540a83398101604081905262000035916200008a565b60016000556001600160a01b0395861660805295851660a05292841660c05290831660e052821661010052811661012052166101405262000135565b6001600160a01b03811681146200008757600080fd5b50565b600080600080600080600060e0888a031215620000a657600080fd5b8751620000b38162000071565b6020890151909750620000c68162000071565b6040890151909650620000d98162000071565b6060890151909550620000ec8162000071565b6080890151909450620000ff8162000071565b60a0890151909350620001128162000071565b60c0890151909250620001258162000071565b8091505092959891949750929550565b60805160a05160c05160e05161010051610120516101405161519a62000270600039600081816103c70152818161078c01528181610bd70152818161111401526112e90152600081816101a401528181610deb01528181610f6901526114c80152600081816103190152818161096701528181610d76015261153d01526000818161034d0152818161058801528181610aaf01528181610d0f0152818161167701526118f30152600081816102ac015281816104c801528181610567015281816106bb01528181610849015281816109f401528181610a8e01528181610c9201528181610cee01528181610e7a01528181610ff801528181611180015281816111fe015281816115ca015281816116560152818161184601526118d201526000818161044701526117670152600061022c015261519a6000f3fe60806040526004361061013c5760003560e01c806301a9cbb214610141578063073fb09e1461016a578063263ea0fa1461017f5780632c2f3c071461019257806331404484146101d357806349287a22146101e65780634a393a41146101f95780634a4a7b041461021a57806353ead2d31461024e5780635a03cd94146102615780635b4e9561146102745780636331d7a714610287578063660d0d671461029a5780637213c5a0146102ce5780637489ec23146102e15780637d39aaf1146102f45780639c8b2cfb146103075780639ff78c301461033b578063aab286f81461036f578063ac9650d814610382578063ad23c5a1146103a2578063b5848305146103b5578063b9e2f5ee146103e9578063c41b1ab3146103fc578063e6d66ac81461040f578063e9249b5714610422578063f887ea4014610435575b600080fd5b61015461014f366004613a31565b610469565b6040516101619190613aa8565b60405180910390f35b61017d610178366004613aec565b61067d565b005b61017d61018d366004613b25565b61074e565b34801561019e57600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b6040516101619190613c3d565b61017d6101e1366004613c51565b6107f1565b6101546101f4366004613a31565b61099e565b61020c610207366004613c6a565b610b95565b604051908152602001610161565b34801561022657600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b61017d61025c366004613ca5565b610c5d565b61017d61026f366004613c51565b610cc1565b61020c610282366004613cd1565b610d35565b61017d610295366004613b25565b610dad565b3480156102a657600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102dc366004613c51565b610e22565b61017d6102ef366004613c51565b610fa0565b61017d610302366004613ca5565b61114b565b34801561031357600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b34801561034757600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b61017d61037d366004613d0c565b6111a6565b610395610390366004613d47565b611367565b6040516101619190613e0b565b61020c6103b0366004613e6d565b611486565b3480156103c157600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b61017d6103f7366004613b25565b6114ff565b61015461040a366004613a31565b611574565b61017d61041d366004613ea8565b611700565b610154610430366004613ee9565b6117d0565b34801561044157600080fd5b506101c67f000000000000000000000000000000000000000000000000000000000000000081565b60606002600054036104965760405162461bcd60e51b815260040161048d90613fd7565b60405180910390fd5b600260005582518451146104c357835183516040516374cee48d60e01b815260040161048d92919061400e565b6104f57f00000000000000000000000000000000000000000000000000000000000000006104f0306119a6565b611a33565b835133906000906001600160401b038111156105135761051361387d565b60405190808252806020026020018201604052801561053c578160200160208202803683370190505b50905060005b865181101561066e5773bf225c4c4471419b214064ca20e1dc2523594f91637ed7d8ea7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000868b86815181106105ba576105ba61401c565b60200260200101518b87815181106105d4576105d461401c565b60200260200101518b6040518763ffffffff1660e01b81526004016105fe9695949392919061403f565b602060405180830381865af415801561061b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063f9190614079565b8282815181106106515761065161401c565b602090810291909101015280610666816140a8565b915050610542565b50600160005595945050505050565b60026000540361069f5760405162461bcd60e51b815260040161048d90613fd7565b600260005560405163b3678d5b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015233602483015280841660448301528216606482015273c55e165bf9247256dbeca8dde892ae9a7b271b2d9063b3678d5b9060840160006040518083038186803b15801561072d57600080fd5b505af4158015610741573d6000803e3d6000fd5b5050600160005550505050565b6002600054036107705760405162461bcd60e51b815260040161048d90613fd7565b600260005560405163131f507d60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063263ea0fa906107c39085908590600401614105565b600060405180830381600087803b1580156107dd57600080fd5b505af1158015610741573d6000803e3d6000fd5b6002600054036108135760405162461bcd60e51b815260040161048d90613fd7565b6002600090815560405163fdfc26f360e01b815273556665e81c1516b6028d04ee081518b3818d14539063fdfc26f390610873907f000000000000000000000000000000000000000000000000000000000000000090869060040161417e565b600060405180830381865af4158015610890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108b891908101906142dc565b905060006108c582515190565b6001600160a01b0316036108ec576040516395b66fe960e01b815260040160405180910390fd5b336108f682515190565b6001600160a01b031614610951576040805163a35b150b60e01b8152336004820152602481019190915260196044820152781858d8dbdd5b9d08199bdc8818d85b98d95b11195c1bdcda5d603a1b606482015260840161048d565b604051630c50112160e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906331404484906024016107c3565b60606002600054036109c25760405162461bcd60e51b815260040161048d90613fd7565b600260005582518451146109ef5783518351604051635b3043dd60e01b815260040161048d92919061400e565b610a1c7f00000000000000000000000000000000000000000000000000000000000000006104f030611a62565b835133906000906001600160401b03811115610a3a57610a3a61387d565b604051908082528060200260200182016040528015610a63578160200160208202803683370190505b50905060005b865181101561066e57734045a052a14a08d5053d79afd06128cfb3946aa863d57d53997f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a8581518110610ae057610ae061401c565b60200260200101518a8681518110610afa57610afa61401c565b6020026020010151888b6040518763ffffffff1660e01b8152600401610b259695949392919061403f565b602060405180830381865af4158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b669190614079565b828281518110610b7857610b7861401c565b602090810291909101015280610b8d816140a8565b915050610a69565b6000600260005403610bb95760405162461bcd60e51b815260040161048d90613fd7565b600260005560405163718a30b960e11b815233906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e314617290610c0e90849087906004016145ce565b6020604051808303816000875af1158015610c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c519190614079565b60016000559392505050565b600260005403610c7f5760405162461bcd60e51b815260040161048d90613fd7565b6002600055610c8d82611ab6565b610cb87f00000000000000000000000000000000000000000000000000000000000000008383611ae0565b50506001600055565b600260005403610ce35760405162461bcd60e51b815260040161048d90613fd7565b600260005533610cb87f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008385611bec565b6000600260005403610d595760405162461bcd60e51b815260040161048d90613fd7565b600260005560405162bd80c160e61b815233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632f60304090610c0e90849087906004016146ee565b600260005403610dcf5760405162461bcd60e51b815260040161048d90613fd7565b6002600055604051636331d7a760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636331d7a7906107c39085908590600401614105565b600260005403610e445760405162461bcd60e51b815260040161048d90613fd7565b6002600090815560405163fdfc26f360e01b815273713c6a2479f6c079055a6ad3690d95dedcef9e1e9063fdfc26f390610ea4907f000000000000000000000000000000000000000000000000000000000000000090869060040161417e565b600060405180830381865af4158015610ec1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ee9919081019061483a565b905033610ef582515190565b6001600160a01b031614610f53576040805163a35b150b60e01b81523360048201526024810191909152601c60448201527b1858d8dbdd5b9d08199bdc8818d85b98d95b15da5d1a191c985dd85b60221b606482015260840161048d565b6040516303909e2d60e51b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637213c5a0906024016107c3565b600260005403610fc25760405162461bcd60e51b815260040161048d90613fd7565b6002600090815560405163fdfc26f360e01b815273a5cd5caa2453daf1daaf1a5c8e9e52cbb750386b9063fdfc26f390611022907f000000000000000000000000000000000000000000000000000000000000000090869060040161417e565b600060405180830381865af415801561103f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110679190810190614a6e565b9050600061107482515190565b6001600160a01b03160361109b57604051631630779760e01b815260040160405180910390fd5b336110a582515190565b6001600160a01b0316146110fe576040805163a35b150b60e01b81523360048201526024810191909152601760448201527630b1b1b7bab73a103337b91031b0b731b2b627b93232b960491b606482015260840161048d565b604051637489ec2360e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637489ec23906024016107c3565b60026000540361116d5760405162461bcd60e51b815260040161048d90613fd7565b600260005561117b82611ab6565b610cb87f00000000000000000000000000000000000000000000000000000000000000008383611dba565b6002600054036111c85760405162461bcd60e51b815260040161048d90613fd7565b6002600090815560405163fdfc26f360e01b815273a5cd5caa2453daf1daaf1a5c8e9e52cbb750386b9063fdfc26f390611228907f0000000000000000000000000000000000000000000000000000000000000000908a9060040161417e565b600060405180830381865af4158015611245573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261126d9190810190614a6e565b90503361127982515190565b6001600160a01b0316146112d2576040805163a35b150b60e01b81523360048201526024810191909152601760448201527630b1b1b7bab73a103337b9103ab83230ba32a7b93232b960491b606482015260840161048d565b6040516396fe6a9360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396fe6a939061132890899089908990899089908990600401614bfa565b600060405180830381600087803b15801561134257600080fd5b505af1158015611356573d6000803e3d6000fd5b505060016000555050505050505050565b6060816001600160401b038111156113815761138161387d565b6040519080825280602002602001820160405280156113b457816020015b606081526020019060019003908161139f5790505b50905060005b8281101561147e57600080308686858181106113d8576113d861401c565b90506020028101906113ea9190614ced565b6040516113f8929190614d33565b600060405180830381855af49150503d8060008114611433576040519150601f19603f3d011682016040523d82523d6000602084013e611438565b606091505b50915091508161144b5761144b81611e43565b8084848151811061145e5761145e61401c565b602002602001018190525050508080611476906140a8565b9150506113ba565b505b92915050565b60006002600054036114aa5760405162461bcd60e51b815260040161048d90613fd7565b6002600055604051634c5a91e560e11b815233906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906398b523ca90610c0e9084908790600401614d43565b6002600054036115215760405162461bcd60e51b815260040161048d90613fd7565b6002600055604051635cf17af760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b9e2f5ee906107c39085908590600401614105565b60606002600054036115985760405162461bcd60e51b815260040161048d90613fd7565b600260005582518451146115c55783518351604051637363cfa560e01b815260040161048d92919061400e565b6115f27f00000000000000000000000000000000000000000000000000000000000000006104f030611e81565b6115fb82611ab6565b835133906000906001600160401b038111156116195761161961387d565b604051908082528060200260200182016040528015611642578160200160208202803683370190505b50905060005b865181101561066e576116d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008984815181106116a8576116a861401c565b60200260200101518985815181106116c2576116c261401c565b6020026020010151878a611ed0565b8282815181106116e3576116e361401c565b6020908102919091010152806116f8816140a8565b915050611648565b6002600054036117225760405162461bcd60e51b815260040161048d90613fd7565b600260005561173082611ab6565b6040516303704f0f60e31b81526001600160a01b0384811660048301523360248301819052848216604484015260648301849052917f000000000000000000000000000000000000000000000000000000000000000090911690631b82787890608401600060405180830381600087803b1580156117ad57600080fd5b505af11580156117c1573d6000803e3d6000fd5b50506001600055505050505050565b60606002600054036117f45760405162461bcd60e51b815260040161048d90613fd7565b60026000558351855114158061180c57508251845114155b156118415784518451845160405163216068f960e11b815260048101939093526024830191909152604482015260640161048d565b61186e7f00000000000000000000000000000000000000000000000000000000000000006104f030612155565b61187782611ab6565b845133906000906001600160401b038111156118955761189561387d565b6040519080825280602002602001820160405280156118be578160200160208202803683370190505b50905060005b8751811015611996576119677f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a84815181106119245761192461401c565b60200260200101518a858151811061193e5761193e61401c565b60200260200101518a86815181106119585761195861401c565b6020026020010151888b6121a2565b8282815181106119795761197961401c565b60209081029190910101528061198e816140a8565b9150506118c4565b5060016000559695505050505050565b60006040516020016119e9906020808252601e908201527f434c41494d5f55495f464545535f464541545552455f44495341424c45440000604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03841690820152606001604051602081830303815290604052805190602001209050919050565b611a3d828261260a565b15611a5e5760405163dd70e0c960e01b81526004810182905260240161048d565b5050565b60006040516020016119e99060208082526028908201527f434c41494d5f414646494c494154455f524557415244535f464541545552455f604082015267111254d05093115160c21b606082015260800190565b6001600160a01b038116611add5760405163d551823d60e01b815260040160405180910390fd5b50565b80600003611aed57505050565b611af682611ab6565b6000836001600160a01b031663bd02d0f5604051602001611b48906020808252601f908201527f4e41544956455f544f4b454e5f5452414e534645525f4741535f4c494d495400604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611b7c91815260200190565b602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd9190614079565b90506000806000806000868887f190508015611bda575050505050565b611be5858585611dba565b5050505050565b6000846001600160a01b031663bd02d0f5604051602001611c329060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611c6691815260200190565b602060405180830381865afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190614079565b905080821115611cce578181604051638146813960e01b815260040161048d92919061400e565b846001600160a01b031663e2a4853a611ce68561267d565b846040518363ffffffff1660e01b8152600401611d0492919061400e565b6020604051808303816000875af1158015611d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d479190614079565b506040516311bfdfd160e21b815273dfe1ea56e7200b04ee596737caee714937824304906346ff7f4490611d8390879087908790600401614e5e565b60006040518083038186803b158015611d9b57600080fd5b505af4158015611daf573d6000803e3d6000fd5b505050505050505050565b80600003611dc757505050565b611dd082611ab6565b6000611ddb846126b0565b9050806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e1857600080fd5b505af1158015611e2c573d6000803e3d6000fd5b5050505050611e3d8482858561275d565b50505050565b600080611e4f83612993565b915091508015611e73578160405162461bcd60e51b815260040161048d9190614e82565b611e7c83612a23565b505050565b60006040516020016119e99060208082526023908201527f434c41494d5f46554e44494e475f464545535f464541545552455f444953414260408201526213115160ea1b606082015260800190565b600080611ede868686612a2c565b60405163bd02d0f560e01b8152600481018290529091506000906001600160a01b038a169063bd02d0f590602401602060405180830381865afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d9190614079565b604051637152429d60e11b81529091506001600160a01b038a169063e2a4853a90611f7f90859060009060040161400e565b6020604051808303816000875af1158015611f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc29190614079565b506000896001600160a01b031663e98aabc1611fde8a8a612a9d565b846040518363ffffffff1660e01b8152600401611ffc92919061400e565b6020604051808303816000875af115801561201b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203f9190614079565b60405163078d3b7960e01b81529091506001600160a01b0389169063078d3b7990612072908a9089908790600401614e5e565b600060405180830381600087803b15801561208c57600080fd5b505af11580156120a0573d6000803e3d6000fd5b505050506120ae8a89612b04565b604051634ee4c83160e01b81526001600160a01b03808b166004830152808a166024830152808916604483015280881660648301528616608482015260a4810183905260c4810182905273dfe1ea56e7200b04ee596737caee71493782430490634ee4c8319060e40160006040518083038186803b15801561212f57600080fd5b505af4158015612143573d6000803e3d6000fd5b50939c9b505050505050505050505050565b60006040516020016119e99060208082526021908201527f434c41494d5f434f4c4c41544552414c5f464541545552455f44495341424c456040820152601160fa1b606082015260800190565b600080886001600160a01b031663bd02d0f56121c089898989612b1c565b6040518263ffffffff1660e01b81526004016121de91815260200190565b602060405180830381865afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190614079565b90506000808a6001600160a01b031663bd02d0f561223e8b8b8b612b94565b6040518263ffffffff1660e01b815260040161225c91815260200190565b602060405180830381865afa158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d9190614079565b905060008b6001600160a01b031663bd02d0f56122bc8c8c8c8c612be9565b6040518263ffffffff1660e01b81526004016122da91815260200190565b602060405180830381865afa1580156122f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231b9190614079565b905080821161232a578061232c565b815b9250505060008a6001600160a01b031663bd02d0f561234d8b8b8b8b612bfa565b6040518263ffffffff1660e01b815260040161236b91815260200190565b602060405180830381865afa158015612388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ac9190614079565b905060006123ba8484612c39565b90508181116123e0578082604051631d8db13960e31b815260040161048d92919061400e565b60006123ec8383614e95565b90508c6001600160a01b031663e2a4853a6124098d8d8d8d612bfa565b846040518363ffffffff1660e01b815260040161242792919061400e565b6020604051808303816000875af1158015612446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246a9190614079565b5060008d6001600160a01b031663e98aabc16124868e8e612c52565b846040518363ffffffff1660e01b81526004016124a492919061400e565b6020604051808303816000875af11580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190614079565b60405163078d3b7960e01b81529091506001600160a01b038d169063078d3b799061251a908e908c908790600401614e5e565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125568e8d612b04565b6040516359e8c46f60e11b81526001600160a01b03808f166004830152808e166024830152808d166044830152606482018c9052808b166084830152891660a482015260c4810183905260e4810182905273dfe1ea56e7200b04ee596737caee7149378243049063b3d188de906101040160006040518083038186803b1580156125df57600080fd5b505af41580156125f3573d6000803e3d6000fd5b509398505050505050505050979650505050505050565b604051633d70e7e560e11b8152600481018290526000906001600160a01b03841690637ae1cfca90602401602060405180830381865afa158015612652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126769190614ea8565b9392505050565b60006040516020016119e9906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b6000816001600160a01b03166321f8a7216040516020016126e89060208082526003908201526215d39560ea1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161271c91815260200190565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114809190614ec5565b8015611e3d5761276c82611ab6565b6000846001600160a01b031663bd02d0f561278686612c63565b6040518263ffffffff1660e01b81526004016127a491815260200190565b602060405180830381865afa1580156127c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e59190614079565b90508060000361280a5783604051634fe14bfd60e11b815260040161048d9190613c3d565b600061281885858585612ca1565b5090508015612828575050611e3d565b6000866001600160a01b03166321f8a72160405160200161286c906020808252600f908201526e484f4c44494e475f4144445245535360881b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016128a091815260200190565b602060405180830381865afa1580156128bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e19190614ec5565b90506001600160a01b03811661290a57604051633a6de2f560e21b815260040160405180910390fd5b60008061291988848888612ca1565b91509150811561292d575050505050611e3d565b600061293882612993565b5090507fc9f14d9a0a9b46470c7c0b6c508f8283abaab7f795f153953c58cd4250824dae818360405161296c929190614ee2565b60405180910390a188888860405163012f3b8f60e71b815260040161048d93929190614e5e565b606060006044835110156129ba575050604080516020810190915260008082529092909150565b60006129c7846020015190565b90506307b9e43360e51b6001600160e01b0319821601612a0657600484019350838060200190518101906129fb9190614f07565b946001945092505050565b600060405180602001604052806000815250909250925050915091565b80518060208301fd5b6000604051602001612a3d90614f9a565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915280851660608301528316608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b6000604051602001612aae90614f9a565b60408051601f198184030181528282528051602091820120908301526001600160a01b03808616918301919091528316606082015260800160405160208183030381529060405280519060200120905092915050565b6000612b108383612e09565b9050611e7c8382612eb6565b6000604051602001612b2d90614fcc565b60408051601f198184030181528282528051602091820120908301526001600160a01b0380881691830191909152808616606083015260808201859052831660a082015260c001604051602081830303815290604052805190602001209050949350505050565b6000604051602001612ba590615001565b60408051601f198184030181528282528051602091820120908301526001600160a01b0380871691830191909152841660608201526080810183905260a001612a7e565b6000604051602001612b2d90615001565b6000604051602001612b2d9060208082526019908201527810d3105253515117d0d3d31310551154905317d05353d55395603a1b604082015260600190565b6000612676838368327cb2734119d3b7a9601e1b612ef9565b6000604051602001612aae90614fcc565b60006040516020016119e9906020808252601890820152771513d2d15397d514905394d1915497d1d054d7d31253525560421b604082015260600190565b60006060600063a9059cbb60e01b8686604051602401612cc292919061417e565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600080886001600160a01b03168684604051612d139190615036565b60006040518083038160008787f1925050503d8060008114612d51576040519150601f19603f3d011682016040523d82523d6000602084013e612d56565b606091505b50915091508115612df7578051600003612db4576001600160a01b0389163b612db45760006040518060400160405280601481526020017310d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b81525094509450505050612e00565b60008151118015612dd6575080806020019051810190612dd49190614ea8565b155b15612de957600094509250612e00915050565b600194509250612e00915050565b60009450925050505b94509492505050565b60408051608081018252600080825260208201819052918101829052606081019190915260405163a8d8fff560e01b81526000907341613136174912714faf4cf0680fb1acbe0cc7d19063a8d8fff590612e699087908790600401615052565b608060405180830381865af4158015612e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaa919061506c565b90506126768482612f0e565b612ec582828360400151612fd7565b80606001516001600160a01b031681604001516001600160a01b031603612eea575050565b611a5e82828360600151612fd7565b6000612f068484846131d5565b949350505050565b80516001600160a01b0316612f36576040516302fde0d760e11b815260040160405180910390fd5b6000826001600160a01b0316637ae1cfca612f548460000151613284565b6040518263ffffffff1660e01b8152600401612f7291815260200190565b602060405180830381865afa158015612f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb39190614ea8565b90508015611e7c5781516040516309f8c93760e01b815261048d9190600401613c3d565b81516001600160a01b03161580612ff557506001600160a01b038116155b1561301857815160405163e474a42560e01b815261048d91908390600401615052565b81516040516370a0823160e01b81526000916001600160a01b038416916370a082319161304791600401613c3d565b602060405180830381865afa158015613064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130889190614079565b905060006130978585856132bc565b9050808210156130c35783516040516333a1ea6b60e01b815261048d91908590859085906004016150f0565b60006130d7868660000151866001806135df565b90506130ec86866000015186600060016135df565b6130f69082615119565b90508083101561312257845160405163808c464f60e01b815261048d91908690869085906004016150f0565b6000866001600160a01b031663bd02d0f5613141886000015188612a9d565b6040518263ffffffff1660e01b815260040161315f91815260200190565b602060405180830381865afa15801561317c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a09190614079565b9050808410156131cc578551604051639dd026db60e01b815261048d91908790879085906004016150f0565b50505050505050565b600080806000198587098587029250828110838203039150508060000361320f578382816132055761320561512c565b0492505050612676565b80841161321b57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006040516020016119e9906020808252601290820152711254d7d3505492d15517d11254d05093115160721b604082015260600190565b60006132f76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b031663bd02d0f561331486600001518661366f565b6040518263ffffffff1660e01b815260040161333291815260200190565b602060405180830381865afa15801561334f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133739190614079565b81528351613383908690856136a0565b602082015283516001600160a01b0386169063bd02d0f5906133a59086612c52565b6040518263ffffffff1660e01b81526004016133c391815260200190565b602060405180830381865afa1580156133e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134049190614079565b604082015283516001600160a01b0386169063bd02d0f590613426908661371a565b6040518263ffffffff1660e01b815260040161344491815260200190565b602060405180830381865afa158015613461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134859190614079565b606082015283516001600160a01b0386169063bd02d0f5906134a79086613754565b6040518263ffffffff1660e01b81526004016134c591815260200190565b602060405180830381865afa1580156134e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135069190614079565b608082015283516001600160a01b0386169063bd02d0f5906135289086613791565b6040518263ffffffff1660e01b815260040161354691815260200190565b602060405180830381865afa158015613563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135879190614079565b60a08201819052608082015160608301516040840151602085015185516135ae9190615119565b6135b89190615119565b6135c29190615119565b6135cc9190615119565b6135d69190615119565b95945050505050565b600081866001600160a01b031663bd02d0f56135fc8888886137c7565b6040518263ffffffff1660e01b815260040161361a91815260200190565b602060405180830381865afa158015613637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365b9190614079565b6136659190615142565b9695505050505050565b6000604051602001612aae906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b6000836001600160a01b031663bd02d0f56136bb8585613840565b6040518263ffffffff1660e01b81526004016136d991815260200190565b602060405180830381865afa1580156136f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f069190614079565b6000604051602001612aae9060208082526014908201527310d31052535050931157d1915157d05353d5539560621b604082015260600190565b6000604051602001612aae9060208082526017908201527610d31052535050931157d55257d1915157d05353d55395604a1b604082015260600190565b6000604051602001612aae9060208082526010908201526f10519192531250551157d49155d0549160821b604082015260600190565b60006040516020016137fb906020808252600e908201526d434f4c4c41544552414c5f53554d60901b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a001612a7e565b6000604051602001612aae9060208082526017908201527614d5d05417d253541050d517d413d3d317d05353d55395604a1b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156138b5576138b561387d565b60405290565b604051606081016001600160401b03811182821017156138b5576138b561387d565b60405161012081016001600160401b03811182821017156138b5576138b561387d565b60405160e081016001600160401b03811182821017156138b5576138b561387d565b60405161014081016001600160401b03811182821017156138b5576138b561387d565b604051601f8201601f191681016001600160401b038111828210171561396d5761396d61387d565b604052919050565b60006001600160401b0382111561398e5761398e61387d565b5060051b60200190565b6001600160a01b0381168114611add57600080fd5b80356139b881613998565b919050565b600082601f8301126139ce57600080fd5b813560206139e36139de83613975565b613945565b82815260059290921b84018101918181019086841115613a0257600080fd5b8286015b84811015613a26578035613a1981613998565b8352918301918301613a06565b509695505050505050565b600080600060608486031215613a4657600080fd5b83356001600160401b0380821115613a5d57600080fd5b613a69878388016139bd565b94506020860135915080821115613a7f57600080fd5b50613a8c868287016139bd565b9250506040840135613a9d81613998565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015613ae057835183529284019291840191600101613ac4565b50909695505050505050565b60008060408385031215613aff57600080fd5b8235613b0a81613998565b91506020830135613b1a81613998565b809150509250929050565b6000806040808486031215613b3957600080fd5b833592506020808501356001600160401b0380821115613b5857600080fd5b8187019150838289031215613b6c57600080fd5b613b74613893565b823582811115613b8357600080fd5b613b8f8a8286016139bd565b8252508383013582811115613ba357600080fd5b80840193505088601f840112613bb857600080fd5b82359150613bc86139de83613975565b82815260069290921b8301840191848101908a841115613be757600080fd5b938501935b83851015613c275786858c031215613c045760008081fd5b613c0c613893565b85358152868601358782015282529386019390850190613bec565b8086840152505080955050505050509250929050565b6001600160a01b0391909116815260200190565b600060208284031215613c6357600080fd5b5035919050565b600060208284031215613c7c57600080fd5b81356001600160401b03811115613c9257600080fd5b82016101a0818503121561267657600080fd5b60008060408385031215613cb857600080fd5b8235613cc381613998565b946020939093013593505050565b600060208284031215613ce357600080fd5b81356001600160401b03811115613cf957600080fd5b8201610180818503121561267657600080fd5b600080600080600060a08688031215613d2457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060208385031215613d5a57600080fd5b82356001600160401b0380821115613d7157600080fd5b818501915085601f830112613d8557600080fd5b813581811115613d9457600080fd5b8660208260051b8501011115613da957600080fd5b60209290920196919550909350505050565b60005b83811015613dd6578181015183820152602001613dbe565b50506000910152565b60008151808452613df7816020860160208601613dbb565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613e6057603f19888603018452613e4e858351613ddf565b94509285019290850190600101613e32565b5092979650505050505050565b600060208284031215613e7f57600080fd5b81356001600160401b03811115613e9557600080fd5b8201610160818503121561267657600080fd5b600080600060608486031215613ebd57600080fd5b8335613ec881613998565b92506020840135613ed881613998565b929592945050506040919091013590565b60008060008060808587031215613eff57600080fd5b84356001600160401b0380821115613f1657600080fd5b613f22888389016139bd565b9550602091508187013581811115613f3957600080fd5b613f4589828a016139bd565b955050604087013581811115613f5a57600080fd5b87019050601f81018813613f6d57600080fd5b8035613f7b6139de82613975565b81815260059190911b8201830190838101908a831115613f9a57600080fd5b928401925b82841015613fb857833582529284019290840190613f9f565b8096505050505050613fcc606086016139ad565b905092959194509250565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b918252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03169052565b6001600160a01b0396871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b60006020828403121561408b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016140ba576140ba614092565b5060010190565b600081518084526020808501945080840160005b838110156140fa5781516001600160a01b0316875295820195908201906001016140d5565b509495945050505050565b60006040848352602081818501528451828386015261412760808601826140c1565b86830151868203603f19016060880152805180835290840192506000918401905b808310156141715783518051835285015185830152928401926001929092019190850190614148565b5098975050505050505050565b6001600160a01b03929092168252602082015260400190565b80516139b881613998565b600082601f8301126141b357600080fd5b815160206141c36139de83613975565b82815260059290921b840181019181810190868411156141e257600080fd5b8286015b84811015613a265780516141f981613998565b83529183019183016141e6565b600060c0828403121561421857600080fd5b60405160c081016001600160401b038111828210171561423a5761423a61387d565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b8015158114611add57600080fd5b60006020828403121561429f57600080fd5b604051602081016001600160401b03811182821017156142c1576142c161387d565b806040525080915082516142d48161427f565b905292915050565b6000602082840312156142ee57600080fd5b81516001600160401b038082111561430557600080fd5b818401915061010080838703121561431c57600080fd5b6143246138bb565b83518381111561433357600080fd5b8401610120818903121561434657600080fd5b61434e6138dd565b61435782614197565b815261436560208301614197565b602082015261437660408301614197565b604082015261438760608301614197565b606082015261439860808301614197565b60808201526143a960a08301614197565b60a08201526143ba60c08301614197565b60c082015260e0820151858111156143d157600080fd5b6143dd8a8285016141a2565b60e08301525083820151858111156143f457600080fd5b6144008a8285016141a2565b82860152508252506144158760208601614206565b60208201526144278760e0860161428d565b60408201529695505050505050565b6000808335601e1984360301811261444d57600080fd5b83016020810192503590506001600160401b0381111561446c57600080fd5b8060051b360382131561447e57600080fd5b9250929050565b8183526000602080850194508260005b858110156140fa5781356144a881613998565b6001600160a01b031687529582019590820190600101614495565b600081356144d081613998565b6001600160a01b0390811684526020830135906144ec82613998565b908116602085015260408301359061450382613998565b908116604085015260608301359061451a82613998565b908116606085015260808301359061453182613998565b16608084015261454460a0830183614436565b60c060a08601526135d660c086018284614485565b60088110611add57600080fd5b80356139b881614559565b634e487b7160e01b600052602160045260246000fd5b6008811061459757614597614571565b9052565b60038110611add57600080fd5b80356139b88161459b565b6003811061459757614597614571565b80356139b88161427f565b6001600160a01b038316815260406020820152600082353684900360be190181126145f857600080fd5b6101a08060408501526146116101e085018684016144c3565b91506146626060850160208701803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c08301525050565b61466f6101008601614566565b61014061467e81870183614587565b61468b61012088016145a8565b915061016061469c818801846145b3565b6146a78289016145c3565b925061018091506146bb8288018415159052565b6146c68189016145c3565b9250506146d68387018315159052565b808701356101c0870152505050809150509392505050565b6001600160a01b0383168152604060208201819052614717908201614712846139ad565b614032565b6000614725602084016139ad565b6147326060840182614032565b5061473f604084016139ad565b61474c6080840182614032565b50614759606084016139ad565b61476660a0840182614032565b50614773608084016139ad565b61478060c0840182614032565b5061478d60a084016139ad565b61479a60e0840182614032565b506147a860c0840184614436565b61018061010081818701526147c26101c087018486614485565b93506147d160e0880188614436565b9350610120603f1988870301818901526147ec868684614485565b955061014094508289013585890152614806818a016145c3565b9250505061016061481a8188018315159052565b928701359186019190915250909301356101a09092019190915250919050565b60006020828403121561484c57600080fd5b81516001600160401b038082111561486357600080fd5b90830190610100828603121561487857600080fd5b6148806138bb565b82518281111561488f57600080fd5b830160e081880312156148a157600080fd5b6148a9613900565b6148b282614197565b81526148c060208301614197565b60208201526148d160408301614197565b60408201526148e260608301614197565b60608201526148f360808301614197565b608082015260a08201518481111561490a57600080fd5b614916898285016141a2565b60a08301525060c08201518481111561492e57600080fd5b61493a898285016141a2565b60c0830152508252506149508660208501614206565b60208201526149628660e0850161428d565b604082015295945050505050565b80516139b881614559565b80516139b88161459b565b6000610140828403121561499957600080fd5b6149a1613922565b90506149ac82614970565b81526149ba6020830161497b565b602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b600060608284031215614a2b57600080fd5b614a336138bb565b90508151614a408161427f565b81526020820151614a508161427f565b60208201526040820151614a638161427f565b604082015292915050565b600060208284031215614a8057600080fd5b81516001600160401b0380821115614a9757600080fd5b908301906101c08286031215614aac57600080fd5b614ab46138bb565b825182811115614ac357600080fd5b830160e08188031215614ad557600080fd5b614add613900565b614ae682614197565b8152614af460208301614197565b6020820152614b0560408301614197565b6040820152614b1660608301614197565b6060820152614b2760808301614197565b6080820152614b3860a08301614197565b60a082015260c082015184811115614b4f57600080fd5b614b5b898285016141a2565b60c083015250825250614b718660208501614986565b6020820152614962866101608501614a19565b614b8f828251614587565b6020810151614ba160208401826145b3565b5060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152505050565b86815285602082015284604082015283606082015282608082015260c060a0820152600082516101c060c084015260018060a01b0380825116610280850152806020830151166102a0850152806040830151166102c0850152506060810151614c676102e0850182614032565b506080810151614c7b610300850182614032565b5060a0810151614c8f610320850182614032565b5060c0015160e0610340840152614caa6103608401826140c1565b90506020840151614cbe60e0850182614b84565b506040848101518051151561022086015260208101511515610240860152908101511515610260850152614171565b6000808335601e19843603018112614d0457600080fd5b8301803591506001600160401b03821115614d1e57600080fd5b60200191503681900382131561447e57600080fd5b8183823760009101908152919050565b6001600160a01b0383168152604060208201819052614d67908201614712846139ad565b6000614d75602084016139ad565b614d826060840182614032565b50614d8f604084016139ad565b614d9c6080840182614032565b50614da9606084016139ad565b614db660a0840182614032565b50614dc46080840184614436565b6101608060c0860152614ddc6101a086018385614485565b9250614deb60a0870187614436565b868503603f190160e08801529250614e04848483614485565b935050610100915060c08601358286015261012060e087013581870152614e2c8388016145c3565b9250610140614e3e8188018515159052565b908701359186019190915290940135610180909301929092525092915050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020815260006126766020830184613ddf565b8181038181111561148057611480614092565b600060208284031215614eba57600080fd5b81516126768161427f565b600060208284031215614ed757600080fd5b815161267681613998565b604081526000614ef56040830185613ddf565b82810360208401526135d68185613ddf565b600060208284031215614f1957600080fd5b81516001600160401b0380821115614f3057600080fd5b818401915084601f830112614f4457600080fd5b815181811115614f5657614f5661387d565b614f69601f8201601f1916602001613945565b9150808252856020828501011115614f8057600080fd5b614f91816020840160208601613dbb565b50949350505050565b60208082526018908201527710d31052535050931157d1955391125391d7d05353d5539560421b604082015260600190565b6020808252601b908201527a10d31052535050931157d0d3d31310551154905317d05353d55395602a1b604082015260600190565b6020808252601b908201527a21a620a4a6a0a12622afa1a7a62620aa22a920a62fa320a1aa27a960291b604082015260600190565b60008251615048818460208701613dbb565b9190910192915050565b6001600160a01b0392831681529116602082015260400190565b60006080828403121561507e57600080fd5b604051608081016001600160401b03811182821017156150a0576150a061387d565b60405282516150ae81613998565b815260208301516150be81613998565b602082015260408301516150d181613998565b604082015260608301516150e481613998565b60608201529392505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b8082018082111561148057611480614092565b634e487b7160e01b600052601260045260246000fd5b60008261515f57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212209c24aacb1a6d9fab1cf6335a4a05145f69e8f7e357b3e29c588e5e818ee3ddd764736f6c634300081200330000000000000000000000007452c558d45f8afc8c83dae62c3f8a5be19c71f60000000000000000000000003c3d99fd298f679dbc2cecd132b4ec4d0f5e6e72000000000000000000000000fd70de6b91282d8017aa4e741e9ae325cab992d8000000000000000000000000c8ee91a54287db53897056e12d9819156d3822fb0000000000000000000000009dc4f12eb2d8405b499fb5b8af79a5f64ab8a4570000000000000000000000009e32088f3c1a5eb38d32d1ec6ba0bcbf499dc9ac000000000000000000000000352f684ab9e97a6321a13cf03a61316b681d9fd2