0 txs
0 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 toBCommission, uint256 toBTrim, 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
0x608060405234801561001057600080fd5b50615ea080620000216000396000f3fe6080604052600436106100dd5760003560e01c806301617fab1461013457806303b87e5f1461014757806308298b5a1461016d5780630c307f76146101805780630d5f0e3b1461019357806344014e98146101a657806354fd4d50146101b9578063591b3d08146102095780636aa476451461021c57806373679b6b146102515780639871efa41461027357806398d2ac6214610286578063b80c2f0914610299578063b8815477146102ac578063e0af3616146102bf578063e99bfa95146102da578063f2c42696146102ed578063fa461e331461030057600080fd5b3661012f5732330361012d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61012d610142366004614e15565b610320565b61015a610155366004614ebf565b610343565b6040519081526020015b60405180910390f35b61015a61017b366004614f8b565b6103f4565b61015a61018e366004614ffd565b6104ea565b61015a6101a136600461506f565b61070c565b61015a6101b4366004614ffd565b610767565b3480156101c557600080fd5b506101fc604051806040016040528060178152602001763b189718171b96b6bab63a3496b1b7b6b6b4b9b9b4b7b760491b81525081565b6040516101649190615102565b61015a6102173660046156f5565b610885565b34801561022857600080fd5b50610244732949a7b2771cc70ecd400871236d345979e1c5e781565b60405161016491906157b7565b34801561025d57600080fd5b50610244600080516020615e0b83398151915281565b61015a61028136600461506f565b610b83565b61012d6102943660046157cb565b610b9d565b61015a6102a736600461580a565b610cd4565b61015a6102ba366004614ffd565b610d31565b3480156102cb57600080fd5b506102446006602160991b0181565b61015a6102e83660046158c0565b610ef7565b61015a6102fb366004615970565b610f07565b34801561030c57600080fd5b5061012d61031b3660046159ca565b610f21565b600160ff1b81166001600160801b03821661033d8433848461116b565b50505050565b600087608001354281101561036a5760405162461bcd60e51b815260040161012490615a49565b6040518b8152600080516020615e4b8339815191529060200160405180910390a16103e533808c6103a0368e90038e018e615a71565b8c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103e092508d91508e9050615a8d565b6114fe565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020615e4b8339815191529060200160405180910390a160008061042d600034118686611652565b91509150600061043c8a611920565b9050826001600160a01b0316816001600160a01b0316148061048657506001600160a01b03811615801561048657506001600160a01b038316600080516020615deb833981519152145b6104cc5760405162461bcd60e51b81526020600482015260176024820152760eadcf0e6eec2e07440e8ded6cadc40dad2e6dac2e8c6d604b1b6044820152606401610124565b6104dc83838b8b338c8c8c61192c565b9a9950505050505050505050565b60008360800135428110156105115760405162461bcd60e51b815260040161012490615a49565b826105525760405162461bcd60e51b815260206004820152601160248201527007061746873206d757374206265203e203607c1b6044820152606401610124565b604051878152600080516020615e4b8339815191529060200160405180910390a16001600160a01b03861615610588578561058a565b335b95506000806105976119f4565b915091506000600760f91b878760008181106105b5576105b5615a9a565b90506020028101906105c79190615ab0565b608001351690506105f2836105dc8a35611920565b6105ec60408c0160208d01615ad0565b84611f50565b61060b61060560408a0160208b01615ad0565b8a612046565b945060008061063885338d8d6040013588600001518f60200160208101906106339190615ad0565b6120c6565b9150915061064a8a8a8a333387612110565b610669858c838d60200160208101906106639190615ad0565b886122bd565b508661068461067e60408d0160208e01615ad0565b8d612046565b61068e9190615b03565b965089606001358710156106b45760405162461bcd60e51b815260040161012490615b1c565b600080516020615e2b8339815191526106cd8b35611920565b6106dd60408d0160208e01615ad0565b328d604001358b6040516106f5959493929190615b4c565b60405180910390a150505050505095945050505050565b60405160a086901c8152600090600080516020615e4b8339815191529060200160405180910390a16000806107456000341186866127f7565b91509150610759338984848b8b8b8b612abb565b925050505b95945050505050565b600083608001354281101561078e5760405162461bcd60e51b815260040161012490615a49565b604051878152600080516020615e4b8339815191529060200160405180910390a16000806107c06000341187876127f7565b90925090506001600160a01b0382166107d98835611920565b6001600160a01b031614801561080f57506001600160a01b0381166108046040890160208a01615ad0565b6001600160a01b0316145b6108575760405162461bcd60e51b81526020600482015260196024820152780eadcd2e6eec2e0ac667440e8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b61087833896001600160a01b031684848b604001358c606001358c8c612abb565b9998505050505050505050565b60008660800151428110156108ac5760405162461bcd60e51b815260040161012490615a49565b60006108bb8960000151611920565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016109215760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610124565b6001600160a01b0384166109705760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610124565b6001600160a01b0385166109b95760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610124565b6000896040015111610a045760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610124565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a339030906004016157b7565b602060405180830381865afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a749190615b80565b905060005b8951811015610adb578a60400151828b8381518110610a9a57610a9a615a9a565b6020026020010151610aac9190615b99565b610ab69190615bb0565b8a8281518110610ac857610ac8615a9a565b6020908102919091010152600101610a79565b5060408a0181905260208a0151610af29087612046565b9350610b028a8a8a30898b612b8b565b83610b118b6020015188612046565b610b1b9190615b03565b93508960600151841015610b415760405162461bcd60e51b815260040161012490615b1c565b600080516020615e2b833981519152828b60200151328d6040015188604051610b6e959493929190615b4c565b60405180910390a15050509695505050505050565b6000610b938686863387876103f4565b9695505050505050565b806080013542811015610bc25760405162461bcd60e51b815260040161012490615a49565b600080610bcf8435611920565b90506001600160a01b038116600080516020615deb833981519152148015610c1557506006602160991b01610c0a6040860160208701615ad0565b6001600160a01b0316145b15610c235760009150610cbc565b6001600160a01b0381166006602160991b01148015610c675750600080516020615deb833981519152610c5c6040860160208701615ad0565b6001600160a01b0316145b15610c755760019150610cbc565b60405162461bcd60e51b815260206004820152601c60248201527b29bbb0b82bb930b81d1034b73b30b634b2103a37b5b2b7103830b4b960211b6044820152606401610124565b610ccc868684876040013561116b565b505050505050565b6000876080013542811015610cfb5760405162461bcd60e51b815260040161012490615a49565b6040518a8152600080516020615e4b8339815191529060200160405180910390a16104dc3380806103a0368e90038e018e615a71565b6000836080013542811015610d585760405162461bcd60e51b815260040161012490615a49565b604051878152600080516020615e4b8339815191529060200160405180910390a1600080610d8a600034118787611652565b90925090506000610d9b8835611920565b9050826001600160a01b0316816001600160a01b03161480610de557506001600160a01b038116158015610de557506001600160a01b038316600080516020615deb833981519152145b610e2f5760405162461bcd60e51b815260206004820152601b60248201527a0eadcf0e6eec2e07440cce4dedaa8ded6cadc40dad2e6dac2e8c6d602b1b6044820152606401610124565b6001600160a01b038216610e4960408a0160208b01615ad0565b6001600160a01b03161480610e9757506000610e6b60408a0160208b01615ad0565b6001600160a01b0316148015610e9757506001600160a01b038216600080516020615deb833981519152145b610edf5760405162461bcd60e51b81526020600482015260196024820152780eadcf0e6eec2e07440e8dea8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b6104dc83838a604001358b60600135338e8d8d61192c565b6000610b93868686868687610885565b6000610f1685338686866104ea565b90505b949350505050565b610fc2565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610f5d57610f5d610f26565b6000518015610f885760a435600483015260248201819052610f886020600060448582885af1610f8d565b505050565b80610f9a57610f9a610f26565b600160005114601f3d11163d151780610fbe57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610ff957610ff9610f26565b6020806004808501335afa61101057611010610f26565b60206040600460088501335afa61102957611029610f26565b600080600088136001811461104557602051925087915061104e565b60005192508891505b50600173cced75703e87967682319712fd9296b9de09020360581b03198452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b03605585201692503383146110c157635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146111335782601486015283603486015233605486015281607486015261112e602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af1610f8d565b611160565b336010860152816030860152611156602060006044600c89016000885af1610f8d565b6111608386610f30565b505050505050505050565b604051848152600080516020615e4b8339815191529060200160405180910390a1600081116111d15760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610124565b6001600160a01b038316156111e657826111e8565b335b92506000806111f56119f4565b9150915060008461121457600080516020615deb83398151915261121d565b6006602160991b015b9050600085611233576006602160991b01611243565b600080516020615deb8339815191525b90506112528483836000611f50565b60008061126786338b8a8960000151886120c6565b9150915087156113de5760405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea466906112c3906006602160991b01903390600080516020615e0b833981519152908d90600401615bd2565b600060405180830381600087803b1580156112dd57600080fd5b505af11580156112f1573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b8152600481018a9052600080516020615e0b8339815191529250632e1a7d4d9150602401600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b505050506001600160a01b03821630146113d9576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146113b1576040519150601f19603f3d011682016040523d82523d6000602084013e6113b6565b606091505b50509050806113d75760405162461bcd60e51b815260040161012490615bfc565b505b6114aa565b855161142c5786341461142c5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610124565b6006602160991b016001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b505050506001600160a01b038316301490506114aa576114aa6006602160991b018389612f17565b60006114b9878b84878a6122bd565b9050600080516020615e2b8339815191528585328b6114d88682615b03565b6040516114e9959493929190615b4c565b60405180910390a15050505050505050505050565b60006001600160a01b038516156115155784611517565b335b94506000806115246119f4565b915091506000600760f91b8560008151811061154257611542615a9a565b602002602001015160008151811061155c5761155c615a9a565b6020026020010151608001511690506115878361157c8960000151611920565b896020015184611f50565b611595876020015189612046565b93506000806115b4858d8c8c6040015188600001518e602001516120c6565b915091506115c68989898f8f87612b8b565b6115d7858b838c60200151886122bd565b505050836115e988602001518a612046565b6115f39190615b03565b935086606001518410156116195760405162461bcd60e51b815260040161012490615b1c565b600080516020615e2b8339815191526116358860000151611920565b8860200151328a6040015188604051610b6e959493929190615b4c565b600080826116725760405162461bcd60e51b815260040161012490615c32565b60006001600160a01b038585600081811061168f5761168f615a9a565b9050602002013560001c1690506000600160ff1b868660008181106116b6576116b6615a9a565b9050602002013560001c166000141590508061173357816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172e9190615c68565b611795565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117959190615c68565b93506001600160a01b0384166006602160991b011480156117b35750865b156117ca57600080516020615deb83398151915293505b600086866117d9600182615b03565b8181106117e8576117e8615a9a565b60200291909101359150506001600160a01b038116600160ff1b821615158061187257816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186d9190615c68565b6118d4565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190615c68565b9550600160fe1b831615156001600160a01b0387166006602160991b011480156118fb5750805b1561191257600080516020615deb83398151915296505b505050505050935093915050565b6001600160a01b031690565b60006001600160a01b038416156119435783611945565b335b93506000806119526119f4565b91509150611963828c8c6000611f50565b61196d8a87612046565b925061198187878d8d8d8d8b8b8a8a612f47565b8261198c8b88612046565b6119969190615b03565b9250878310156119b85760405162461bcd60e51b815260040161012490615b1c565b600080516020615e2b8339815191528b8b328c876040516119dd959493929190615b4c565b60405180910390a150505b98975050505050505050565b604080516102a081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c080870186905260e0808801879052610100880187905261012088018790526101408801879052610160880187905261018088018790526101a088018790526101c088018790526101e088018790526102008801879052610220880187905261024088018790526102608801879052610280880187905288519081018952868152948501869052968401859052918301849052820183905281018290529283015290611aee565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60203603356001600160d01b031981166000653ca20afc2bbb60d01b8214651e51057e155560d11b83141715611b22575060015b6522220afc2bbb60d01b8214651111057e155560d11b83141715611b44575060025b6588880afc2bbb60d01b8214654444057e155560d11b83141715611b66575060035b654444057e155560d11b8214651111057e155560d11b8314651e51057e155560d11b8414171785526588880afc2bbb60d01b82146522220afc2bbb60d01b8314653ca20afc2bbb60d01b8414171785602001526000811160018114611bed57601360005b81811015611be657600060208202890160400152600101611bca565b5050611c8d565b65ffffffffffff60a01b841660a01c8660a001526001600160a01b0384168660c001526040360335935060016000600160ff1b86161115611c2c575060025b60608701526001600160a01b03841660408701526002821115611c865760ff60f01b841660f01c915060088211600383101715611c8657611c8660587414696e76616c6964207265666572726572206e756d60401b611ad2565b8186608001525b506001811115611d445760015b6008811015611d425781811060018114611cc657600060408302880160a0810182905260c00152611d39565b6020820260400136033594506001600160d01b03198516808514611d0a57611d0a605b7717696e76616c696420636f6d6d697373696f6e20666c616760281b611ad2565b5065ffffffffffff60a01b851660a01c604083028860a00101526001600160a01b038516604083028860c00101525b50600101611c9a565b505b600092508015611d58576020600182010292505b50602082013603356001600160d01b031981169150653bbbbbbb911160d11b82146577777777111160d01b8314178085526001811460018114611db65760008660200152600086604001526000866060015260008660800152611e3c565b65ffffffffffff60a01b831660a01c86602001526001600160a01b03831686604001526040850136033592506001600160d01b03198316808514611e1457611e1460557111696e76616c6964207472696d20666c616760581b611ad2565b506001600160cf1b841615611e27575060025b60608701526001600160a01b03831660808701525b5050653bbbbbbb911160d11b821460018114611e655760008560a0015260008560c00152611ec5565b6060840136033591506001600160d01b03198216808414611ea057611ea060557111696e76616c6964207472696d20666c616760581b611ad2565b5065ffffffffffff60a01b821660a01c8560a001526001600160a01b0382168560c001525b50505050816000015180611eda575081602001515b80611ee3575080515b15611f4c577f7970b0744fdb6cf0b120e5e0a5f4da3ab8cbec6d5d9ec8a4f327ccc1d8a5eb8b8260600151826060015183602001518460a00151604051611f43949392919093845260208401929092526040830152606082015260800190565b60405180910390a15b9091565b8351600160fb1b82161515600160fa1b8316151517600160f91b83161515179080821615611fa057611fa0605f7c1b46726f6d20636f6d6d697373696f6e206e6f7420737570706f727400611ad2565b838503611fc457611fc460526e0e496e76616c696420746f6b656e7360701b611ad2565b602086015181811615611ff957611ff960607c1c496e76616c696420636f6d6d697373696f6e20646972656374696f6e611ad2565b6040870151868114831690861482161790159115919091161790508061203f5761203f605b7717496e76616c696420636f6d6d697373696f6e20696e666f60281b611ad2565b5050505050565b6000600080516020615deb8339815191528314600181146120ba57604051602481016040526370a0823160e01b815283600482015260206000602483885afa9050806120af576120af6058740519d95d0818985b185b98d953d98819985a5b195960421b611ad2565b5060005191506120bf565b823191505b5092915050565b6000808760200151806120d65750835b156120ef573091506120e88330612046565b90506120f3565b8591505b87511561210557612105888887612f8f565b965096945050505050565b600061212136889003880188615a71565b905060006121328260000151611920565b905060006121678888600081811061214c5761214c615a9a565b905060200281019061215e9190615ab0565b60800135611920565b905061217b826001600160a01b03166133bb565b15612216576001600160a01b0381166006602160991b01146121af5760405162461bcd60e51b815260040161012490615c85565b6006602160991b016001600160a01b031663d0e30db084604001516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121f557600080fd5b505af1158015612209573d6000803e3d6000fd5b5050505050309550612287565b816001600160a01b0316816001600160a01b0316146122475760405162461bcd60e51b815260040161012490615c85565b34156122875760405162461bcd60e51b815260206004820152600f60248201526e076616c7565206d757374206265203608c1b6044820152606401610124565b6122af86858786604001516122a888602001516001600160a01b03166133bb565b8d8d6133d7565b61116083602001518561345a565b600085602001511580156122d057508151155b156122dd5750600061075e565b60006122e98430612046565b905061272e565b8082028115828204841417840261230f5763ad251c276000526004601cfd5b9290920492915050565b500390565b8115610fbe5760008060008085855af180610f8857610f88605571045cd95b9908195d1a195c8819985a5b1959605a1b611ad2565b8215610f88576040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156123a25750803b153d17155b8061033d5761033d605975055d1c985b9cd9995c881d1bdad95b8819985a5b1959603a1b611ad2565b604051606081016040528181528260208201528360408201528460608201527f3cfb523a4c38d88561dd3bf04805a31715c8b5fc468a03b8d684356f360dea99608082a15050505050565b604051606081016040528181528260208201528360408201527f7bec7d55a62a7a7b8068f1533e2a3bbf727b3e2e57f30c576fe159da60e09a65606082a150505050565b604051606081016040528181528260208201528360408201527ffd08115c8e43d2a49d95ee18d7f69b8bbac60bd368c73cf22d30664a22a0626d606082a150505050565b600060808201516000805b828110156124c85760408102850160a0015191909101906001016124a9565b506301c9c3808111156124f9576124f9605975156572726f7220636f6d6d697373696f6e207261746560381b611ad2565b5060009150600080516020615deb8339815191528414600181146125715760005b8281101561256b576040810260a00185015161253b633b9aca00828a6122f0565b6040830260c00187015161255082828b612353565b61255c8382848c6123cb565b5094909401935060010161251a565b506125d4565b60005b828110156125d2576040810260a001850151612595633b9aca00828a6122f0565b6040830260c0018701516125a9828261231e565b6125c3838284600080516020615deb8339815191526123cb565b50949094019350600101612574565b505b50509392505050565b6000602082015160a083015160648211156126105761261060536f0f6572726f72207472696d207261746560681b611ad2565b6103e881111561263a5761263a605571116572726f7220636861726765207261746560581b611ad2565b6080840151860392506126506103e883886122f0565b91508183111561265e578192505b61266b6103e882856122f0565b915050808203600080516020615deb8339815191528514600181146126955780156126ec576125d2565b60408501516126a4838261231e565b6126bd8184600080516020615deb833981519152612416565b5060c08501516126cd848261231e565b6126e68185600080516020615deb83398151915261245a565b506125d2565b60408501516126fc838289612353565b612707818489612416565b5060c0850151612718848289612353565b61272381858961245a565b505050509392505050565b8085111561275a5761275a6059750ab4b73b30b634b2103130b630b731b29030b33a32b960391b611ad2565b602087015185820390801561277c5761277482878b61249e565b935090839003905b508351608085015181151581841116156127a45761279b8388886125dd565b94850194909203915b5050600080516020615deb8339815191528514600181146127d8576127d3826001600160a01b038a1688612353565b6127eb565b6127eb826001600160a01b038a1661231e565b50505095945050505050565b600080826128175760405162461bcd60e51b815260040161012490615c32565b60006001600160a01b038585600081811061283457612834615a9a565b905060200201351690506000600160ff1b8686600081811061285857612858615a9a565b90506020020135166000149050806128d157816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc9190615c68565b612933565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129339190615c68565b93506001600160a01b0384166006602160991b011480156129515750865b1561296857600080516020615deb83398151915293505b60008686612977600182615b03565b81811061298657612986615a9a565b60200291909101359150506001600160a01b038116600160ff1b82161580612a0f57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0a9190615c68565b612a71565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a719190615c68565b9550600160fd1b831615156001600160a01b0387166006602160991b011480156118fb5750801561191257600080516020615deb8339815191529650505050505050935093915050565b6000806001600160a01b03891615612adb57612ad689611920565b612add565b335b9050600080612aea6119f4565b91509150612afb828b8b6000611f50565b612b058984612046565b9350612b188c848a8a8d8b8b89896136e2565b83612b238a85612046565b612b2d9190615b03565b935086841015612b4f5760405162461bcd60e51b815260040161012490615b1c565b600080516020615e2b8339815191528a8a328b88604051612b74959493929190615b4c565b60405180910390a150505098975050505050505050565b85518690600090612b9b90611920565b9050612ba6816133bb565b15612c8a576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612bf157600080fd5b505af1158015612c05573d6000803e3d6000fd5b50505050506006602160991b016001600160a01b0316612c5c87600081518110612c3157612c31615a9a565b6020026020010151600081518110612c4b57612c4b615a9a565b602002602001015160800151611920565b6001600160a01b031614612c825760405162461bcd60e51b815260040161012490615c85565b309450612cd0565b806001600160a01b0316612caa87600081518110612c3157612c31615a9a565b6001600160a01b031614612cd05760405162461bcd60e51b815260040161012490615c85565b6000805b8851811015612d0c57888181518110612cef57612cef615a9a565b602002602001015182612d029190615cb2565b9150600101612cd4565b508260400151811115612d7f5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610124565b508551875114612dc35760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610124565b60005b8651811015612efe578015612ea15786600081518110612de857612de8615a9a565b6020026020010151600081518110612e0257612e02615a9a565b602002602001015160800151878281518110612e2057612e20615a9a565b6020026020010151600081518110612e3a57612e3a615a9a565b60200260200101516080015114612ea15760405162461bcd60e51b815260206004820152602560248201527f496e636f6e73697374656e742066726f6d546f6b656e206163726f7373206261604482015264746368657360d81b6064820152608401610124565b612ef6868686612ebd87602001516001600160a01b03166133bb565b8c8681518110612ecf57612ecf615a9a565b60200260200101518c8781518110612ee957612ee9615a9a565b6020026020010151613725565b600101612dc6565b50612f0d82602001518461345a565b5050505050505050565b612f2a8363a9059cbb60e01b848461387c565b610f885760405163fb7f507960e01b815260040160405180910390fd5b600080612f5c848d8d8b87600001518e6120c6565b90925090508b612f718b8a8a8a8a86896138cf565b50612f7f858d848d886122bd565b5050505050505050505050505050565b613240565b600082821015612319576346e72d036000526004601cfd5b8115610fbe5760008060008085855af180610f8857610f88605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611ad2565b831561033d576040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af190508061203f5761203f60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611ad2565b8215610f88576040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156130b25750803b153d17155b8061033d5761033d605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611ad2565b604051604881016040526370a0823160e01b815230600482015260206000602483855afa90508061312d5761312d6058740519d95d0818985b185b98d953d98819985a5b195960421b611ad2565b506000516000805b858110156131ec576040810260a0018701516000600188038314600181146131b25761317c670de0b6b3a7640000876131778b670de0b6b3a7640000886122f0565b6122f0565b9150858211156131a9576131a9605874051a5b9d985b1a5908185b5bdd5b9d14d8d85b195960421b611ad2565b938101936131bf565b6131bc8587612f94565b91505b506040830260c0018901516131d5828289613063565b6131e18382848a6131f5565b505050600101613135565b50505050505050565b604051606081016040528181528260208201528360408201528460608201527fcd5eae9d9d0b96532bd1b7dbf6628ce436b2af735829087a03c548439f8bf850608082a15050505050565b604083015160608401516000608086015160005b818110156132735760408102880160a001519290920191600101613254565b506301c9c3808211156132a4576132a4605975156572726f7220636f6d6d697373696f6e207261746560381b611ad2565b600080516020615deb83398151915284036133125760005b818110156133105760408102880160a081015160c090910151633b9aca00859003888302046132eb8183612fac565b613305838383600080516020615deb8339815191526131f5565b5050506001016132bc565b505b60018314600080516020615deb833981519152851415161561337b5760005b818110156133795760408102880160a081015160c090910151633b9aca008590038883020461336281838c8b612fe9565b61336e8383838b6131f5565b505050600101613331565b505b60028314600080516020615deb83398151915285141516156131ec5781633b9aca0003828602046133ae81308988612fe9565b506131ec878284876130df565b6001600160a01b0316600080516020615deb8339815191521490565b8060006133fd8288604080518082019091529182526001600160a01b0316602082015290565b905060005b8281101561344e578015613414573099505b6134468a8a89848a8a8a8881811061342e5761342e615a9a565b90506020028101906134409190615ab0565b88614076565b600101613402565b50505050505050505050565b61346c826001600160a01b03166133bb565b1561364f576040516370a0823160e01b81526000906006602160991b01906370a082319061349e9030906004016157b7565b602060405180830381865afa1580156134bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134df9190615b80565b905080156135c55760405163a9059cbb60e01b8152600080516020615e0b8339815191526004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af1158015613540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135649190615cc5565b50604051632e1a7d4d60e01b815260048101829052600080516020615e0b83398151915290632e1a7d4d90602401600060405180830381600087803b1580156135ac57600080fd5b505af11580156135c0573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610f885747801561033d576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613629576040519150601f19603f3d011682016040523d82523d6000602084013e61362e565b606091505b505090508061203f5760405162461bcd60e51b815260040161012490615bfc565b6001600160a01b0381163014610fbe576040516370a0823160e01b81526000906001600160a01b038416906370a082319061368e9030906004016157b7565b602060405180830381865afa1580156136ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cf9190615b80565b90508015610f8857610f88838383612f17565b6000806136f7848c8c8c87600001518c6120c6565b915091506137098b838b8b8a8a614551565b50613717848b838a876122bd565b505050505050505050505050565b600061373d82600081518110612c4b57612c4b615a9a565b905060008060008451905060005b8181101561386f5780156137805761376e868281518110612c4b57612c4b615a9a565b945061377a8530612046565b9650309a505b3061378c600184615b03565b82148015613798575088155b156137a457508861383c565b6137af600184615b03565b821080156137e55750866137c4836001615cb2565b815181106137d4576137d4615a9a565b602002602001015160200151516001145b1561383757866137f6836001615cb2565b8151811061380657613806615a9a565b60200260200101516020015160008151811061382457613824615a9a565b602002602001015190506001945061383c565b600094505b6138638c8c838b8b878151811061385557613855615a9a565b6020026020010151896148a1565b5083925060010161374b565b5050505050505050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015610f19573d80156138be57600160005114601f3d111691506138c6565b6000863b1191505b50949350505050565b6000613af6565b828152600060206000600484600401865afa61390b5761390b6054700419d95d081d1bdad95b8819985a5b195960621b611ad2565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61395957613959605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611ad2565b600051915083836004015260206000602485855afa613996576139966059750558985b185b98d953d98818d85b1b0819985a5b1959603a1b611ad2565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61395957613959605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611ad2565b668b0367c240bc6b60c21b8152600060406000600484600401875afa613a2857613a28605874051c995cd95c9d995cc818d85b1b0819985a5b195960421b611ad2565b600051602051868015613a54578915613a4c57613a4587866139a2565b8390039650505b909190613a6b565b8815613a6b57613a648786613916565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015613aa55781600484015260006024840152613ab3565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16119e8576119e8605470041cddd85c0818d85b1b0819985a5b195960621b611ad2565b846020850281018580613b1d57613b1d604e6b0b656d70747920706f6f6c7360901b611ad2565b5060405182358b600080516020615deb8339815191521460018114613bd6573415613b6257613b6260557111696e76616c6964206d73672e76616c756560581b611ad2565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af1613bd157613bd16056720498db185a5b481d1bdad95b8819985a5b195960521b611ad2565b613c95565b60018c341003613c0057613c0060557111696e76616c6964206d73672e76616c756560581b611ad2565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1613c4657613c466056720499195c1bdcda5d081155120819985a5b195960521b611ad2565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af1613c9557613c95605874051d1c985b9cd9995c8815d155120819985a5b195960421b611ad2565b508a9450602084015b83811015613cf4578035613ce86001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b6139e5565b96509150602001613c9e565b5060009350600160fe1b81168015613e3057600080516020615deb8339815191529450613d4e3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6139e5565b9550672e1a7d4da9059cbb60c01b8352600080516020615e0b83398151915260088401528560288401526020600060448560040160006006602160991b015af1613db557613db5605874051d1c985b9cd9995c8815d155120819985a5b195960421b611ad2565b856004840152602060006024856000600080516020615e0b8339815191525af1613dfb57613dfb60577304ddda5d1a191c985dc81155120819985a5b1959604a1b611ad2565b600080600080898b5af1613e2b57613e2b60577304dd1c985b9cd9995c881155120819985a5b1959604a1b611ad2565b614066565b60009350600160ff1b82168015613ede57600160fc1b831615613ed9576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa613e9657613e96605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611ad2565b600051955087846004015260206000602486895afa613ed357613ed3605675055d1bdad95b8c0818985b185b98d94819985a5b1959603a1b611ad2565b60005194505b613f76565b600160fd1b831615613f76576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa613f3357613f33605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611ad2565b600051955087846004015260206000602486895afa613f7057613f70605975055d1bdad95b8c4818985b185b98d94819985a5b1959603a1b611ad2565b60005194505b50613fae8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6139e5565b9550846000106001811461401757600160ff1b83168015613fef57613fe86770a082310dfe168160c01b6001600160a01b038616876138d6565b9650614011565b61400e6770a08231d21220a760c01b6001600160a01b038616876138d6565b96505b50614064565b6770a082310dfe168160c01b845287846004015260206000602486895afa61405c5761405c6058740519d95d0818985b185b98d953d98819985a5b195960421b611ad2565b846000510396505b505b5050505050979650505050505050565b60008060006140888560800135611920565b905060006140968680615ce2565b9050116140df5760405162461bcd60e51b8152602060048201526017602482015276065646765206c656e677468206d757374206265203e203604c1b6044820152606401610124565b6140ec6040860186615ce2565b90506140f88680615ce2565b905014801561411f575061410f6060860186615ce2565b905061411b8680615ce2565b9050145b801561414357506141336020860186615ce2565b905061413f8680615ce2565b9050145b6141865760405162461bcd60e51b81526020600482015260146024820152730e0c2e8d040d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606401610124565b8615614246576040516370a0823160e01b81526001600160a01b038216906370a08231906141b89030906004016157b7565b602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f99190615b80565b9750600088116142465760405162461bcd60e51b815260206004820152601860248201527706e6f64652062616c616e6365206d757374206265203e20360441b6044820152606401610124565b60005b6142538680615ce2565b905081101561386f57600080808061426e60408b018b615ce2565b8681811061427e5761427e615a9a565b9050602002013560001b905061ffff60a01b811660a01c915060ff60b81b811660b81c935060ff60b01b811660b01c92508b84146142fd5760405162461bcd60e51b815260206004820152601c60248201527b1b9bd919481a5b9c1d5d125b99195e081a5b98dbdb9cda5cdd195b9d60221b6044820152606401610124565b828410801561430d575088518311155b6143535760405162461bcd60e51b81526020600482015260176024820152766e6f646520696e646578206f7574206f662072616e676560481b6044820152606401610124565b61435d8289615cb2565b9750600161436b8b80615ce2565b614376929150615b03565b85036143c95787612710146143c95760405162461bcd60e51b81526020600482015260196024820152780746f74616c576569676874206d75737420626520313030303603c1b6044820152606401610124565b50600060016143d88b80615ce2565b6143e3929150615b03565b85036143fa576143f3878e615b03565b9050614420565b612710614407838f615b99565b6144119190615bb0565b905061441d8188615cb2565b96505b6144618f61443160208d018d615ce2565b8881811061444157614441615a9a565b90506020020160208101906144569190615ad0565b8c6080013584614a2f565b50875130908314801561447257508a155b1561447a57508c5b61454261448a60408c018c615ce2565b8781811061449a5761449a615a9a565b602002919091013590506144ae8c80615ce2565b888181106144be576144be615a9a565b90506020020160208101906144d39190615ad0565b6144e060608e018e615ce2565b898181106144f0576144f0615a9a565b90506020028101906145029190615d2b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208e0151869150614bb1565b50836001019350505050614249565b60006147dc565b6000856001600160ff1b03101561457a57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461460e57630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806146025760206000fd5b5060206000803e614671565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806146695760206000fd5b5060208060003e5b505050506000519050600160ff1b811015614697576322323ba760e21b60005260046000fd5b1960010195945050505050565b6001813410036146bf57631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af180610fbe57610fbe60577304d5d155120819195c1bdcda5d0819985a5b1959604a1b611ad2565b60405160048101672e1a7d4da9059cbb60c01b8252600080516020615e0b833981519152600482015283602482015260008060448360006006602160991b015af190508061476257614762605874051d1c985b9cd9995c881dd95d1a0819985a5b195960421b611ad2565b8360048301526000806024846000600080516020615e0b8339815191525af19050806147ab576147ab605874051dda5d1a191c985dc81dd95d1a0819985a5b195960421b611ad2565b60008060008087875af190508061033d5761033d605571045cd95b9908195d1a195c8819985a5b1959605a1b611ad2565b82601f196020840282010183806147fe576333f3e07b60e11b60005260046000fd5b508860003411801561481757614813896146a4565b309a505b5087606052825b8281101561484157614834898235848e30614558565b309b50985060200161481e565b506000600160fd1b833516119250826001811461486357801561488257614893565b614871898435848e30614558565b945061487d858b6146f7565b614893565b614890898435848e8e614558565b94505b505050509695505050505050565b6000805b835151811015612f0d576000846040015182815181106148c7576148c7615a9a565b602090810291909101015190506001600160a01b038116600160ff1b821661ffff60a084901c166148f88187615cb2565b88515190965061490a90600190615b03565b8503614971576127108611156149715760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610124565b866149d0576000816127101461499d5761271061498e838c615b99565b6149989190615bb0565b61499f565b895b90506149ce8d8a6020015188815181106149bb576149bb615a9a565b60200260200101518b6080015184614a2f565b505b50614a1981886000015186815181106149eb576149eb615a9a565b60200260200101518b858b606001518981518110614a0b57614a0b615a9a565b60200260200101518f614bcc565b5050508080614a2790615d71565b9150506148a5565b6001600160a01b038216600760f91b8316601f60fb1b8101614a5257505061033d565b600160fa1b8103614b145782600003614b025773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601614a9257479250614b02565b6040516370a0823160e01b81526001600160a01b038316906370a0823190614abe9030906004016157b7565b602060405180830381865afa158015614adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aff9190615b80565b92505b614b0d828685612f17565b505061033d565b600160f91b8103614b2657505061033d565b306001600160a01b03871603614b4657614b41828685612f17565b610ccc565b60405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690614b839085908a908a908990600401615bd2565b600060405180830381600087803b158015614b9d57600080fd5b505af115801561344e573d6000803e3d6000fd5b600160ff1b85166001600160a01b0386166131ec8287868489885b8515614cd157600080866001600160a01b0316636f7929f260e01b878787604051602401614bfc93929190615d8a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614c4a6001600160a01b038616650f2882bf0b3360d21b615cb2565b604051602001614c5b929190615db6565b60408051601f1981840301815290829052614c7591615dd8565b6000604051808303816000865af19150503d8060008114614cb2576040519150601f19603f3d011682016040523d82523d6000602084013e614cb7565b606091505b509150915081614cca57614cca81614dc5565b5050610ccc565b600080866001600160a01b03166330e6ae3160e01b878787604051602401614cfb93929190615d8a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614d496001600160a01b038616650f2882bf0b3360d21b615cb2565b604051602001614d5a929190615db6565b60408051601f1981840301815290829052614d7491615dd8565b6000604051808303816000865af19150503d8060008114614db1576040519150601f19603f3d011682016040523d82523d6000602084013e614db6565b606091505b509150915081612f0d57612f0d815b805115614dd457805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610124565b50565b60008060408385031215614e2857600080fd5b50508035926020909101359150565b6001600160a01b0381168114614e1257600080fd5b8035614e5781614e37565b919050565b600060a08284031215614e6e57600080fd5b50919050565b60008083601f840112614e8657600080fd5b5081356001600160401b03811115614e9d57600080fd5b6020830191508360208260051b8501011115614eb857600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614ede57600080fd5b8935985060208a0135614ef081614e37565b9750614eff8b60408c01614e5c565b965060e08a01356001600160401b0380821115614f1b57600080fd5b614f278d838e01614e74565b90985096506101008c0135915080821115614f4157600080fd5b614f4d8d838e01614e74565b90965094506101208c0135915080821115614f6757600080fd5b50614f748c828d01614e74565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215614fa457600080fd5b8635955060208701359450604087013593506060870135614fc481614e37565b925060808701356001600160401b03811115614fdf57600080fd5b614feb89828a01614e74565b979a9699509497509295939492505050565b6000806000806000610100868803121561501657600080fd5b85359450602086013561502881614e37565b93506150378760408801614e5c565b925060e08601356001600160401b0381111561505257600080fd5b61505e88828901614e74565b969995985093965092949392505050565b60008060008060006080868803121561508757600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561505257600080fd5b60005b838110156150cd5781810151838201526020016150b5565b50506000910152565b600081518084526150ee8160208601602086016150b2565b601f01601f19169290920160200192915050565b60208152600061511560208301846150d6565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156151545761515461511c565b60405290565b60405161014081016001600160401b03811182821017156151545761515461511c565b604051601f8201601f191681016001600160401b03811182821017156151a5576151a561511c565b604052919050565b600060a082840312156151bf57600080fd5b6151c7615132565b90508135815260208201356151db81614e37565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561521f5761521f61511c565b5060051b60200190565b600082601f83011261523a57600080fd5b8135602061524f61524a83615206565b61517d565b82815260059290921b8401810191818101908684111561526e57600080fd5b8286015b848110156152895780358352918301918301615272565b509695505050505050565b600082601f8301126152a557600080fd5b813560206152b561524a83615206565b82815260059290921b840181019181810190868411156152d457600080fd5b8286015b848110156152895780356152eb81614e37565b83529183019183016152d8565b600082601f83011261530957600080fd5b81356001600160401b038111156153225761532261511c565b615335601f8201601f191660200161517d565b81815284602083860101111561534a57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261537857600080fd5b8135602061538861524a83615206565b82815260059290921b840181019181810190868411156153a757600080fd5b8286015b848110156152895780356001600160401b038111156153ca5760008081fd5b6153d88986838b01016152f8565b8452509183019183016153ab565b60006153f461524a84615206565b838152905060208101600584901b830185101561541057600080fd5b825b8460051b84018110156125d4576001600160401b03813581101561543557600080fd5b8135850187601f82011261544857600080fd5b61545561524a8235615206565b81358082526020808301929160051b8401018a81111561547457600080fd5b602084015b8181101561556957858135111561548f57600080fd5b8035850160a0818e03601f190112156154a757600080fd5b6154af615132565b87602083013511156154c057600080fd5b6154d28e602080850135850101615294565b815287604083013511156154e557600080fd5b6154f88e60206040850135850101615294565b6020820152876060830135111561550e57600080fd5b6155218e60206060850135850101615229565b6040820152876080830135111561553757600080fd5b61554a8e60206080850135850101615367565b606082015260a091909101356080820152845260209384019301615479565b505085525050602092830192919091019050615412565b600082601f83011261559157600080fd5b615115838335602085016153e6565b8015158114614e1257600080fd5b8035614e57816155a0565b600082601f8301126155ca57600080fd5b813560206155da61524a83615206565b82815260059290921b840181019181810190868411156155f957600080fd5b8286015b848110156152895780356001600160401b038082111561561d5760008081fd5b90880190610140828b03601f19018113156156385760008081fd5b61564061515a565b8784013581526040615653818601614e4c565b898301526060615664818701614e4c565b8284015260809150615677828701614e4c565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206156b98187016155ae565b838301529285013592848411156156d257600091508182fd5b6156e08e8b868901016152f8565b908301525086525050509183019183016155fd565b600080600080600080610140878903121561570f57600080fd5b61571988886151ad565b955060a08701356001600160401b038082111561573557600080fd5b6157418a838b01615229565b965060c089013591508082111561575757600080fd5b6157638a838b01615580565b955060e089013591508082111561577957600080fd5b5061578689828a016155b9565b93505061010087013561579881614e37565b91506101208701356157a981614e37565b809150509295509295509295565b6001600160a01b0391909116815260200190565b600080600060e084860312156157e057600080fd5b8335925060208401356157f281614e37565b91506158018560408601614e5c565b90509250925092565b600080600080600080600080610120898b03121561582757600080fd5b883597506158388a60208b01614e5c565b965060c08901356001600160401b038082111561585457600080fd5b6158608c838d01614e74565b909850965060e08b013591508082111561587957600080fd5b6158858c838d01614e74565b90965094506101008b013591508082111561589f57600080fd5b506158ac8b828c01614e74565b999c989b5096995094979396929594505050565b600080600080600061012086880312156158d957600080fd5b6158e387876151ad565b945060a08601356001600160401b03808211156158ff57600080fd5b61590b89838a01615229565b955060c088013591508082111561592157600080fd5b61592d89838a01615580565b945060e088013591508082111561594357600080fd5b50615950888289016155b9565b92505061010086013561596281614e37565b809150509295509295909350565b60008060008060e0858703121561598657600080fd5b843593506159978660208701614e5c565b925060c08501356001600160401b038111156159b257600080fd5b6159be87828801614e74565b95989497509550505050565b600080600080606085870312156159e057600080fd5b843593506020850135925060408501356001600160401b0380821115615a0557600080fd5b818701915087601f830112615a1957600080fd5b813581811115615a2857600080fd5b886020828501011115615a3a57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215615a8357600080fd5b61511583836151ad565b60006151153684846153e6565b634e487b7160e01b600052603260045260246000fd5b60008235609e19833603018112615ac657600080fd5b9190910192915050565b600060208284031215615ae257600080fd5b813561511581614e37565b634e487b7160e01b600052601160045260246000fd5b81810381811115615b1657615b16615aed565b92915050565b602080825260169082015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060208284031215615b9257600080fd5b5051919050565b8082028115828204841417615b1657615b16615aed565b600082615bcd57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601c908201527b1d1c985b9cd9995c881b985d1a5d99481d1bdad95b8819985a5b195960221b604082015260600190565b6020808252601c908201527b0706f6f6c73206d7573742062652067726561746572207468616e20360241b604082015260600190565b600060208284031215615c7a57600080fd5b815161511581614e37565b6020808252601390820152720ccd2e4e6e8a8ded6cadc40dad2e6dac2e8c6d606b1b604082015260600190565b80820180821115615b1657615b16615aed565b600060208284031215615cd757600080fd5b8151615115816155a0565b6000808335601e19843603018112615cf957600080fd5b8301803591506001600160401b03821115615d1357600080fd5b6020019150600581901b3603821315614eb857600080fd5b6000808335601e19843603018112615d4257600080fd5b8301803591506001600160401b03821115615d5c57600080fd5b602001915036819003821315614eb857600080fd5b600060018201615d8357615d83615aed565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090610f16908301846150d6565b60008351615dc88184602088016150b2565b9190910191825250602001919050565b60008251615ac68184602087016150b256fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f828bc75b2b63dac9dd84642acce1bb88e8425311bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba2646970667358221220e067d93b1381e60b5dfd57b5f86965c65f11e02312c777b0380ccdba9f3d7d4864736f6c63430008110033