0 txs
2.5k 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)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
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)
executeWithBaseRequest
payablefunction executeWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, address executor, tuple executorInfo) payable returns (uint256)
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
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50615f0280620000216000396000f3fe6080604052600436106100fe5760003560e01c806301617fab1461015557806303b87e5f1461016857806308298b5a1461018e5780630c307f76146101a15780630d5f0e3b146101b457806344014e98146101c757806354fd4d50146101da578063591b3d081461021d5780636aa476451461023057806373679b6b14610265578063918f8674146102875780639871efa41461029f57806398d2ac62146102b2578063b441e6d2146102c5578063b80c2f09146102d8578063b8815477146102eb578063ca68d8f6146102fe578063e0af361614610316578063e99bfa9514610331578063f2c4269614610344578063fa461e331461035757600080fd5b366101505732330361014e5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61014e610163366004614c40565b610377565b61017b610176366004614cea565b61039a565b6040519081526020015b60405180910390f35b61017b61019c366004614db6565b61044b565b61017b6101af366004614e28565b610564565b61017b6101c2366004614e9a565b6106f0565b61017b6101d5366004614e28565b610749565b3480156101e657600080fd5b506102106040518060400160405280600a81526020016976312e302e362d64616760b01b81525081565b6040516101859190614f2d565b61017b61022b366004615544565b610867565b34801561023c57600080fd5b50610258732949a7b2771cc70ecd400871236d345979e1c5e781565b6040516101859190615606565b34801561027157600080fd5b50610258600080516020615e6d83398151915281565b34801561029357600080fd5b5061017b633b9aca0081565b61017b6102ad366004614e9a565b610b79565b61014e6102c036600461561a565b610b93565b61017b6102d3366004615659565b610cca565b61017b6102e6366004615733565b611048565b61017b6102f9366004614e28565b6110a5565b34801561030a57600080fd5b5061017b6301c9c38081565b34801561032257600080fd5b506102586006602160991b0181565b61017b61033f3660046157e9565b6112b1565b61017b610352366004615899565b6112c1565b34801561036357600080fd5b5061014e6103723660046158f3565b6112db565b600160ff1b81166001600160801b03821661039484338484611525565b50505050565b60008760800135428110156103c15760405162461bcd60e51b815260040161014590615972565b6040518b8152600080516020615ead8339815191529060200160405180910390a161043c33808c6103f7368e90038e018e61599a565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061043792508d91508e90506159b6565b611895565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020615ead8339815191529060200160405180910390a16000806104846000341186866119c4565b9150915060006104938a611c92565b9050826001600160a01b0316816001600160a01b03161480156104cd57506001600160a01b038316600080516020615e2d83398151915214155b8061050057506001600160a01b03811615801561050057506001600160a01b038316600080516020615e2d833981519152145b6105465760405162461bcd60e51b81526020600482015260176024820152760eadcf0e6eec2e07440e8ded6cadc40dad2e6dac2e8c6d604b1b6044820152606401610145565b61055683838b8b338c8c8c611c9e565b9a9950505050505050505050565b600083608001354281101561058b5760405162461bcd60e51b815260040161014590615972565b604051878152600080516020615ead8339815191529060200160405180910390a16001600160a01b0386166105d25760405162461bcd60e51b8152600401610145906159c3565b60006105de8635611c92565b905060006105ea611db5565b9050610606818361060160408b0160208c016159e8565b611eb6565b60008061061983338c8c60400135611f62565b90925090506106418a61063260408c0160208d016159e8565b6001600160a01b03169061248d565b9550610651898989333387612524565b61065c838b83612724565b50856106728b61063260408d0160208e016159e8565b61067c9190615a1b565b955088606001358610156106a25760405162461bcd60e51b815260040161014590615a2e565b600080516020615e8d833981519152846106c260408c0160208d016159e8565b328c604001358a6040516106da959493929190615a5e565b60405180910390a1505050505095945050505050565b60405160a086901c8152600090600080516020615ead8339815191529060200160405180910390a1600080610729600034118686612af0565b9150915061073d338984848b8b8b8b612db4565b98975050505050505050565b60008360800135428110156107705760405162461bcd60e51b815260040161014590615972565b604051878152600080516020615ead8339815191529060200160405180910390a16000806107a2600034118787612af0565b90925090506001600160a01b0382166107bb8835611c92565b6001600160a01b03161480156107f157506001600160a01b0381166107e66040890160208a016159e8565b6001600160a01b0316145b6108395760405162461bcd60e51b81526020600482015260196024820152780eadcd2e6eec2e0ac667440e8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610145565b61085a33896001600160a01b031684848b604001358c606001358c8c612db4565b9998505050505050505050565b600086608001514281101561088e5760405162461bcd60e51b815260040161014590615972565b600061089d8960000151611c92565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016109035760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610145565b6001600160a01b0384166109525760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610145565b6001600160a01b03851661099b5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610145565b60008960400151116109e65760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610145565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a15903090600401615606565b602060405180830381865afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190615a92565b905060005b8951811015610abd578a60400151828b8381518110610a7c57610a7c615aab565b6020026020010151610a8e9190615ac1565b610a989190615ad8565b8a8281518110610aaa57610aaa615aab565b6020908102919091010152600101610a5b565b5060408a0181905260208a0151610add906001600160a01b03168761248d565b9350610aed8a8a8a30898b612e7f565b60208a01518490610b07906001600160a01b03168861248d565b610b119190615a1b565b93508960600151841015610b375760405162461bcd60e51b815260040161014590615a2e565b600080516020615e8d833981519152828b60200151328d6040015188604051610b64959493929190615a5e565b60405180910390a15050509695505050505050565b6000610b8986868633878761044b565b9695505050505050565b806080013542811015610bb85760405162461bcd60e51b815260040161014590615972565b600080610bc58435611c92565b90506001600160a01b038116600080516020615e2d833981519152148015610c0b57506006602160991b01610c0060408601602087016159e8565b6001600160a01b0316145b15610c195760009150610cb2565b6001600160a01b0381166006602160991b01148015610c5d5750600080516020615e2d833981519152610c5260408601602087016159e8565b6001600160a01b0316145b15610c6b5760019150610cb2565b60405162461bcd60e51b815260206004820152601c60248201527b29bbb0b82bb930b81d1034b73b30b634b2103a37b5b2b7103830b4b960211b6044820152606401610145565b610cc28686848760400135611525565b505050505050565b6000600080516020615ead83398151915286604051610ceb91815260200190565b60405180910390a16000610d028560000151611c92565b9050610d1781846040015187604001516130d4565b6000610d21611db5565b9050610d3281838860200151611eb6565b6000633b9aca008260a001518360400151633b9aca00610d529190615a1b565b610d5c9190615a1b565b8660400151610d6b9190615ac1565b610d759190615ad8565b9050610d86838660000151836131c6565b60008260200151610d975788610d99565b305b905060008360200151610dad576000610dbb565b610dbb896020015130613265565b90506000610dcd8a602001518c613265565b90506000896001600160a01b031663f1ecceb933868e8d6040518563ffffffff1660e01b8152600401610e039493929190615afa565b60408051808303816000875af1158015610e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e459190615b90565b509050600081118015610e585750848111155b610e9d5760405162461bcd60e51b815260206004820152601660248201527561637475616c416d6f756e74496e206578636565647360501b6044820152606401610145565b610ea986338e84611f62565b5050610eb6868d85612724565b506000610ec78c602001518e613265565b60608d0151909150610ed98483615a1b565b1015610f1f5760405162461bcd60e51b81526020600482015260156024820152741b5a5b94995d1d5c9b881b9bdd081c995858da1959605a1b6044820152606401610145565b8b51600080516020615e2d83398151915290610f3a90611c92565b6001600160a01b0316148015610f505750600047115b15610fec57604051600090339047908381818185875af1925050503d8060008114610f97576040519150601f19603f3d011682016040523d82523d6000602084013e610f9c565b606091505b5050905080610fea5760405162461bcd60e51b815260206004820152601a6024820152791c99599d5b99081b985d1a5d99481d1bdad95b8819985a5b195960321b6044820152606401610145565b505b600080516020615e8d833981519152888d60200151328f6040015187866110139190615a1b565b604051611024959493929190615a5e565b60405180910390a16110368382615a1b565b9e9d5050505050505050505050505050565b600087608001354281101561106f5760405162461bcd60e51b815260040161014590615972565b6040518a8152600080516020615ead8339815191529060200160405180910390a16105563380806103f7368e90038e018e61599a565b60008360800135428110156110cc5760405162461bcd60e51b815260040161014590615972565b604051878152600080516020615ead8339815191529060200160405180910390a16000806110fe6000341187876119c4565b9092509050600061110f8835611c92565b9050826001600160a01b0316816001600160a01b031614801561114957506001600160a01b038316600080516020615e2d83398151915214155b8061117c57506001600160a01b03811615801561117c57506001600160a01b038316600080516020615e2d833981519152145b6111c65760405162461bcd60e51b815260206004820152601b60248201527a0eadcf0e6eec2e07440cce4dedaa8ded6cadc40dad2e6dac2e8c6d602b1b6044820152606401610145565b6001600160a01b0382166111e060408a0160208b016159e8565b6001600160a01b031614801561120d57506001600160a01b038216600080516020615e2d83398151915214155b806112515750600061122560408a0160208b016159e8565b6001600160a01b031614801561125157506001600160a01b038216600080516020615e2d833981519152145b6112995760405162461bcd60e51b81526020600482015260196024820152780eadcf0e6eec2e07440e8dea8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610145565b61055683838a604001358b60600135338e8d8d611c9e565b6000610b89868686868687610867565b60006112d08533868686610564565b90505b949350505050565b61137c565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa611317576113176112e0565b60005180156113425760a4356004830152602482018190526113426020600060448582885af1611347565b505050565b80611354576113546112e0565b600160005114601f3d11163d15178061137857633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa6113b3576113b36112e0565b6020806004808501335afa6113ca576113ca6112e0565b60206040600460088501335afa6113e3576113e36112e0565b60008060008813600181146113ff576020519250879150611408565b60005192508891505b50600173cced75703e87967682319712fd9296b9de09020360581b03198452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b036055852016925033831461147b57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146114ed578260148601528360348601523360548601528160748601526114e8602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af1611347565b61151a565b336010860152816030860152611510602060006044600c89016000885af1611347565b61151a83866112ea565b505050505050505050565b6000811161156a5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610145565b6000611574611db5565b905060008361159157600080516020615e2d83398151915261159a565b6006602160991b015b90506000846115b0576006602160991b016115c0565b600080516020615e2d8339815191525b90506115cd838383611eb6565b6000806115dc85338a89611f62565b9150915086156117535760405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690611638906006602160991b01903390600080516020615e6d833981519152908c90600401615bb4565b600060405180830381600087803b15801561165257600080fd5b505af1158015611666573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b815260048101899052600080516020615e6d8339815191529250632e1a7d4d9150602401600060405180830381600087803b1580156116b157600080fd5b505af11580156116c5573d6000803e3d6000fd5b505050506001600160a01b038216301461174e576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114611726576040519150601f19603f3d011682016040523d82523d6000602084013e61172b565b606091505b505090508061174c5760405162461bcd60e51b815260040161014590615bde565b505b61181f565b84516117a1578534146117a15760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610145565b6006602160991b016001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117e357600080fd5b505af11580156117f7573d6000803e3d6000fd5b505050506001600160a01b0383163014905061181f5761181f6006602160991b0183886132db565b61182a858983612724565b6118349087615a1b565b9550600080516020615ead8339815191528960405161185591815260200190565b60405180910390a1600080516020615e8d833981519152848432898a604051611882959493929190615a5e565b60405180910390a1505050505050505050565b60006001600160a01b0385166118bd5760405162461bcd60e51b8152600401610145906159c3565b60006118c7611db5565b905060006118d88660000151611c92565b90506118e982828860200151611eb6565b6000806118fc848c8b8b60400151611f62565b60208a01519193509150611919906001600160a01b03168a61248d565b94508a61192a898989848f88612e7f565b611935858b84612724565b5060208901518690611950906001600160a01b03168c61248d565b61195a9190615a1b565b955088606001518610156119805760405162461bcd60e51b815260040161014590615a2e565b600080516020615e8d833981519152848a60200151328c604001518a6040516119ad959493929190615a5e565b60405180910390a150505050509695505050505050565b600080826119e45760405162461bcd60e51b815260040161014590615c14565b60006001600160a01b0385856000818110611a0157611a01615aab565b9050602002013560001c1690506000600160ff1b86866000818110611a2857611a28615aab565b9050602002013560001c1660001415905080611aa557816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa09190615c4a565b611b07565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b079190615c4a565b93506001600160a01b0384166006602160991b01148015611b255750865b15611b3c57600080516020615e2d83398151915293505b60008686611b4b600182615a1b565b818110611b5a57611b5a615aab565b60200291909101359150506001600160a01b038116600160ff1b8216151580611be457816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf9190615c4a565b611c46565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c469190615c4a565b9550600160fe1b831615156001600160a01b0387166006602160991b01148015611c6d5750805b15611c8457600080516020615e2d83398151915296505b505050505050935093915050565b6001600160a01b031690565b60006001600160a01b038416611cc65760405162461bcd60e51b8152600401610145906159c3565b6000611cd0611db5565b9050611cdd818b8b611eb6565b6000611ce98a87613265565b9050600080611cfa848a8a8e611f62565b9092509050611d346001600160a01b038e16600080516020615e2d83398151915214611d26578d611d29565b60005b8c8c8a8a8e8861330b565b50611d40848983612724565b5082611d4c8d8a613265565b611d569190615a1b565b945089851015611d785760405162461bcd60e51b815260040161014590615a2e565b600080516020615e8d8339815191528d8d328e89604051611d9d959493929190615a5e565b60405180910390a15050505098975050505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611e845760008560a0015260008560c00152611eaf565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611ed95750816001600160a01b031683608001516001600160a01b0316145b80611f05575082602001518015611f055750806001600160a01b031683608001516001600160a01b0316145b80611f1c57508251158015611f1c57508260200151155b6113425760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420636f6d6d697373696f6e20696e666f60481b6044820152606401610145565b600080856020015115611f875730611f7e876080015130613265565b91509150612484565b8551611f9857508290506000612484565b612269565b80820281158282048414178402611fbc5763ad251c276000526004601cfd5b9290920492915050565b600082821015611fde576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af1806113425761134260607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72611fe3565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af19050806120aa576120aa60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611fe3565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612101576121016058600080516020615e0d833981519152611fe3565b60005189880161212c670de0b6b3a76400008361212784670de0b6b3a76400008e611f9d565b611f9d565b9550508085111561215b5761215b605975055a5b9d985b1a5908185b5bdd5b9d0c54d8d85b1959603a1b611fe3565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615612194573d863b15171591505b816121b2576121b2605f600080516020615e4d833981519152611fe3565b8815612218576121c28582611fc6565b93508860048401528360248401526020600060448560008a5af1915081601f3d11600160005114161516156121fa573d863b15171591505b8161221857612218605f600080516020615e4d833981519152611fe3565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020615e2d8339815191528414610100020191600091829182918291906301c9c38082820111156122dd576122dd605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611fe3565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a0204905084610100811461236757610101811461238a57610110811461236757610111811461238a5780156123d057600181146123e7576010811461241557601181146124415761236260526e0e696e76616c69642073746174757360701b611fe3565b612475565b6123718386611fff565b6123628584600080516020615e2d833981519152612225565b6123948386611fff565b6123ad8584600080516020615e2d833981519152612225565b6123b78285611fff565b6123628483600080516020615e2d833981519152612225565b6123dc83868e8a612036565b612362858489612225565b6123f383868e8a612036565b6123fe858489612225565b61240a82858e8a612036565b612362848389612225565b61242183308e8a612036565b61242f60008085888b6120b1565b5061243b86828a612225565b50612475565b61244f828401308e8a612036565b61245c828585888b6120b1565b61246787838b612225565b61247286828b612225565b50505b50505050505050836000915091505b94509492505050565b600061249883613a8c565b156124ae57506001600160a01b0381163161251e565b6040516370a0823160e01b81526001600160a01b038416906370a08231906124da908590600401615606565b602060405180830381865afa1580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251b9190615a92565b90505b92915050565b60006125353688900388018861599a565b905060008160400151116125895760405162461bcd60e51b815260206004820152601b60248201527a066726f6d546f6b656e416d6f756e74206d757374206265203e203602c1b6044820152606401610145565b60006125988260000151611c92565b9050856125db5760405162461bcd60e51b815260206004820152601160248201527007061746873206d757374206265203e203607c1b6044820152606401610145565b600061260e888860008181106125f3576125f3615aab565b90506020028101906126059190615c67565b60800135611c92565b9050612622826001600160a01b0316613a8c565b156126bd576001600160a01b0381166006602160991b01146126565760405162461bcd60e51b815260040161014590615c87565b6006602160991b016001600160a01b031663d0e30db084604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561269c57600080fd5b505af11580156126b0573d6000803e3d6000fd5b50505050503095506126ee565b816001600160a01b0316816001600160a01b0316146126ee5760405162461bcd60e51b815260040161014590615c87565b612716868587866040015161270f88602001516001600160a01b0316613a8c565b8d8d613aa8565b61151a836020015185613b2b565b6000836020015161273757506000612ae9565b604084015160a08501516301c9c380818301111561277757612777605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611fe3565b6080860151606087015160405160608101604052600080516020615e2d8339815191528314600181146129a657604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa806127f5576127f56058600080516020615e0d833981519152611fe3565b6000518a81101561281957612819604d6a029cdd588819985a5b195960921b611fe3565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d1160016000511416151615612862573d873b15171591505b8161288057612880605f600080516020615e4d833981519152611fe3565b868552896020860152856040860152600080516020615ded833981519152606086a187156129335760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d11600160005114161516156128f4573d893b15171593505b8361291257612912605f600080516020615e4d833981519152611fe3565b88875260208701526040860152600080516020615ded833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156129725750843b153d17155b8061299f5761299f60607c1c7472616e7366657220746f6b656e207265636569766572206661696c611fe3565b5050612ae2565b874710156129c7576129c7604d6a029cdd588819985a5b195960921b611fe3565b874703633b9aca008782020497506000806000808b885af180612a0c57612a0c605d7c197472616e73666572206574682072656665726572206661696c000000611fe3565b858452886020850152846040850152600080516020615ded833981519152606085a18615612a9e5760c08c0151633b9aca0083890204998a0199600080808084865af180612a7c57612a7c605d7c197472616e73666572206574682072656665726572206661696c000000611fe3565b5087865260208601526040850152600080516020615ded833981519152606085a15b6000806000808c86038f60601b60601c5af1905080612adf57612adf605e7c1a7472616e7366657220657468207265636569766572206661696c0000611fe3565b50505b5050505050505b9392505050565b60008082612b105760405162461bcd60e51b815260040161014590615c14565b60006001600160a01b0385856000818110612b2d57612b2d615aab565b905060200201351690506000600160ff1b86866000818110612b5157612b51615aab565b9050602002013516600014905080612bca57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc59190615c4a565b612c2c565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2c9190615c4a565b93506001600160a01b0384166006602160991b01148015612c4a5750865b15612c6157600080516020615e2d83398151915293505b60008686612c70600182615a1b565b818110612c7f57612c7f615aab565b60200291909101359150506001600160a01b038116600160ff1b82161580612d0857816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d039190615c4a565b612d6a565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6a9190615c4a565b9550600160fd1b831615156001600160a01b0387166006602160991b01148015611c6d57508015611c8457600080516020615e2d8339815191529650505050505050935093915050565b600080612dbf611db5565b9050612dcc818989611eb6565b6000612de088612ddb8c611c92565b613265565b9050600080612df9848e612df38f611c92565b8c611f62565b91509150612e0b8d838b8b8b8b613db3565b50612e1f84612e198e611c92565b83612724565b5082612e2e8b612ddb8f611c92565b612e389190615a1b565b945087851015612e5a5760405162461bcd60e51b815260040161014590615a2e565b600080516020615e8d8339815191528b8b328c89604051611d9d959493929190615a5e565b60408601518690612edd5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610145565b6000612eec8260000151611c92565b9050612ef781613a8c565b15612f5f576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f4257600080fd5b505af1158015612f56573d6000803e3d6000fd5b50505050503094505b6000805b8851811015612f9b57888181518110612f7e57612f7e615aab565b602002602001015182612f919190615cb4565b9150600101612f63565b50826040015181111561300e5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610145565b5085518751146130525760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610145565b60005b86518110156130bb576130b386868661307a87602001516001600160a01b0316613a8c565b8c868151811061308c5761308c615aab565b60200260200101518c87815181106130a6576130a6615aab565b6020026020010151614103565b600101613055565b506130ca826020015184613b2b565b5050505050505050565b6001600160a01b038316600080516020615e2d8339815191521480156130fa5750813410155b80156131065750808210155b8061313d57506001600160a01b038316600080516020615e2d833981519152148015906131335750808210155b801561313d575034155b6113425760405162461bcd60e51b815260206004820152604e60248201527f6d6178436f6e73756d65416d6f756e74203e206d73672e76616c7565207c7c2060448201527f6d6178436f6e73756d65416d6f756e74203c2062617365526571756573742e6660648201526d1c9bdb551bdad95b905b5bdd5b9d60921b608482015260a401610145565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601613259576006602160991b016001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561322d57600080fd5b505af1158015613241573d6000803e3d6000fd5b505050505061134233836006602160991b0184614274565b61134233838584614274565b6000600080516020615e2d8339815191528314600181146132cf57604051602481016040526370a0823160e01b815283600482015260206000602483885afa9050806132c4576132c46058600080516020615e0d833981519152611fe3565b5060005191506132d4565b823191505b5092915050565b6132ee8363a9059cbb60e01b84846142ff565b6113425760405163fb7f507960e01b815260040160405180910390fd5b6000613532565b828152600060206000600484600401865afa613347576133476054700419d95d081d1bdad95b8819985a5b195960621b611fe3565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61339557613395605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611fe3565b600051915083836004015260206000602485855afa6133d2576133d26059750558985b185b98d953d98818d85b1b0819985a5b1959603a1b611fe3565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61339557613395605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611fe3565b668b0367c240bc6b60c21b8152600060406000600484600401875afa61346457613464605874051c995cd95c9d995cc818d85b1b0819985a5b195960421b611fe3565b6000516020518680156134905789156134885761348187866133de565b8390039650505b9091906134a7565b88156134a7576134a08786613352565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156134e157816004840152600060248401526134ef565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161073d5761073d605470041cddd85c0818d85b1b0819985a5b195960621b611fe3565b84602085028101858061355957613559604e6b0b656d70747920706f6f6c7360901b611fe3565b5060405182358b156001811461360357341561358f5761358f60557111696e76616c6964206d73672e76616c756560581b611fe3565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af16135fe576135fe6056720498db185a5b481d1bdad95b8819985a5b195960521b611fe3565b6136c2565b60018c34100361362d5761362d60557111696e76616c6964206d73672e76616c756560581b611fe3565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1613673576136736056720499195c1bdcda5d081155120819985a5b195960521b611fe3565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af16136c2576136c2605874051d1c985b9cd9995c8815d155120819985a5b195960421b611fe3565b508a9450602084015b838110156137215780356137156001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b613421565b965091506020016136cb565b5060009350600160fe1b81168015613850576000945061376e3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613421565b9550672e1a7d4da9059cbb60c01b8352600080516020615e6d83398151915260088401528560288401526020600060448560040160006006602160991b015af16137d5576137d5605874051d1c985b9cd9995c8815d155120819985a5b195960421b611fe3565b856004840152602060006024856000600080516020615e6d8339815191525af161381b5761381b60577304ddda5d1a191c985dc81155120819985a5b1959604a1b611fe3565b600080600080898b5af161384b5761384b60577304dd1c985b9cd9995c881155120819985a5b1959604a1b611fe3565b613a7c565b60009350600160ff1b821680156138fe57600160fc1b8316156138f9576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa6138b6576138b6605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611fe3565b600051955087846004015260206000602486895afa6138f3576138f3605675055d1bdad95b8c0818985b185b98d94819985a5b1959603a1b611fe3565b60005194505b613996565b600160fd1b831615613996576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa61395357613953605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611fe3565b600051955087846004015260206000602486895afa61399057613990605975055d1bdad95b8c4818985b185b98d94819985a5b1959603a1b611fe3565b60005194505b506139ce8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613421565b95508460001060018114613a3757600160ff1b83168015613a0f57613a086770a082310dfe168160c01b6001600160a01b03861687613312565b9650613a31565b613a2e6770a08231d21220a760c01b6001600160a01b03861687613312565b96505b50613a7a565b6770a082310dfe168160c01b845287846004015260206000602486895afa613a7257613a726058600080516020615e0d833981519152611fe3565b846000510396505b505b5050505050979650505050505050565b6001600160a01b0316600080516020615e2d8339815191521490565b806000613ace8288604080518082019091529182526001600160a01b0316602082015290565b905060005b82811015613b1f578015613ae5573099505b613b178a8a89848a8a8a88818110613aff57613aff615aab565b9050602002810190613b119190615c67565b88614352565b600101613ad3565b50505050505050505050565b613b3d826001600160a01b0316613a8c565b15613d20576040516370a0823160e01b81526000906006602160991b01906370a0823190613b6f903090600401615606565b602060405180830381865afa158015613b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb09190615a92565b90508015613c965760405163a9059cbb60e01b8152600080516020615e6d8339815191526004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af1158015613c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c359190615cc7565b50604051632e1a7d4d60e01b815260048101829052600080516020615e6d83398151915290632e1a7d4d90602401600060405180830381600087803b158015613c7d57600080fd5b505af1158015613c91573d6000803e3d6000fd5b505050505b6001600160a01b038216301461134257478015610394576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613cfa576040519150601f19603f3d011682016040523d82523d6000602084013e613cff565b606091505b50509050806120aa5760405162461bcd60e51b815260040161014590615bde565b6001600160a01b0381163014611378576040516370a0823160e01b81526000906001600160a01b038416906370a0823190613d5f903090600401615606565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615a92565b90508015611342576113428383836132db565b600061403e565b6000856001600160ff1b031015613ddc57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b0387168160018114613e7057630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180613e645760206000fd5b5060206000803e613ed3565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180613ecb5760206000fd5b5060208060003e5b505050506000519050600160ff1b811015613ef9576322323ba760e21b60005260046000fd5b1960010195945050505050565b600181341003613f2157631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af1806113785761137860577304d5d155120819195c1bdcda5d0819985a5b1959604a1b611fe3565b60405160048101672e1a7d4da9059cbb60c01b8252600080516020615e6d833981519152600482015283602482015260008060448360006006602160991b015af1905080613fc457613fc4605874051d1c985b9cd9995c881dd95d1a0819985a5b195960421b611fe3565b8360048301526000806024846000600080516020615e6d8339815191525af190508061400d5761400d605874051dda5d1a191c985dc81dd95d1a0819985a5b195960421b611fe3565b60008060008087875af190508061039457610394605571045cd95b9908195d1a195c8819985a5b1959605a1b611fe3565b82601f19602084028201018380614060576333f3e07b60e11b60005260046000fd5b50886000341180156140795761407589613f06565b309a505b5087606052825b828110156140a357614096898235848e30613dba565b309b509850602001614080565b506000600160fd1b83351611925082600181146140c55780156140e4576140f5565b6140d3898435848e30613dba565b94506140df858b613f59565b6140f5565b6140f2898435848e8e613dba565b94505b505050509695505050505050565b600061412c8260008151811061411b5761411b615aab565b602002602001015160800151611c92565b905060008060008451905060005b818110156142675780156141785761415d86828151811061411b5761411b615aab565b94506141726001600160a01b0386163061248d565b9650309a505b30614184600184615a1b565b82148015614190575088155b1561419c575088614234565b6141a7600184615a1b565b821080156141dd5750866141bc836001615cb4565b815181106141cc576141cc615aab565b602002602001015160200151516001145b1561422f57866141ee836001615cb4565b815181106141fe576141fe615aab565b60200260200101516020015160008151811061421c5761421c615aab565b6020026020010151905060019450614234565b600094505b61425b8c8c838b8b878151811061424d5761424d615aab565b602002602001015189614829565b5083925060010161413a565b5050505050505050505050565b306001600160a01b038516036142945761428f8284836132db565b610394565b60405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea466906142d1908590889088908790600401615bb4565b600060405180830381600087803b1580156142eb57600080fd5b505af11580156130ca573d6000803e3d6000fd5b60006040518481528360048201528260248201526020600060448360008a5af191505080156112d3573d801561434157600160005114601f3d11169150614349565b6000863b1191505b50949350505050565b60008060006143648560800135611c92565b905060006143728680615ce4565b9050116143bb5760405162461bcd60e51b8152602060048201526017602482015276065646765206c656e677468206d757374206265203e203604c1b6044820152606401610145565b6143c86040860186615ce4565b90506143d48680615ce4565b90501480156143fb57506143eb6060860186615ce4565b90506143f78680615ce4565b9050145b801561441f575061440f6020860186615ce4565b905061441b8680615ce4565b9050145b6144625760405162461bcd60e51b81526020600482015260146024820152730e0c2e8d040d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606401610145565b8615614522576040516370a0823160e01b81526001600160a01b038216906370a0823190614494903090600401615606565b602060405180830381865afa1580156144b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144d59190615a92565b9750600088116145225760405162461bcd60e51b815260206004820152601860248201527706e6f64652062616c616e6365206d757374206265203e20360441b6044820152606401610145565b60005b61452f8680615ce4565b905081101561426757600080808061454a60408b018b615ce4565b8681811061455a5761455a615aab565b9050602002013560001b905061ffff60a01b811660a01c915060ff60b81b811660b81c935060ff60b01b811660b01c92508b84146145d95760405162461bcd60e51b815260206004820152601c60248201527b1b9bd919481a5b9c1d5d125b99195e081a5b98dbdb9cda5cdd195b9d60221b6044820152606401610145565b82841080156145e9575088518311155b61462f5760405162461bcd60e51b81526020600482015260176024820152766e6f646520696e646578206f7574206f662072616e676560481b6044820152606401610145565b6146398289615cb4565b975060016146478b80615ce4565b614652929150615a1b565b85036146a55787612710146146a55760405162461bcd60e51b81526020600482015260196024820152780746f74616c576569676874206d75737420626520313030303603c1b6044820152606401610145565b50600060016146b48b80615ce4565b6146bf929150615a1b565b85036146d6576146cf878e615a1b565b90506146fc565b6127106146e3838f615ac1565b6146ed9190615ad8565b90506146f98188615cb4565b96505b6147398f61470d60208d018d615ce4565b8881811061471d5761471d615aab565b905060200201602081019061473291906159e8565b8884614274565b50875130908314801561474a57508a155b1561475257508c5b61481a61476260408c018c615ce4565b8781811061477257614772615aab565b602002919091013590506147868c80615ce4565b8881811061479657614796615aab565b90506020020160208101906147ab91906159e8565b6147b860608e018e615ce4565b898181106147c8576147c8615aab565b90506020028101906147da9190615d2d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208e01518691506149cf565b50836001019350505050614525565b6000805b8351518110156130ca5760008460400151828151811061484f5761484f615aab565b602002602001015160001b905060008060008061486f8960800151611c92565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c169250905061489b8288615cb4565b8951519097506148ad90600190615a1b565b8603614914576127108711156149145760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610145565b8761496f576000826127101461494057612710614931848d615ac1565b61493b9190615ad8565b614942565b8a5b905061496d8e8b60200151898151811061495e5761495e615aab565b60200260200101518484614274565b505b50506149b9818860000151868151811061498b5761498b615aab565b60200260200101518b858b6060015189815181106149ab576149ab615aab565b60200260200101518f6149f7565b50505080806149c790615d73565b91505061482d565b600160ff1b85166001600160a01b0386166149ee8287868489886149f7565b50505050505050565b8515614afc57600080866001600160a01b0316636f7929f260e01b878787604051602401614a2793929190615d8c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a756001600160a01b038616650f2882bf0b3360d21b615cb4565b604051602001614a86929190615db8565b60408051601f1981840301815290829052614aa091615dda565b6000604051808303816000865af19150503d8060008114614add576040519150601f19603f3d011682016040523d82523d6000602084013e614ae2565b606091505b509150915081614af557614af581614bf0565b5050610cc2565b600080866001600160a01b03166330e6ae3160e01b878787604051602401614b2693929190615d8c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614b746001600160a01b038616650f2882bf0b3360d21b615cb4565b604051602001614b85929190615db8565b60408051601f1981840301815290829052614b9f91615dda565b6000604051808303816000865af19150503d8060008114614bdc576040519150601f19603f3d011682016040523d82523d6000602084013e614be1565b606091505b5091509150816130ca576130ca815b805115614bff57805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610145565b50565b60008060408385031215614c5357600080fd5b50508035926020909101359150565b6001600160a01b0381168114614c3d57600080fd5b8035614c8281614c62565b919050565b600060a08284031215614c9957600080fd5b50919050565b60008083601f840112614cb157600080fd5b5081356001600160401b03811115614cc857600080fd5b6020830191508360208260051b8501011115614ce357600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614d0957600080fd5b8935985060208a0135614d1b81614c62565b9750614d2a8b60408c01614c87565b965060e08a01356001600160401b0380821115614d4657600080fd5b614d528d838e01614c9f565b90985096506101008c0135915080821115614d6c57600080fd5b614d788d838e01614c9f565b90965094506101208c0135915080821115614d9257600080fd5b50614d9f8c828d01614c9f565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215614dcf57600080fd5b8635955060208701359450604087013593506060870135614def81614c62565b925060808701356001600160401b03811115614e0a57600080fd5b614e1689828a01614c9f565b979a9699509497509295939492505050565b60008060008060006101008688031215614e4157600080fd5b853594506020860135614e5381614c62565b9350614e628760408801614c87565b925060e08601356001600160401b03811115614e7d57600080fd5b614e8988828901614c9f565b969995985093965092949392505050565b600080600080600060808688031215614eb257600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614e7d57600080fd5b60005b83811015614ef8578181015183820152602001614ee0565b50506000910152565b60008151808452614f19816020860160208601614edd565b601f01601f19169290920160200192915050565b602081526000612ae96020830184614f01565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715614f7857614f78614f40565b60405290565b60405161014081016001600160401b0381118282101715614f7857614f78614f40565b604051608081016001600160401b0381118282101715614f7857614f78614f40565b604051601f8201601f191681016001600160401b0381118282101715614feb57614feb614f40565b604052919050565b600060a0828403121561500557600080fd5b61500d614f56565b905081358152602082013561502181614c62565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561506557615065614f40565b5060051b60200190565b600082601f83011261508057600080fd5b813560206150956150908361504c565b614fc3565b82815260059290921b840181019181810190868411156150b457600080fd5b8286015b848110156150cf57803583529183019183016150b8565b509695505050505050565b600082601f8301126150eb57600080fd5b813560206150fb6150908361504c565b82815260059290921b8401810191818101908684111561511a57600080fd5b8286015b848110156150cf57803561513181614c62565b835291830191830161511e565b600082601f83011261514f57600080fd5b81356001600160401b0381111561516857615168614f40565b61517b601f8201601f1916602001614fc3565b81815284602083860101111561519057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126151be57600080fd5b813560206151ce6150908361504c565b82815260059290921b840181019181810190868411156151ed57600080fd5b8286015b848110156150cf5780356001600160401b038111156152105760008081fd5b61521e8986838b010161513e565b8452509183019183016151f1565b600061523a6150908461504c565b838152905060208101600584901b830185101561525657600080fd5b825b8460051b84018110156153c6576001600160401b03813581101561527b57600080fd5b8135850187601f82011261528e57600080fd5b61529b615090823561504c565b81358082526020808301929160051b8401018a8111156152ba57600080fd5b602084015b818110156153af5785813511156152d557600080fd5b8035850160a0818e03601f190112156152ed57600080fd5b6152f5614f56565b876020830135111561530657600080fd5b6153188e6020808501358501016150da565b8152876040830135111561532b57600080fd5b61533e8e602060408501358501016150da565b6020820152876060830135111561535457600080fd5b6153678e6020606085013585010161506f565b6040820152876080830135111561537d57600080fd5b6153908e602060808501358501016151ad565b606082015260a0919091013560808201528452602093840193016152bf565b505085525050602092830192919091019050615258565b50509392505050565b600082601f8301126153e057600080fd5b612ae98383356020850161522c565b8015158114614c3d57600080fd5b8035614c82816153ef565b600082601f83011261541957600080fd5b813560206154296150908361504c565b82815260059290921b8401810191818101908684111561544857600080fd5b8286015b848110156150cf5780356001600160401b038082111561546c5760008081fd5b90880190610140828b03601f19018113156154875760008081fd5b61548f614f7e565b87840135815260406154a2818601614c77565b8983015260606154b3818701614c77565b82840152608091506154c6828701614c77565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206155088187016153fd565b8383015292850135928484111561552157600091508182fd5b61552f8e8b8689010161513e565b9083015250865250505091830191830161544c565b600080600080600080610140878903121561555e57600080fd5b6155688888614ff3565b955060a08701356001600160401b038082111561558457600080fd5b6155908a838b0161506f565b965060c08901359150808211156155a657600080fd5b6155b28a838b016153cf565b955060e08901359150808211156155c857600080fd5b506155d589828a01615408565b9350506101008701356155e781614c62565b91506101208701356155f881614c62565b809150509295509295509295565b6001600160a01b0391909116815260200190565b600080600060e0848603121561562f57600080fd5b83359250602084013561564181614c62565b91506156508560408601614c87565b90509250925092565b6000806000806000610120868803121561567257600080fd5b85359450602086013561568481614c62565b93506156938760408801614ff3565b925060e08601356156a381614c62565b91506101008601356001600160401b03808211156156c057600080fd5b908701906080828a0312156156d457600080fd5b6156dc614fa1565b82356156e781614c62565b80825250602083013560208201526040830135604082015260608301358281111561571157600080fd5b61571d8b82860161513e565b6060830152508093505050509295509295909350565b600080600080600080600080610120898b03121561575057600080fd5b883597506157618a60208b01614c87565b965060c08901356001600160401b038082111561577d57600080fd5b6157898c838d01614c9f565b909850965060e08b01359150808211156157a257600080fd5b6157ae8c838d01614c9f565b90965094506101008b01359150808211156157c857600080fd5b506157d58b828c01614c9f565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561580257600080fd5b61580c8787614ff3565b945060a08601356001600160401b038082111561582857600080fd5b61583489838a0161506f565b955060c088013591508082111561584a57600080fd5b61585689838a016153cf565b945060e088013591508082111561586c57600080fd5b5061587988828901615408565b92505061010086013561588b81614c62565b809150509295509295909350565b60008060008060e085870312156158af57600080fd5b843593506158c08660208701614c87565b925060c08501356001600160401b038111156158db57600080fd5b6158e787828801614c9f565b95989497509550505050565b6000806000806060858703121561590957600080fd5b843593506020850135925060408501356001600160401b038082111561592e57600080fd5b818701915087601f83011261594257600080fd5b81358181111561595157600080fd5b88602082850101111561596357600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a082840312156159ac57600080fd5b612ae98383614ff3565b6000612ae936848461522c565b6020808252600b908201526a6e6f74206164647228302960a81b604082015260600190565b6000602082840312156159fa57600080fd5b8135612ae981614c62565b634e487b7160e01b600052601160045260246000fd5b8181038181111561251e5761251e615a05565b602080825260169082015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060208284031215615aa457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761251e5761251e615a05565b600082615af557634e487b7160e01b600052601260045260246000fd5b500490565b600061010060018060a01b03808816845280871660208501528551604085015280602087015116606085015260408601516080850152606086015160a0850152608086015160c08501528160e0850152808551168285015250506020830151610120830152604083015161014083015260608301516080610160840152615b85610180840182614f01565b979650505050505050565b60008060408385031215615ba357600080fd5b505080516020909101519092909150565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601c908201527b1d1c985b9cd9995c881b985d1a5d99481d1bdad95b8819985a5b195960221b604082015260600190565b6020808252601c908201527b0706f6f6c73206d7573742062652067726561746572207468616e20360241b604082015260600190565b600060208284031215615c5c57600080fd5b8151612ae981614c62565b60008235609e19833603018112615c7d57600080fd5b9190910192915050565b6020808252601390820152720ccd2e4e6e8a8ded6cadc40dad2e6dac2e8c6d606b1b604082015260600190565b8082018082111561251e5761251e615a05565b600060208284031215615cd957600080fd5b8151612ae9816153ef565b6000808335601e19843603018112615cfb57600080fd5b8301803591506001600160401b03821115615d1557600080fd5b6020019150600581901b3603821315614ce357600080fd5b6000808335601e19843603018112615d4457600080fd5b8301803591506001600160401b03821115615d5e57600080fd5b602001915036819003821315614ce357600080fd5b600060018201615d8557615d85615a05565b5060010190565b6001600160a01b038481168252831660208201526060604082018190526000906112d090830184614f01565b60008351615dca818460208801614edd565b9190910191825250602001919050565b60008251615c7d818460208701614edd56fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000146765742062616c616e63654f66206661696c65640000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000001b7472616e7366657220746f6b656e2072656665726572206661696c00000000000000000000000000f828bc75b2b63dac9dd84642acce1bb88e8425311bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba264697066735822122034332ae587bdb4e2290d1f2f156dd6684fd741c20e91cfc4a3b6e0be3cbd026764736f6c63430008110033