0 txs
195 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
version
viewfunction version() view returns (string)
dagSwapByOrderId
payablefunction dagSwapByOrderId(uint256 orderId, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
dagSwapTo
payablefunction dagSwapTo(uint256 orderId, address receiver, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, uint256[] pools) payable returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionAndTrimInfo
event CommissionAndTrimInfo(uint256 commissionRate1, uint256 commissionRate2, bool isToBCommission, uint256 trimRate, uint256 chargeRate)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50615b0e80620000216000396000f3fe6080604052600436106100dd5760003560e01c806301617fab1461013457806303b87e5f1461014757806308298b5a1461016d5780630c307f76146101805780630d5f0e3b1461019357806344014e98146101a657806354fd4d50146101b9578063591b3d08146101fc5780636aa476451461020f57806373679b6b146102445780639871efa41461026657806398d2ac6214610279578063b80c2f091461028c578063b88154771461029f578063e0af3616146102b2578063e99bfa95146102cd578063f2c42696146102e0578063fa461e33146102f357600080fd5b3661012f5732330361012d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61012d610142366004614a80565b610313565b61015a610155366004614b2a565b610336565b6040519081526020015b60405180910390f35b61015a61017b366004614bf6565b6103e7565b61015a61018e366004614c68565b6104d1565b61015a6101a1366004614cda565b610680565b61015a6101b4366004614c68565b6106db565b3480156101c557600080fd5b506101ef6040518060400160405280600a81526020016976312e302e362d64616760b01b81525081565b6040516101649190614d6d565b61015a61020a366004615369565b6107f9565b34801561021b57600080fd5b50610237732949a7b2771cc70ecd400871236d345979e1c5e781565b604051610164919061542b565b34801561025057600080fd5b50610237600080516020615a7983398151915281565b61015a610274366004614cda565b610b0b565b61012d61028736600461543f565b610b25565b61015a61029a36600461547e565b610c5c565b61015a6102ad366004614c68565b610cb9565b3480156102be57600080fd5b506102376006602160991b0181565b61015a6102db366004615534565b610e7f565b61015a6102ee3660046155e4565b610e8f565b3480156102ff57600080fd5b5061012d61030e36600461563e565b610ea9565b600160ff1b81166001600160801b038216610330843384846110f3565b50505050565b600087608001354281101561035d5760405162461bcd60e51b8152600401610124906156bd565b6040518b8152600080516020615ab98339815191529060200160405180910390a16103d833808c610393368e90038e018e6156e5565b8c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103d392508d91508e9050615701565b611484565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020615ab98339815191529060200160405180910390a16000806104206000341186866115a2565b91509150600061042f8a611870565b90506001600160a01b038116156104465780610456565b600080516020615a598339815191525b9050826001600160a01b0316816001600160a01b0316146104b35760405162461bcd60e51b81526020600482015260176024820152760eadcf0e6eec2e07440e8ded6cadc40dad2e6dac2e8c6d604b1b6044820152606401610124565b6104c383838b8b338c8c8c61187c565b9a9950505050505050505050565b60008360800135428110156104f85760405162461bcd60e51b8152600401610124906156bd565b604051878152600080516020615ab98339815191529060200160405180910390a16001600160a01b0386161561052e5785610530565b335b9550600061053e8635611870565b905060008061054b611942565b909250905061056a828461056560408c0160208d0161570e565b611c4c565b61058d8961057e60408b0160208c0161570e565b6001600160a01b031690611cf8565b94506000806105ba84338d8d6040013587600001518f60200160208101906105b5919061570e565b611d8f565b915091506105cc8a8a8a333387611dd9565b6105eb848c838d60200160208101906105e5919061570e565b87611f87565b50866106018c61057e60408e0160208f0161570e565b61060b9190615741565b965089606001358710156106315760405162461bcd60e51b815260040161012490615754565b600080516020615a998339815191528561065160408d0160208e0161570e565b328d604001358b604051610669959493929190615784565b60405180910390a150505050505095945050505050565b60405160a086901c8152600090600080516020615ab98339815191529060200160405180910390a16000806106b9600034118686612228565b915091506106cd338984848b8b8b8b6124ec565b925050505b95945050505050565b60008360800135428110156107025760405162461bcd60e51b8152600401610124906156bd565b604051878152600080516020615ab98339815191529060200160405180910390a1600080610734600034118787612228565b90925090506001600160a01b03821661074d8835611870565b6001600160a01b031614801561078357506001600160a01b0381166107786040890160208a0161570e565b6001600160a01b0316145b6107cb5760405162461bcd60e51b81526020600482015260196024820152780eadcd2e6eec2e0ac667440e8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b6107ec33896001600160a01b031684848b604001358c606001358c8c6124ec565b9998505050505050505050565b60008660800151428110156108205760405162461bcd60e51b8152600401610124906156bd565b600061082f8960000151611870565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108955760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610124565b6001600160a01b0384166108e45760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610124565b6001600160a01b03851661092d5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610124565b60008960400151116109785760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610124565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906109a790309060040161542b565b602060405180830381865afa1580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906157b8565b905060005b8951811015610a4f578a60400151828b8381518110610a0e57610a0e6157d1565b6020026020010151610a2091906157e7565b610a2a91906157fe565b8a8281518110610a3c57610a3c6157d1565b60209081029190910101526001016109ed565b5060408a0181905260208a0151610a6f906001600160a01b031687611cf8565b9350610a7f8a8a8a30898b6125ba565b60208a01518490610a99906001600160a01b031688611cf8565b610aa39190615741565b93508960600151841015610ac95760405162461bcd60e51b815260040161012490615754565b600080516020615a99833981519152828b60200151328d6040015188604051610af6959493929190615784565b60405180910390a15050509695505050505050565b6000610b1b8686863387876103e7565b9695505050505050565b806080013542811015610b4a5760405162461bcd60e51b8152600401610124906156bd565b600080610b578435611870565b90506001600160a01b038116600080516020615a59833981519152148015610b9d57506006602160991b01610b92604086016020870161570e565b6001600160a01b0316145b15610bab5760009150610c44565b6001600160a01b0381166006602160991b01148015610bef5750600080516020615a59833981519152610be4604086016020870161570e565b6001600160a01b0316145b15610bfd5760019150610c44565b60405162461bcd60e51b815260206004820152601c60248201527b29bbb0b82bb930b81d1034b73b30b634b2103a37b5b2b7103830b4b960211b6044820152606401610124565b610c5486868487604001356110f3565b505050505050565b6000876080013542811015610c835760405162461bcd60e51b8152600401610124906156bd565b6040518a8152600080516020615ab98339815191529060200160405180910390a16104c3338080610393368e90038e018e6156e5565b6000836080013542811015610ce05760405162461bcd60e51b8152600401610124906156bd565b604051878152600080516020615ab98339815191529060200160405180910390a1600080610d126000341187876115a2565b90925090506000610d238835611870565b9050826001600160a01b0316816001600160a01b03161480610d6d57506001600160a01b038116158015610d6d57506001600160a01b038316600080516020615a59833981519152145b610db75760405162461bcd60e51b815260206004820152601b60248201527a0eadcf0e6eec2e07440cce4dedaa8ded6cadc40dad2e6dac2e8c6d602b1b6044820152606401610124565b6001600160a01b038216610dd160408a0160208b0161570e565b6001600160a01b03161480610e1f57506000610df360408a0160208b0161570e565b6001600160a01b0316148015610e1f57506001600160a01b038216600080516020615a59833981519152145b610e675760405162461bcd60e51b81526020600482015260196024820152780eadcf0e6eec2e07440e8dea8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b6104c383838a604001358b60600135338e8d8d61187c565b6000610b1b8686868686876107f9565b6000610e9e85338686866104d1565b90505b949350505050565b610f4a565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610ee557610ee5610eae565b6000518015610f105760a435600483015260248201819052610f106020600060448582885af1610f15565b505050565b80610f2257610f22610eae565b600160005114601f3d11163d151780610f4657633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610f8157610f81610eae565b6020806004808501335afa610f9857610f98610eae565b60206040600460088501335afa610fb157610fb1610eae565b6000806000881360018114610fcd576020519250879150610fd6565b60005192508891505b50600173cced75703e87967682319712fd9296b9de09020360581b03198452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b036055852016925033831461104957635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146110bb578260148601528360348601523360548601528160748601526110b6602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af1610f15565b6110e8565b3360108601528160308601526110de602060006044600c89016000885af1610f15565b6110e88386610eb8565b505050505050505050565b604051848152600080516020615ab98339815191529060200160405180910390a1600081116111595760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610124565b6001600160a01b0383161561116e5782611170565b335b925060008061117d611942565b9150915060008461119c57600080516020615a598339815191526111a5565b6006602160991b015b90506000856111bb576006602160991b016111cb565b600080516020615a598339815191525b90506111d8848383611c4c565b6000806111ed86338b8a896000015188611d8f565b9150915087156113645760405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690611249906006602160991b01903390600080516020615a79833981519152908d90600401615820565b600060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b8152600481018a9052600080516020615a798339815191529250632e1a7d4d9150602401600060405180830381600087803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b505050506001600160a01b038216301461135f576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114611337576040519150601f19603f3d011682016040523d82523d6000602084013e61133c565b606091505b505090508061135d5760405162461bcd60e51b81526004016101249061584a565b505b611430565b85516113b2578634146113b25760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610124565b6006602160991b016001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113f457600080fd5b505af1158015611408573d6000803e3d6000fd5b505050506001600160a01b03831630149050611430576114306006602160991b0183896127b2565b600061143f878b84878a611f87565b9050600080516020615a998339815191528585328b61145e8682615741565b60405161146f959493929190615784565b60405180910390a15050505050505050505050565b60006001600160a01b0385161561149b578461149d565b335b94506000806114aa611942565b9150915060006114bd8760000151611870565b90506114ce83828960200151611c4c565b60208701516114e6906001600160a01b031689611cf8565b9350600080611505858d8c8c6040015188600001518e60200151611d8f565b915091506115178989898f8f876125ba565b611528858b838c6020015188611f87565b50505060208701518490611545906001600160a01b03168a611cf8565b61154f9190615741565b935086606001518410156115755760405162461bcd60e51b815260040161012490615754565b600080516020615a99833981519152818860200151328a6040015188604051610af6959493929190615784565b600080826115c25760405162461bcd60e51b815260040161012490615880565b60006001600160a01b03858560008181106115df576115df6157d1565b9050602002013560001c1690506000600160ff1b86866000818110611606576116066157d1565b9050602002013560001c166000141590508061168357816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e91906158b6565b6116e5565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e591906158b6565b93506001600160a01b0384166006602160991b011480156117035750865b1561171a57600080516020615a5983398151915293505b60008686611729600182615741565b818110611738576117386157d1565b60200291909101359150506001600160a01b038116600160ff1b82161515806117c257816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bd91906158b6565b611824565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182491906158b6565b9550600160fe1b831615156001600160a01b0387166006602160991b0114801561184b5750805b1561186257600080516020615a5983398151915296505b505050505050935093915050565b6001600160a01b031690565b60006001600160a01b038416156118935783611895565b335b93506000806118a2611942565b915091506118b1828c8c611c4c565b6118bb8a876127e2565b92506118cf87878d8d8d8d8b8b8a8a612883565b826118da8b886127e2565b6118e49190615741565b9250878310156119065760405162461bcd60e51b815260040161012490615754565b600080516020615a998339815191528b8b328c8760405161192b959493929190615784565b60405180910390a150505b98975050505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260203603356001600160d01b031981166522220afc2bbb60d01b8114651111057e155560d11b821417651111057e155560d11b8214651e51057e155560d11b83141785526522220afc2bbb60d01b8214653ca20afc2bbb60d01b831417856020015265ffffffffffff60a01b831660a01c85604001526001600160a01b0383168560600152604036033592506000600160ff1b8416118560e001526001600160a01b03831685608001526001811460018114611a7e5760008660a0015260008660c00152611aa9565b6060360335935065ffffffffffff60a01b841660a01c8660a001526001600160a01b0384168660c001525b5050600091506522220afc2bbb60d01b8114651111057e155560d11b82141715611ad257606091505b653ca20afc2bbb60d01b8114651e51057e155560d11b82141715611af557604091505b602082013603356001600160d01b031981169150653bbbbbbb911160d11b82146577777777111160d01b831417845265ffffffffffff60a01b811660a01c84602001526001600160a01b03811684604001526040830136033590506001600160a01b0381168460600152653bbbbbbb911160d11b821460018114611b86576000856080015260008560a00152611bb3565b60608401360335915065ffffffffffff60a01b821660a01c85608001526001600160a01b0382168560a001525b50505050816000015180611bc8575081602001515b80611bd1575080515b15611c48577f6895551786bbb86042fcc29bf0c6657e90b7d1e78721946cb40dde1d3508854582604001518360a001518460e0015184602001518560800151604051611c3f959493929190948552602085019390935290151560408401526060830152608082015260a00190565b60405180910390a15b9091565b82518015611c6f5750816001600160a01b031683608001516001600160a01b0316145b80611c9b575082602001518015611c9b5750806001600160a01b031683608001516001600160a01b0316145b80611cb257508251158015611cb257508260200151155b610f105760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420636f6d6d697373696f6e20696e666f60481b6044820152606401610124565b6000611d03836128cb565b15611d1957506001600160a01b03811631611d89565b6040516370a0823160e01b81526001600160a01b038416906370a0823190611d4590859060040161542b565b602060405180830381865afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8691906157b8565b90505b92915050565b600080876020015180611d9f5750835b15611db857309150611db183306127e2565b9050611dbc565b8591505b875115611dce57611dce8888876128e7565b965096945050505050565b6000611dea368890038801886156e5565b90506000611dfb8260000151611870565b905085611e3e5760405162461bcd60e51b815260206004820152601160248201527007061746873206d757374206265203e203607c1b6044820152606401610124565b6000611e7188886000818110611e5657611e566157d1565b9050602002810190611e6891906158d3565b60800135611870565b9050611e85826001600160a01b03166128cb565b15611f20576001600160a01b0381166006602160991b0114611eb95760405162461bcd60e51b8152600401610124906158f3565b6006602160991b016001600160a01b031663d0e30db084604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611eff57600080fd5b505af1158015611f13573d6000803e3d6000fd5b5050505050309550611f51565b816001600160a01b0316816001600160a01b031614611f515760405162461bcd60e51b8152600401610124906158f3565b611f798685878660400151611f7288602001516001600160a01b03166128cb565b8d8d612ddc565b6110e8836020015185612e53565b60008560200151158015611f9a57508151155b15611fa7575060006106d2565b6000611fb384306127e2565b905084811015611ffd5760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b2103130b630b731b29030b33a32b960591b6044820152606401610124565b60006120098683615741565b90508760200151156120dc576301c9c3808860a00151896040015161202e9190615920565b111561207a5760405162461bcd60e51b815260206004820152601b60248201527a195c9c9bdc8818dbdb5b5a5cdcda5bdb881c985d19481b1a5b5a5d602a1b6044820152606401610124565b6000633b9aca008960a001518a604001516120959190615920565b61209f90846157e7565b6120a991906157fe565b90506120cb600187838c604001518d606001518e60a001518f60c001516130db565b9250826120d88183615741565b9150505b835180156120ed5750836060015181115b156122125760648460200151111561213f5760405162461bcd60e51b8152602060048201526015602482015274195c9c9bdc881d1c9a5b481c985d19481b1a5b5a5d605a1b6044820152606401610124565b6103e8846080015111156121895760405162461bcd60e51b81526020600482015260116024820152706572726f7220636861726765207261746560781b6044820152606401610124565b600084606001518261219b9190615741565b905060006103e88660200151846121b291906157e7565b6121bc91906157fe565b9050808211156121ca578091505b6121f76000888489608001516103e86121e39190615741565b8a604001518b608001518c60a001516130db565b6122018286615920565b945061220d8284615741565b925050505b61221d8588836133de565b505095945050505050565b600080826122485760405162461bcd60e51b815260040161012490615880565b60006001600160a01b0385856000818110612265576122656157d1565b905060200201351690506000600160ff1b86866000818110612289576122896157d1565b905060200201351660001490508061230257816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fd91906158b6565b612364565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236491906158b6565b93506001600160a01b0384166006602160991b011480156123825750865b1561239957600080516020615a5983398151915293505b600086866123a8600182615741565b8181106123b7576123b76157d1565b60200291909101359150506001600160a01b038116600160ff1b8216158061244057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243b91906158b6565b6124a2565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a291906158b6565b9550600160fd1b831615156001600160a01b0387166006602160991b0114801561184b5750801561186257600080516020615a598339815191529650505050505050935093915050565b6000806001600160a01b0389161561250c5761250789611870565b61250e565b335b905060008061251b611942565b9150915061252a828b8b611c4c565b61253489846127e2565b93506125478c848a8a8d8b8b8989613423565b836125528a856127e2565b61255c9190615741565b93508684101561257e5760405162461bcd60e51b815260040161012490615754565b600080516020615a998339815191528a8a328b886040516125a3959493929190615784565b60405180910390a150505098975050505050505050565b855186906000906125ca90611870565b90506125d5816128cb565b1561263d576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561262057600080fd5b505af1158015612634573d6000803e3d6000fd5b50505050503094505b6000805b88518110156126795788818151811061265c5761265c6157d1565b60200260200101518261266f9190615920565b9150600101612641565b5082604001518111156126ec5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610124565b5085518751146127305760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610124565b60005b86518110156127995761279186868661275887602001516001600160a01b03166128cb565b8c868151811061276a5761276a6157d1565b60200260200101518c8781518110612784576127846157d1565b6020026020010151613458565b600101612733565b506127a8826020015184612e53565b5050505050505050565b6127c58363a9059cbb60e01b84846135bc565b610f105760405163fb7f507960e01b815260040160405180910390fd5b6000612805565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b600080516020615a5983398151915283146001811461287757604051602481016040526370a0823160e01b815283600482015260206000602483885afa90508061286c5761286c6058740519d95d0818985b185b98d953d98819985a5b195960421b6127e9565b50600051915061287c565b823191505b5092915050565b600080612898848d8d8b87600001518e611d8f565b90925090508b6128ad8b8a8a8a8a868961360f565b506128bb858d848d88611f87565b5050505050505050505050505050565b6001600160a01b0316600080516020615a598339815191521490565b612bc4565b8082028115828204841417840261290b5763ad251c276000526004601cfd5b9290920492915050565b60008282101561292d576346e72d036000526004601cfd5b500390565b60008060008085855af180610f1057610f1060607c1c20636f6d6d697373696f6e2077697468206574686572206572726f726127e9565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af19050806129dd576129dd60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b6127e9565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612a3e57612a3e6058740519d95d0818985b185b98d953d98819985a5b195960421b6127e9565b600051898801612a69670de0b6b3a764000083612a6484670de0b6b3a76400008e6128ec565b6128ec565b95505080851115612a9857612a98605975055a5b9d985b1a5908185b5bdd5b9d0c54d8d85b1959603a1b6127e9565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615612ad1573d863b15171591505b81612afe57612afe605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c006127e9565b8815612b7357612b0e8582612915565b93508860048401528360248401526020600060448560008a5af1915081601f3d1160016000511416151615612b46573d863b15171591505b81612b7357612b73605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c006127e9565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608083015160e084015160a08501516040860151601090920281151501600080516020615a598339815191528414610100020191600091829182918291906301c9c3808282011115612c3857612c38605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d6974006127e9565b60608b015160c08c01519096509450818101633b9aca000391890282900493508802049050846101008114612cc2576101018114612ce5576101108114612cc2576101118114612ce5578015612d2b5760018114612d425760108114612d705760118114612d9c57612cbd60526e0e696e76616c69642073746174757360701b6127e9565b612dd0565b612ccc8386612932565b612cbd8584600080516020615a59833981519152612b80565b612cef8386612932565b612d088584600080516020615a59833981519152612b80565b612d128285612932565b612cbd8483600080516020615a59833981519152612b80565b612d3783868b8a612969565b612cbd858489612b80565b612d4e83868b8a612969565b612d59858489612b80565b612d6582858b8a612969565b612cbd848389612b80565b612d7c83308b8a612969565b612d8a60008085888b6129e4565b50612d9686828a612b80565b50612dd0565b612daa828401308b8a612969565b612db7828585888b6129e4565b612dc287838b612b80565b612dcd86828b612b80565b50505b50505050505050505050565b806000612e028288604080518082019091529182526001600160a01b0316602082015290565b905060005b82811015612dd0578015612e19573099505b612e4b8a8a89848a8a8a88818110612e3357612e336157d1565b9050602002810190612e4591906158d3565b88613db6565b600101612e07565b612e65826001600160a01b03166128cb565b15613048576040516370a0823160e01b81526000906006602160991b01906370a0823190612e9790309060040161542b565b602060405180830381865afa158015612eb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed891906157b8565b90508015612fbe5760405163a9059cbb60e01b8152600080516020615a798339815191526004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af1158015612f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5d9190615933565b50604051632e1a7d4d60e01b815260048101829052600080516020615a7983398151915290632e1a7d4d90602401600060405180830381600087803b158015612fa557600080fd5b505af1158015612fb9573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610f1057478015610330576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613022576040519150601f19603f3d011682016040523d82523d6000602084013e613027565b606091505b50509050806129dd5760405162461bcd60e51b81526004016101249061584a565b6001600160a01b0381163014610f46576040516370a0823160e01b81526000906001600160a01b038416906370a082319061308790309060040161542b565b602060405180830381865afa1580156130a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c891906157b8565b90508015610f1057610f108383836127b2565b61324d565b60008060008085855af180610f1057610f10605571045cd95b9908195d1a195c8819985a5b1959605a1b6127e9565b6040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156131585750803b153d17155b8061033057610330605975055d1c985b9cd9995c881d1bdad95b8819985a5b1959603a1b6127e9565b604051606081016040528181528260208201528360408201527ff171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d606082a150505050565b604051606081016040528181528260208201528360408201527f7bec7d55a62a7a7b8068f1533e2a3bbf727b3e2e57f30c576fe159da60e09a65606082a150505050565b604051606081016040528181528260208201528360408201527ffd08115c8e43d2a49d95ee18d7f69b8bbac60bd368c73cf22d30664a22a0626d606082a150505050565b6001600160a01b03928316921681840185850204808603601089151502600080516020615a5983398151915289140180601181146132bd576010811461330f5760018114613347578015613399576132b860526e0e696e76616c69642073746174757360701b6127e9565b6133d1565b87156132e6576132cd84886130e0565b6132e68785600080516020615a59833981519152613181565b85156132b8576132f683866130e0565b6132b88584600080516020615a59833981519152613181565b871561332b5761332084888c61310f565b61332b87858c613181565b85156132b85761333c83868c61310f565b6132b885848c613181565b87156133705761335784886130e0565b6133708785600080516020615a598339815191526131c5565b85156132b85761338083866130e0565b6132b88584600080516020615a59833981519152613209565b87156133b5576133aa84888c61310f565b6133b587858c6131c5565b85156133d1576133c683868c61310f565b6133d185848c613209565b5050505050505050505050565b600080516020615a598339815191528314600181146134105761340b826001600160a01b0385168661310f565b610330565b610330826001600160a01b0385166130e0565b600080613438848c8c8c87600001518c611d8f565b9150915061344a8b838b8b8a8a614293565b50612dcd848b838a87611f87565b600061348182600081518110613470576134706157d1565b602002602001015160800151611870565b905060008060008451905060005b818110156133d15780156134cd576134b2868281518110613470576134706157d1565b94506134c76001600160a01b03861630611cf8565b9650309a505b306134d9600184615741565b821480156134e5575088155b156134f1575088613589565b6134fc600184615741565b82108015613532575086613511836001615920565b81518110613521576135216157d1565b602002602001015160200151516001145b156135845786613543836001615920565b81518110613553576135536157d1565b602002602001015160200151600081518110613571576135716157d1565b6020026020010151905060019450613589565b600094505b6135b08c8c838b8b87815181106135a2576135a26157d1565b6020026020010151896145e3565b5083925060010161348f565b60006040518481528360048201528260248201526020600060448360008a5af19150508015610ea1573d80156135fe57600160005114601f3d11169150613606565b6000863b1191505b50949350505050565b6000613836565b828152600060206000600484600401865afa61364b5761364b6054700419d95d081d1bdad95b8819985a5b195960621b6127e9565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61369957613699605672049d1bdad95b8c0818d85b1b0819985a5b195960521b6127e9565b600051915083836004015260206000602485855afa6136d6576136d66059750558985b185b98d953d98818d85b1b0819985a5b1959603a1b6127e9565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61369957613699605672049d1bdad95b8c4818d85b1b0819985a5b195960521b6127e9565b668b0367c240bc6b60c21b8152600060406000600484600401875afa61376857613768605874051c995cd95c9d995cc818d85b1b0819985a5b195960421b6127e9565b60005160205186801561379457891561378c5761378587866136e2565b8390039650505b9091906137ab565b88156137ab576137a48786613656565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156137e557816004840152600060248401526137f3565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161193657611936605470041cddd85c0818d85b1b0819985a5b195960621b6127e9565b84602085028101858061385d5761385d604e6b0b656d70747920706f6f6c7360901b6127e9565b5060405182358b600080516020615a5983398151915214600181146139165734156138a2576138a260557111696e76616c6964206d73672e76616c756560581b6127e9565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af1613911576139116056720498db185a5b481d1bdad95b8819985a5b195960521b6127e9565b6139d5565b60018c3410036139405761394060557111696e76616c6964206d73672e76616c756560581b6127e9565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1613986576139866056720499195c1bdcda5d081155120819985a5b195960521b6127e9565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af16139d5576139d5605874051d1c985b9cd9995c8815d155120819985a5b195960421b6127e9565b508a9450602084015b83811015613a34578035613a286001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b613725565b965091506020016139de565b5060009350600160fe1b81168015613b7057600080516020615a598339815191529450613a8e3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613725565b9550672e1a7d4da9059cbb60c01b8352600080516020615a7983398151915260088401528560288401526020600060448560040160006006602160991b015af1613af557613af5605874051d1c985b9cd9995c8815d155120819985a5b195960421b6127e9565b856004840152602060006024856000600080516020615a798339815191525af1613b3b57613b3b60577304ddda5d1a191c985dc81155120819985a5b1959604a1b6127e9565b600080600080898b5af1613b6b57613b6b60577304dd1c985b9cd9995c881155120819985a5b1959604a1b6127e9565b613da6565b60009350600160ff1b82168015613c1e57600160fc1b831615613c19576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa613bd657613bd6605672049d1bdad95b8c0818d85b1b0819985a5b195960521b6127e9565b600051955087846004015260206000602486895afa613c1357613c13605675055d1bdad95b8c0818985b185b98d94819985a5b1959603a1b6127e9565b60005194505b613cb6565b600160fd1b831615613cb6576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa613c7357613c73605672049d1bdad95b8c4818d85b1b0819985a5b195960521b6127e9565b600051955087846004015260206000602486895afa613cb057613cb0605975055d1bdad95b8c4818985b185b98d94819985a5b1959603a1b6127e9565b60005194505b50613cee8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613725565b95508460001060018114613d5757600160ff1b83168015613d2f57613d286770a082310dfe168160c01b6001600160a01b03861687613616565b9650613d51565b613d4e6770a08231d21220a760c01b6001600160a01b03861687613616565b96505b50613da4565b6770a082310dfe168160c01b845287846004015260206000602486895afa613d9c57613d9c6058740519d95d0818985b185b98d953d98819985a5b195960421b6127e9565b846000510396505b505b5050505050979650505050505050565b6000806000613dc88560800135611870565b90506000613dd68680615950565b905011613e1f5760405162461bcd60e51b8152602060048201526017602482015276065646765206c656e677468206d757374206265203e203604c1b6044820152606401610124565b613e2c6040860186615950565b9050613e388680615950565b9050148015613e5f5750613e4f6060860186615950565b9050613e5b8680615950565b9050145b8015613e835750613e736020860186615950565b9050613e7f8680615950565b9050145b613ec65760405162461bcd60e51b81526020600482015260146024820152730e0c2e8d040d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606401610124565b8615613f86576040516370a0823160e01b81526001600160a01b038216906370a0823190613ef890309060040161542b565b602060405180830381865afa158015613f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3991906157b8565b975060008811613f865760405162461bcd60e51b815260206004820152601860248201527706e6f64652062616c616e6365206d757374206265203e20360441b6044820152606401610124565b60005b613f938680615950565b90508110156133d1576000808080613fae60408b018b615950565b86818110613fbe57613fbe6157d1565b9050602002013560001b905061ffff60a01b811660a01c915060ff60b81b811660b81c935060ff60b01b811660b01c92508b841461403d5760405162461bcd60e51b815260206004820152601c60248201527b1b9bd919481a5b9c1d5d125b99195e081a5b98dbdb9cda5cdd195b9d60221b6044820152606401610124565b828410801561404d575088518311155b6140935760405162461bcd60e51b81526020600482015260176024820152766e6f646520696e646578206f7574206f662072616e676560481b6044820152606401610124565b61409d8289615920565b975060016140ab8b80615950565b6140b6929150615741565b85036141095787612710146141095760405162461bcd60e51b81526020600482015260196024820152780746f74616c576569676874206d75737420626520313030303603c1b6044820152606401610124565b50600060016141188b80615950565b614123929150615741565b850361413a57614133878e615741565b9050614160565b612710614147838f6157e7565b61415191906157fe565b905061415d8188615920565b96505b80156141a3576141a38f61417760208d018d615950565b88818110614187576141876157d1565b905060200201602081019061419c919061570e565b8884614789565b5087513090831480156141b457508a155b156141bc57508c5b6142846141cc60408c018c615950565b878181106141dc576141dc6157d1565b602002919091013590506141f08c80615950565b88818110614200576142006157d1565b9050602002016020810190614215919061570e565b61422260608e018e615950565b89818110614232576142326157d1565b90506020028101906142449190615999565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208e015186915061480f565b50836001019350505050613f89565b600061451e565b6000856001600160ff1b0310156142bc57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461435057630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806143445760206000fd5b5060206000803e6143b3565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806143ab5760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156143d9576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361440157631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af180610f4657610f4660577304d5d155120819195c1bdcda5d0819985a5b1959604a1b6127e9565b60405160048101672e1a7d4da9059cbb60c01b8252600080516020615a79833981519152600482015283602482015260008060448360006006602160991b015af19050806144a4576144a4605874051d1c985b9cd9995c881dd95d1a0819985a5b195960421b6127e9565b8360048301526000806024846000600080516020615a798339815191525af19050806144ed576144ed605874051dda5d1a191c985dc81dd95d1a0819985a5b195960421b6127e9565b60008060008087875af190508061033057610330605571045cd95b9908195d1a195c8819985a5b1959605a1b6127e9565b82601f19602084028201018380614540576333f3e07b60e11b60005260046000fd5b508860003411801561455957614555896143e6565b309a505b5087606052825b8281101561458357614576898235848e3061429a565b309b509850602001614560565b506000600160fd1b83351611925082600181146145a55780156145c4576145d5565b6145b3898435848e3061429a565b94506145bf858b614439565b6145d5565b6145d2898435848e8e61429a565b94505b505050509695505050505050565b6000805b8351518110156127a857600084604001518281518110614609576146096157d1565b602002602001015160001b90506000806000806146298960800151611870565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506146558288615920565b89515190975061466790600190615741565b86036146ce576127108711156146ce5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610124565b8761472957600082612710146146fa576127106146eb848d6157e7565b6146f591906157fe565b6146fc565b8a5b90506147278e8b602001518981518110614718576147186157d1565b60200260200101518484614789565b505b50506147738188600001518681518110614745576147456157d1565b60200260200101518b858b606001518981518110614765576147656157d1565b60200260200101518f614837565b5050508080614781906159df565b9150506145e7565b306001600160a01b038516036147a45761340b8284836127b2565b60405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea466906147e1908590889088908790600401615820565b600060405180830381600087803b1580156147fb57600080fd5b505af11580156127a8573d6000803e3d6000fd5b600160ff1b85166001600160a01b03861661482e828786848988614837565b50505050505050565b851561493c57600080866001600160a01b0316636f7929f260e01b878787604051602401614867939291906159f8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526148b56001600160a01b038616650f2882bf0b3360d21b615920565b6040516020016148c6929190615a24565b60408051601f19818403018152908290526148e091615a46565b6000604051808303816000865af19150503d806000811461491d576040519150601f19603f3d011682016040523d82523d6000602084013e614922565b606091505b5091509150816149355761493581614a30565b5050610c54565b600080866001600160a01b03166330e6ae3160e01b878787604051602401614966939291906159f8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526149b46001600160a01b038616650f2882bf0b3360d21b615920565b6040516020016149c5929190615a24565b60408051601f19818403018152908290526149df91615a46565b6000604051808303816000865af19150503d8060008114614a1c576040519150601f19603f3d011682016040523d82523d6000602084013e614a21565b606091505b5091509150816127a8576127a8815b805115614a3f57805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610124565b50565b60008060408385031215614a9357600080fd5b50508035926020909101359150565b6001600160a01b0381168114614a7d57600080fd5b8035614ac281614aa2565b919050565b600060a08284031215614ad957600080fd5b50919050565b60008083601f840112614af157600080fd5b5081356001600160401b03811115614b0857600080fd5b6020830191508360208260051b8501011115614b2357600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614b4957600080fd5b8935985060208a0135614b5b81614aa2565b9750614b6a8b60408c01614ac7565b965060e08a01356001600160401b0380821115614b8657600080fd5b614b928d838e01614adf565b90985096506101008c0135915080821115614bac57600080fd5b614bb88d838e01614adf565b90965094506101208c0135915080821115614bd257600080fd5b50614bdf8c828d01614adf565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215614c0f57600080fd5b8635955060208701359450604087013593506060870135614c2f81614aa2565b925060808701356001600160401b03811115614c4a57600080fd5b614c5689828a01614adf565b979a9699509497509295939492505050565b60008060008060006101008688031215614c8157600080fd5b853594506020860135614c9381614aa2565b9350614ca28760408801614ac7565b925060e08601356001600160401b03811115614cbd57600080fd5b614cc988828901614adf565b969995985093965092949392505050565b600080600080600060808688031215614cf257600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614cbd57600080fd5b60005b83811015614d38578181015183820152602001614d20565b50506000910152565b60008151808452614d59816020860160208601614d1d565b601f01601f19169290920160200192915050565b602081526000614d806020830184614d41565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715614dbf57614dbf614d87565b60405290565b60405161014081016001600160401b0381118282101715614dbf57614dbf614d87565b604051601f8201601f191681016001600160401b0381118282101715614e1057614e10614d87565b604052919050565b600060a08284031215614e2a57600080fd5b614e32614d9d565b9050813581526020820135614e4681614aa2565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b03821115614e8a57614e8a614d87565b5060051b60200190565b600082601f830112614ea557600080fd5b81356020614eba614eb583614e71565b614de8565b82815260059290921b84018101918181019086841115614ed957600080fd5b8286015b84811015614ef45780358352918301918301614edd565b509695505050505050565b600082601f830112614f1057600080fd5b81356020614f20614eb583614e71565b82815260059290921b84018101918181019086841115614f3f57600080fd5b8286015b84811015614ef4578035614f5681614aa2565b8352918301918301614f43565b600082601f830112614f7457600080fd5b81356001600160401b03811115614f8d57614f8d614d87565b614fa0601f8201601f1916602001614de8565b818152846020838601011115614fb557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112614fe357600080fd5b81356020614ff3614eb583614e71565b82815260059290921b8401810191818101908684111561501257600080fd5b8286015b84811015614ef45780356001600160401b038111156150355760008081fd5b6150438986838b0101614f63565b845250918301918301615016565b600061505f614eb584614e71565b838152905060208101600584901b830185101561507b57600080fd5b825b8460051b84018110156151eb576001600160401b0381358110156150a057600080fd5b8135850187601f8201126150b357600080fd5b6150c0614eb58235614e71565b81358082526020808301929160051b8401018a8111156150df57600080fd5b602084015b818110156151d45785813511156150fa57600080fd5b8035850160a0818e03601f1901121561511257600080fd5b61511a614d9d565b876020830135111561512b57600080fd5b61513d8e602080850135850101614eff565b8152876040830135111561515057600080fd5b6151638e60206040850135850101614eff565b6020820152876060830135111561517957600080fd5b61518c8e60206060850135850101614e94565b604082015287608083013511156151a257600080fd5b6151b58e60206080850135850101614fd2565b606082015260a0919091013560808201528452602093840193016150e4565b50508552505060209283019291909101905061507d565b50509392505050565b600082601f83011261520557600080fd5b614d8083833560208501615051565b8015158114614a7d57600080fd5b8035614ac281615214565b600082601f83011261523e57600080fd5b8135602061524e614eb583614e71565b82815260059290921b8401810191818101908684111561526d57600080fd5b8286015b84811015614ef45780356001600160401b03808211156152915760008081fd5b90880190610140828b03601f19018113156152ac5760008081fd5b6152b4614dc5565b87840135815260406152c7818601614ab7565b8983015260606152d8818701614ab7565b82840152608091506152eb828701614ab7565b818401525060a0808601358284015260c0915081860135818401525060e08086013582840152610100915081860135818401525061012061532d818701615222565b8383015292850135928484111561534657600091508182fd5b6153548e8b86890101614f63565b90830152508652505050918301918301615271565b600080600080600080610140878903121561538357600080fd5b61538d8888614e18565b955060a08701356001600160401b03808211156153a957600080fd5b6153b58a838b01614e94565b965060c08901359150808211156153cb57600080fd5b6153d78a838b016151f4565b955060e08901359150808211156153ed57600080fd5b506153fa89828a0161522d565b93505061010087013561540c81614aa2565b915061012087013561541d81614aa2565b809150509295509295509295565b6001600160a01b0391909116815260200190565b600080600060e0848603121561545457600080fd5b83359250602084013561546681614aa2565b91506154758560408601614ac7565b90509250925092565b600080600080600080600080610120898b03121561549b57600080fd5b883597506154ac8a60208b01614ac7565b965060c08901356001600160401b03808211156154c857600080fd5b6154d48c838d01614adf565b909850965060e08b01359150808211156154ed57600080fd5b6154f98c838d01614adf565b90965094506101008b013591508082111561551357600080fd5b506155208b828c01614adf565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561554d57600080fd5b6155578787614e18565b945060a08601356001600160401b038082111561557357600080fd5b61557f89838a01614e94565b955060c088013591508082111561559557600080fd5b6155a189838a016151f4565b945060e08801359150808211156155b757600080fd5b506155c48882890161522d565b9250506101008601356155d681614aa2565b809150509295509295909350565b60008060008060e085870312156155fa57600080fd5b8435935061560b8660208701614ac7565b925060c08501356001600160401b0381111561562657600080fd5b61563287828801614adf565b95989497509550505050565b6000806000806060858703121561565457600080fd5b843593506020850135925060408501356001600160401b038082111561567957600080fd5b818701915087601f83011261568d57600080fd5b81358181111561569c57600080fd5b8860208285010111156156ae57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a082840312156156f757600080fd5b614d808383614e18565b6000614d80368484615051565b60006020828403121561572057600080fd5b8135614d8081614aa2565b634e487b7160e01b600052601160045260246000fd5b81810381811115611d8957611d8961572b565b602080825260169082015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6000602082840312156157ca57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417611d8957611d8961572b565b60008261581b57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601c908201527b1d1c985b9cd9995c881b985d1a5d99481d1bdad95b8819985a5b195960221b604082015260600190565b6020808252601c908201527b0706f6f6c73206d7573742062652067726561746572207468616e20360241b604082015260600190565b6000602082840312156158c857600080fd5b8151614d8081614aa2565b60008235609e198336030181126158e957600080fd5b9190910192915050565b6020808252601390820152720ccd2e4e6e8a8ded6cadc40dad2e6dac2e8c6d606b1b604082015260600190565b80820180821115611d8957611d8961572b565b60006020828403121561594557600080fd5b8151614d8081615214565b6000808335601e1984360301811261596757600080fd5b8301803591506001600160401b0382111561598157600080fd5b6020019150600581901b3603821315614b2357600080fd5b6000808335601e198436030181126159b057600080fd5b8301803591506001600160401b038211156159ca57600080fd5b602001915036819003821315614b2357600080fd5b6000600182016159f1576159f161572b565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090610e9e90830184614d41565b60008351615a36818460208801614d1d565b9190910191825250602001919050565b600082516158e9818460208701614d1d56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f828bc75b2b63dac9dd84642acce1bb88e8425311bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212207c49b2a43b6c248949565fc9af61eb35912787e32913871c4b0d13dce55367cc64736f6c63430008110033