1 tx
5 calls
constructor
constructor(address _feeSigner, address _feeCollector, uint16 _twapInterval)
functions
DEFAULT
viewfunction DEFAULT() view returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
feeCollector
viewfunction feeCollector() view returns (address)
feeConfigs
viewfunction feeConfigs(string) view returns (uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
feeSigner
viewfunction feeSigner() view returns (address)
getFeeConfig
viewfunction getFeeConfig(string feeType) view returns (tuple)
getUserLocks
viewfunction getUserLocks(address user) view returns (address[])
owner
viewfunction owner() view returns (address)
revokedSignatures
viewfunction revokedSignatures(bytes32) view returns (bool)
twapInterval
viewfunction twapInterval() view returns (uint16)
userLocks
viewfunction userLocks(address, uint256) view returns (address)
createLock
payablefunction createLock(address token, address pool, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, string feeType) payable returns (address lockAddress)
createLock
payablefunction createLock(address token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, string feeType) payable returns (address lockAddress)
createLockWithCustomFee
payablefunction createLockWithCustomFee(address token, address pool, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, tuple customFee, bytes signature) payable returns (address lockAddress)
createLockWithCustomFee
payablefunction createLockWithCustomFee(address token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, tuple customFee, bytes signature) payable returns (address lockAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
revokeCustomFee
nonpayablefunction revokeCustomFee(tuple customFee)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setFeeConfig
nonpayablefunction setFeeConfig(string feeType, uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
setFeeSigner
nonpayablefunction setFeeSigner(address _feeSigner)
setTwapInterval
nonpayablefunction setTwapInterval(uint16 _twapInterval)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CustomFeeRevoked
event CustomFeeRevoked(address indexed user, uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
EIP712DomainChanged
event EIP712DomainChanged()
FeeCollected
event FeeCollected(address indexed user, address feeTokenAddress, uint256 feeTokenAmount)
LockCreated
event LockCreated(address indexed lockAddress, address indexed token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, address owner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ETHTransferFailed
error ETHTransferFailed()
InsufficientFeePayment
error InsufficientFeePayment()
InvalidAddress
error InvalidAddress()
InvalidPoolPath
error InvalidPoolPath()
InvalidShortString
error InvalidShortString()
InvalidSignature
error InvalidSignature()
InvalidUnlockTime
error InvalidUnlockTime()
NotCustomFeeUser
error NotCustomFeeUser()
NotNeedETH
error NotNeedETH()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101606040523480156200001257600080fd5b50604051620058e1380380620058e1833981016040819052620000359162000378565b604080518082018252600b81526a4c6f636b466163746f727960a81b602080830191909152825180840190935260018352603160f81b908301529033806200009857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000a3816200028f565b50620000b1826001620002df565b61012052620000c2816002620002df565b61014052815160208084019190912060e052815190820120610100524660a0526200015060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038316620001815760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216620001a95760405163e6c4247b60e01b815260040160405180910390fd5b60048054600380546001600160a01b0319166001600160a01b038681169190911790915585166001600160b01b031990911617600160a01b61ffff84160217905560408051606081018252600a8152600060208083019190915267016345785d8a000082840152825180840184526007815266191959985d5b1d60ca1b9181019190915291519091600591620002409190620003f2565b908152604080516020928190038301902083518155918301516001830180546001600160a01b0319166001600160a01b03909216919091179055919091015160029091015550620005db915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620002ff57620002f78362000318565b905062000312565b816200030c8482620004b5565b5060ff90505b92915050565b600080829050601f8151111562000346578260405163305a27a960e01b81526004016200008f919062000581565b80516200035382620005b6565b179392505050565b80516001600160a01b03811681146200037357600080fd5b919050565b6000806000606084860312156200038e57600080fd5b62000399846200035b565b9250620003a9602085016200035b565b9150604084015161ffff81168114620003c157600080fd5b809150509250925092565b60005b83811015620003e9578181015183820152602001620003cf565b50506000910152565b6000825162000406818460208701620003cc565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200043b57607f821691505b6020821081036200045c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004b057600081815260208120601f850160051c810160208610156200048b5750805b601f850160051c820191505b81811015620004ac5782815560010162000497565b5050505b505050565b81516001600160401b03811115620004d157620004d162000410565b620004e981620004e2845462000426565b8462000462565b602080601f831160018114620005215760008415620005085750858301515b600019600386901b1c1916600185901b178555620004ac565b600085815260208120601f198616915b82811015620005525788860151825594840194600190910190840162000531565b5085821015620005715787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005a2816040850160208701620003cc565b601f01601f19169190910160400192915050565b805160208083015191908110156200045c5760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516152ab620006366000396000610f4101526000610f0d015260006113560152600061132e01526000611286015260006112b1015260006112dc01526152ab6000f3fe6080604052600436106200014f5760003560e01c80637e1aa17811620000b9578063b74625bf1162000078578063b74625bf1462000488578063c415b95c146200049f578063c7edb6b014620004c1578063dd55d20214620004d8578063deafa92614620004ef578063f2fde38b146200051457600080fd5b80637e1aa17814620003cc57806384b0196e14620003f15780638da5cb5b146200041e578063a42dce80146200043e578063aa33fedb146200046357600080fd5b8063204a12801162000112578063204a128014620002bb57806323a35de914620002d257806331ac15cf14620003065780633c1d5df0146200032b5780635af7f2391462000363578063715018a614620003b457600080fd5b8063075693391462000154578063095bf90f14620001935780630a25dea9146200020b5780630e1edfdf146200024f5780631ec4036e1462000294575b600080fd5b3480156200016157600080fd5b5060045462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001a057600080fd5b50620001e7620001b2366004620017ac565b805160208183018101805160058252928201919093012091528054600182015460029092015490916001600160a01b03169083565b604080519384526001600160a01b039092166020840152908201526060016200018a565b3480156200021857600080fd5b506200024060405180604001604052806007815260200166191959985d5b1d60ca1b81525081565b6040516200018a919062001841565b3480156200025c57600080fd5b50620002836200026e3660046200185d565b60066020526000908152604090205460ff1681565b60405190151581526020016200018a565b348015620002a157600080fd5b50620002b9620002b33660046200190e565b62000539565b005b62000176620002cc3660046200192d565b620005e0565b348015620002df57600080fd5b50620002f7620002f1366004620019b8565b62000607565b6040516200018a919062001a1c565b3480156200031357600080fd5b50620002b96200032536600462001a31565b6200067f565b3480156200033857600080fd5b506004546200034f90600160a01b900461ffff1681565b60405161ffff90911681526020016200018a565b3480156200037057600080fd5b506200038862000382366004620017ac565b620006ab565b60408051825181526020808401516001600160a01b03169082015291810151908201526060016200018a565b348015620003c157600080fd5b50620002b96200072a565b348015620003d957600080fd5b50620002b9620003eb366004620019b8565b62000742565b348015620003fe57600080fd5b506200040962000796565b6040516200018a979695949392919062001a57565b3480156200042b57600080fd5b506000546001600160a01b031662000176565b3480156200044b57600080fd5b50620002b96200045d366004620019b8565b620007e0565b3480156200047057600080fd5b50620001766200048236600462001af3565b62000834565b620001766200049936600462001b20565b6200086d565b348015620004ac57600080fd5b5060035462000176906001600160a01b031681565b62000176620004d236600462001c49565b62000896565b62000176620004e936600462001cf3565b62000b1e565b348015620004fc57600080fd5b50620002b96200050e36600462001d88565b62000cc6565b3480156200052157600080fd5b50620002b962000533366004620019b8565b62000d51565b6200054362000d99565b6000620005508262000dc8565b600081815260066020908152604091829020805460ff1916600117905584519085015185830151606087015193519495506001600160a01b03909216937f64116023a6e4de0fdb9c83f1396d968b341777d268a235bb9c2f6a64558e026393620005d493919283526001600160a01b03919091166020830152604082015260600190565b60405180910390a25050565b6000620005fc87620005f28862000e5a565b8787878762000b1e565b979650505050505050565b6001600160a01b0381166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156200067357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000654575b50505050509050919050565b6200068962000d99565b6004805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b620006d960405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b600582604051620006eb919062001ded565b9081526040805191829003602090810183206060840183528054845260018101546001600160a01b031691840191909152600201549082015292915050565b6200073462000d99565b62000740600062000eb5565b565b6200074c62000d99565b6001600160a01b038116620007745760405163e6c4247b60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600060608060008060006060620007ac62000f05565b620007b662000f39565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b620007ea62000d99565b6001600160a01b038116620008125760405163e6c4247b60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600760205281600052604060002081815481106200085157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60006200088a886200087f8962000e5a565b888888888862000896565b98975050505050505050565b60006001600160a01b038816620008c05760405163e6c4247b60e01b815260040160405180910390fd5b8651600003620008e357604051633b88ff5b60e21b815260040160405180910390fd5b42851162000904576040516352aba6d360e11b815260040160405180910390fd5b82516001600160a01b031633146200092f57604051631b8c5be960e11b815260040160405180910390fd5b60006200093c8462000dc8565b60008181526006602052604090205490915060ff1615620009705760405163e6c4247b60e01b815260040160405180910390fd5b60006200097d8262000f68565b905060006200098d828662000f9e565b6004549091506001600160a01b03808316911614620009bf57604051638baa579f60e01b815260040160405180910390fd5b600060405180606001604052808860200151815260200188604001516001600160a01b0316815260200188606001518152509050620009fe8162000fcc565b60008c8c8c8c8c33308e6020015160405162000a1a90620016dd565b62000a2d98979695949392919062001e0b565b604051809103906000f08015801562000a4a573d6000803e3d6000fd5b50905060076000336001600160a01b03166001600160a01b03168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055508c6001600160a01b0316816001600160a01b03167fbb9c7f6cdae609e613b2334309ae045d208b06b3c10b432c02de12f900fca3e38e8e8e8e3360405162000b0695949392919062001e67565b60405180910390a39c9b505050505050505050505050565b60006001600160a01b03871662000b485760405163e6c4247b60e01b815260040160405180910390fd5b855160000362000b6b57604051633b88ff5b60e21b815260040160405180910390fd5b42841162000b8c576040516352aba6d360e11b815260040160405180910390fd5b600060058360405162000ba0919062001ded565b9081526040805191829003602090810183206060840183528054845260018101546001600160a01b0316918401919091526002015490820152905062000be68162000fcc565b600088888888883330886000015160405162000c0290620016dd565b62000c1598979695949392919062001e0b565b604051809103906000f08015801562000c32573d6000803e3d6000fd5b503360008181526007602090815260408083208054600181018255908452919092200180546001600160a01b0319166001600160a01b0385811691821790925591519394508c169290917fbb9c7f6cdae609e613b2334309ae045d208b06b3c10b432c02de12f900fca3e39162000cb2918d918d918d918d919062001e67565b60405180910390a398975050505050505050565b62000cd062000d99565b6040518060600160405280848152602001836001600160a01b031681526020018281525060058560405162000d06919062001ded565b908152604080516020928190038301902083518155918301516001830180546001600160a01b0319166001600160a01b03909216919091179055919091015160029091015550505050565b62000d5b62000d99565b6001600160a01b03811662000d8b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000d968162000eb5565b50565b6000546001600160a01b03163314620007405760405163118cdaa760e01b815233600482015260240162000d82565b60007fc634b811962d68c8585e67f6f81126d6e16bfd358af4d38b4aefa726291718a4826000015183602001518460400151856060015160405160200162000e3d9594939291909485526001600160a01b03938416602086015260408501929092529091166060830152608082015260a00190565b604051602081830303815290604052805190602001209050919050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811062000e975762000e9762001eae565b6001600160a01b039092166020928302919091019091015292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606062000f347f00000000000000000000000000000000000000000000000000000000000000006001620011c1565b905090565b606062000f347f00000000000000000000000000000000000000000000000000000000000000006002620011c1565b600062000f9862000f7862001279565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b60008060008062000fb08686620013a7565b92509250925062000fc28282620013f8565b5090949350505050565b604081015115620011675760208101516001600160a01b03166200111d578060400151341015620010105760405163481fdfa360e11b815260040160405180910390fd5b60035460408281015190516000926001600160a01b031691908381818185875af1925050503d806000811462001063576040519150601f19603f3d011682016040523d82523d6000602084013e62001068565b606091505b50509050806200108b5760405163b12d13eb60e01b815260040160405180910390fd5b8160400151341115620011165760408201516000903390620010ae903462001ec4565b604051600081818185875af1925050503d8060008114620010ec576040519150601f19603f3d011682016040523d82523d6000602084013e620010f1565b606091505b5050905080620011145760405163b12d13eb60e01b815260040160405180910390fd5b505b5062001167565b34156200113d57604051635bdd050f60e11b815260040160405180910390fd5b6003546040820151602083015162001167926001600160a01b0391821692339290911690620014c7565b6020810151604080830151905133927ff228de527fc1b9843baac03b9a04565473a263375950e63435d4138464386f4692620011b6926001600160a01b03929092168252602082015260400190565b60405180910390a250565b606060ff8314620011df57620011d78362001529565b905062000f98565b818054620011ed9062001ee6565b80601f01602080910402602001604051908101604052809291908181526020018280546200121b9062001ee6565b80156200126c5780601f1062001240576101008083540402835291602001916200126c565b820191906000526020600020905b8154815290600101906020018083116200124e57829003601f168201915b5050505050905062000f98565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015620012d357507f000000000000000000000000000000000000000000000000000000000000000046145b15620012fe57507f000000000000000000000000000000000000000000000000000000000000000090565b62000f34604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103620013e55760208401516040850151606086015160001a620013d6888285856200156a565b955095509550505050620013f1565b50508151600091506002905b9250925092565b60008260038111156200140f576200140f62001f22565b0362001419575050565b600182600381111562001430576200143062001f22565b036200144f5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111562001466576200146662001f22565b03620014895760405163fce698f760e01b81526004810182905260240162000d82565b6003826003811115620014a057620014a062001f22565b03620014c3576040516335e2f38360e21b81526004810182905260240162000d82565b5050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052620015239085906200163e565b50505050565b606060006200153883620016b4565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115620015a7575060009150600390508262001634565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015620015fc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200162a5750600092506001915082905062001634565b9250600091508190505b9450945094915050565b600080602060008451602086016000885af18062001662576040513d6000823e3d81fd5b50506000513d915081156200167c57806001141562001689565b6001600160a01b0384163b155b156200152357604051635274afe760e01b81526001600160a01b038516600482015260240162000d82565b600060ff8216601f81111562000f9857604051632cd44ac360e21b815260040160405180910390fd5b61333d8062001f3983390190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200172d576200172d620016eb565b604052919050565b600082601f8301126200174757600080fd5b813567ffffffffffffffff811115620017645762001764620016eb565b62001779601f8201601f191660200162001701565b8181528460208386010111156200178f57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215620017bf57600080fd5b813567ffffffffffffffff811115620017d757600080fd5b620017e58482850162001735565b949350505050565b60005b838110156200180a578181015183820152602001620017f0565b50506000910152565b600081518084526200182d816020860160208601620017ed565b601f01601f19169290920160200192915050565b60208152600062001856602083018462001813565b9392505050565b6000602082840312156200187057600080fd5b5035919050565b80356001600160a01b03811681146200188f57600080fd5b919050565b600060808284031215620018a757600080fd5b6040516080810181811067ffffffffffffffff82111715620018cd57620018cd620016eb565b604052905080620018de8362001877565b815260208301356020820152620018f86040840162001877565b6040820152606083013560608201525092915050565b6000608082840312156200192157600080fd5b62001856838362001894565b60008060008060008060c087890312156200194757600080fd5b620019528762001877565b9550620019626020880162001877565b9450620019726040880162001877565b9350606087013592506080870135915060a087013567ffffffffffffffff8111156200199d57600080fd5b620019ab89828a0162001735565b9150509295509295509295565b600060208284031215620019cb57600080fd5b620018568262001877565b600081518084526020808501945080840160005b8381101562001a115781516001600160a01b031687529582019590820190600101620019ea565b509495945050505050565b602081526000620018566020830184620019d6565b60006020828403121562001a4457600080fd5b813561ffff811681146200185657600080fd5b60ff60f81b881681526000602060e08184015262001a7960e084018a62001813565b838103604085015262001a8d818a62001813565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101562001ae15783518352928401929184019160010162001ac3565b50909c9b505050505050505050505050565b6000806040838503121562001b0757600080fd5b62001b128362001877565b946020939093013593505050565b6000806000806000806000610140888a03121562001b3d57600080fd5b62001b488862001877565b965062001b586020890162001877565b955062001b686040890162001877565b9450606088013593506080880135925062001b878960a08a0162001894565b915061012088013567ffffffffffffffff81111562001ba557600080fd5b62001bb38a828b0162001735565b91505092959891949750929550565b600082601f83011262001bd457600080fd5b8135602067ffffffffffffffff82111562001bf35762001bf3620016eb565b8160051b62001c0482820162001701565b928352848101820192828101908785111562001c1f57600080fd5b83870192505b84831015620005fc5762001c398362001877565b8252918301919083019062001c25565b6000806000806000806000610140888a03121562001c6657600080fd5b62001c718862001877565b9650602088013567ffffffffffffffff8082111562001c8f57600080fd5b62001c9d8b838c0162001bc2565b975062001cad60408b0162001877565b965060608a0135955060808a0135945062001ccc8b60a08c0162001894565b93506101208a013591508082111562001ce457600080fd5b5062001bb38a828b0162001735565b60008060008060008060c0878903121562001d0d57600080fd5b62001d188762001877565b9550602087013567ffffffffffffffff8082111562001d3657600080fd5b62001d448a838b0162001bc2565b965062001d5460408a0162001877565b9550606089013594506080890135935060a089013591508082111562001d7957600080fd5b50620019ab89828a0162001735565b6000806000806080858703121562001d9f57600080fd5b843567ffffffffffffffff81111562001db757600080fd5b62001dc58782880162001735565b9450506020850135925062001ddd6040860162001877565b9396929550929360600135925050565b6000825162001e01818460208701620017ed565b9190910192915050565b6001600160a01b0389811682526101006020830181905260009162001e338483018c620019d6565b998116604085015260608401989098525050608081019490945291841660a084015290921660c082015260e0015292915050565b60a08152600062001e7c60a0830188620019d6565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b634e487b7160e01b600052603260045260246000fd5b8181038181111562000f9857634e487b7160e01b600052601160045260246000fd5b600181811c9082168062001efb57607f821691505b60208210810362001f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fdfe6101406040523480156200001257600080fd5b506040516200333d3803806200333d833981016040819052620000359162001293565b826001600160a01b0381166200006657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000071816200060d565b506001805586516000036200009957604051633b88ff5b60e21b815260040160405180910390fd5b6001600160a01b03888116608052600380546001600160a01b03191688831617905560a086905260c08590528216610100526101208190528760005b8851811015620005ef576000898281518110620000f657620000f6620013ab565b6020908102919091018101516002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560408051630dfe168160e01b8152905193955091939092630dfe16819260048082019392918290030181865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b49190620013c1565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021d9190620013c1565b9050816001600160a01b0316856001600160a01b03160362000242578094506200027e565b806001600160a01b0316856001600160a01b03160362000265578194506200027e565b604051633b88ff5b60e21b815260040160405180910390fd5b6040518060a00160405280846001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b03168152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b9190620013f3565b60ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003889190620013f3565b60ff9081169091526001600160a01b038086166000818152600460208181526040808420885181549088166001600160a01b0319918216178255928901516001820180549189169190941617909255878101516002909201805460608a01516080909a01518916600160a81b0260ff60a81b199a909916600160a01b026001600160a81b031990911693909716929092179590951796909616949094179094558151633850c7bd60e01b815291519092633850c7bd928082019260e09290918290030181865afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062001424565b5050945050505050610100516001600160a01b0316633c1d5df06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f79190620014cc565b61ffff168161ffff161015620005d557836001600160a01b03166332148f67610100516001600160a01b0316633c1d5df06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057e9190620014cc565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b158015620005bb57600080fd5b505af1158015620005d0573d6000803e3d6000fd5b505050505b505050508080620005e69062001500565b915050620000d5565b50620005fa6200065d565b60e052506200196f975050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b608051600090670de0b6b3a764000090825b6002548110156200078b57600060028281548110620006925762000692620013ab565b60009182526020822001546001600160a01b03169150620006b4828562000793565b90506000620006c483836200083a565b9050670de0b6b3a7640000620006db82886200151c565b620006e791906200154c565b6001600160a01b03808516600090815260046020908152604091829020825160a081018452815485168152600182015485169281018390526002909101548085169382019390935260ff600160a01b840481166060830152600160a81b9093049092166080830152929850919087160362000769578060400151955062000771565b806020015195505b505050508080620007829062001500565b9150506200066f565b509092915050565b6001600160a01b038083166000908152600460209081526040808320815160a081018352815486168152600182015486169381018490526002909101548086169282019290925260ff600160a01b830481166060830152600160a81b90920490911660808201529192841690036200081057600191505062000834565b826001600160a01b031681604001516001600160a01b031603620002655760009150505b92915050565b6001600160a01b038083166000908152600460208181526040808420815160a08101835281548716815260018201548716818501526002909101548087168284015260ff600160a01b820481166060840152600160a81b9091041660808201526101005182516303c1d5df60e41b815292519596919587959190921693633c1d5df093808301939192908290030181865afa158015620008de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009049190620014cc565b60408051600280825260608201835292935060009290916020830190803683370190505090508161ffff1681600081518110620009455762000945620013ab565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110620009775762000977620013ab565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0388169063883bdbfd90620009bd90859060040162001563565b600060405180830381865afa158015620009db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a05919081019062001627565b50905060008160008151811062000a205762000a20620013ab565b60200260200101518260018151811062000a3e5762000a3e620013ab565b602002602001015162000a529190620016ff565b9050600062000a6661ffff8616836200172f565b905060008260060b12801562000a8d575062000a87600186900b8362001773565b60060b15155b1562000aa3578062000a9f8162001798565b9150505b600062000ab08262000bef565b9050600062000acb6001600160a01b03831680600162001051565b9050600160c01b600062000ae983670de0b6b3a76400008462001051565b90508b62000b8e5762000b0e6ec097ce7bc90715b34b9f100000000060018362001051565b9050896060015160ff168a6080015160ff161062000b5e5762000b56818b606001518c6080015162000b419190620017be565b62000b4e90600a620018d7565b600162001051565b905062000bdf565b62000b568160018c608001518d6060015162000b7b9190620017be565b62000b8890600a620018d7565b62001051565b896060015160ff168a6080015160ff161062000bc15762000b568160018c606001518d6080015162000b7b9190620017be565b62000bdc818b608001518c6060015162000b419190620017be565b90505b9c9b505050505050505050505050565b60008060008360020b1262000c08578260020b62000c17565b8260020b62000c1790620018e8565b905062000c28620d89e71962001907565b60020b81111562000c605760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016200005d565b60008160011660000362000c7957600160801b62000c8b565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161562000cc357608062000cbe826ffff97272373d413259a46990580e213a6200151c565b901c90505b600482161562000cf057608062000ceb826ffff2e50f5f656932ef12357cf3c7fdcc6200151c565b901c90505b600882161562000d1d57608062000d18826fffe5caca7e10e4e61c3624eaa0941cd06200151c565b901c90505b601082161562000d4a57608062000d45826fffcb9843d60f6159c9db58835c9266446200151c565b901c90505b602082161562000d7757608062000d72826fff973b41fa98c081472e6896dfb254c06200151c565b901c90505b604082161562000da457608062000d9f826fff2ea16466c96a3843ec78b326b528616200151c565b901c90505b608082161562000dd157608062000dcc826ffe5dee046a99a2a811c461f1969c30536200151c565b901c90505b61010082161562000dff57608062000dfa826ffcbe86c7900a88aedcffc83b479aa3a46200151c565b901c90505b61020082161562000e2d57608062000e28826ff987a7253ac413176f2b074cf7815e546200151c565b901c90505b61040082161562000e5b57608062000e56826ff3392b0822b70005940c7a398e4b70f36200151c565b901c90505b61080082161562000e8957608062000e84826fe7159475a2c29b7443b29c7fa6e889d96200151c565b901c90505b61100082161562000eb757608062000eb2826fd097f3bdfd2022b8845ad8f792aa58256200151c565b901c90505b61200082161562000ee557608062000ee0826fa9f746462d870fdf8a65dc1f90e061e56200151c565b901c90505b61400082161562000f1357608062000f0e826f70d869a156d2a1b890bb3df62baf32f76200151c565b901c90505b61800082161562000f4157608062000f3c826f31be135f97d08fd981231505542fcfa66200151c565b901c90505b6201000082161562000f7057608062000f6b826f09aa508b5b7a84e1c677de54f3e99bc96200151c565b901c90505b6202000082161562000f9e57608062000f99826e5d6af8dedb81196699c329225ee6046200151c565b901c90505b6204000082161562000fcb57608062000fc6826d2216e584f5fa1ea926041bedfe986200151c565b901c90505b6208000082161562000ff657608062000ff1826b048a170391f7dc42444e8fa26200151c565b901c90505b60008460020b1315620010145762001011816000196200154c565b90505b62001025640100000000826200192c565b156200103357600162001036565b60005b620010499060ff16602083901c62001943565b949350505050565b60008080600019858709858702925082811083820303915050806000036200108d57600084116200108157600080fd5b508290049050620011f2565b8084116200109a57600080fd5b600084868809808403938111909203919050600085620010ba81620018e8565b16958690049593849004936000819003046001019050620010dc81846200151c565b909317926000620010ef8760036200151c565b60021890506200110081886200151c565b6200110d90600262001959565b6200111990826200151c565b90506200112781886200151c565b6200113490600262001959565b6200114090826200151c565b90506200114e81886200151c565b6200115b90600262001959565b6200116790826200151c565b90506200117581886200151c565b6200118290600262001959565b6200118e90826200151c565b90506200119c81886200151c565b620011a990600262001959565b620011b590826200151c565b9050620011c381886200151c565b620011d090600262001959565b620011dc90826200151c565b9050620011ea81866200151c565b955050505050505b9392505050565b6001600160a01b03811681146200120f57600080fd5b50565b80516200121f81620011f9565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562001265576200126562001224565b604052919050565b60006001600160401b0382111562001289576200128962001224565b5060051b60200190565b600080600080600080600080610100898b031215620012b157600080fd5b8851620012be81620011f9565b60208a810151919950906001600160401b03811115620012dd57600080fd5b8a01601f81018c13620012ef57600080fd5b80516200130662001300826200126d565b6200123a565b81815260059190911b8201830190838101908e8311156200132657600080fd5b928401925b82841015620013515783516200134181620011f9565b825292840192908401906200132b565b809b5050505050506200136760408a0162001212565b955060608901519450608089015193506200138560a08a0162001212565b92506200139560c08a0162001212565b915060e089015190509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620013d457600080fd5b8151620011f281620011f9565b805160ff811681146200121f57600080fd5b6000602082840312156200140657600080fd5b620011f282620013e1565b805161ffff811681146200121f57600080fd5b600080600080600080600060e0888a0312156200144057600080fd5b87516200144d81620011f9565b8097505060208801518060020b81146200146657600080fd5b9550620014766040890162001411565b9450620014866060890162001411565b9350620014966080890162001411565b9250620014a660a08901620013e1565b915060c08801518015158114620014bc57600080fd5b8091505092959891949750929550565b600060208284031215620014df57600080fd5b620011f28262001411565b634e487b7160e01b600052601160045260246000fd5b600060018201620015155762001515620014ea565b5060010190565b8082028115828204841417620008345762000834620014ea565b634e487b7160e01b600052601260045260246000fd5b6000826200155e576200155e62001536565b500490565b6020808252825182820181905260009190848201906040850190845b81811015620015a357835163ffffffff16835292840192918401916001016200157f565b50909695505050505050565b600082601f830112620015c157600080fd5b81516020620015d462001300836200126d565b82815260059290921b84018101918181019086841115620015f457600080fd5b8286015b848110156200161c5780516200160e81620011f9565b8352918301918301620015f8565b509695505050505050565b600080604083850312156200163b57600080fd5b82516001600160401b03808211156200165357600080fd5b818501915085601f8301126200166857600080fd5b815160206200167b62001300836200126d565b82815260059290921b840181019181810190898411156200169b57600080fd5b948201945b83861015620016cc5785518060060b8114620016bc5760008081fd5b82529482019490820190620016a0565b91880151919650909350505080821115620016e657600080fd5b50620016f585828601620015af565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715620008345762000834620014ea565b60008160060b8360060b8062001749576200174962001536565b667fffffffffffff198214600019821416156200176a576200176a620014ea565b90059392505050565b60008260060b8062001789576200178962001536565b808360060b0791505092915050565b60008160020b627fffff198103620017b457620017b4620014ea565b6000190192915050565b60ff8281168282160390811115620008345762000834620014ea565b600181815b808511156200181b578160001904821115620017ff57620017ff620014ea565b808516156200180d57918102915b93841c9390800290620017df565b509250929050565b600082620018345750600162000834565b81620018435750600062000834565b81600181146200185c5760028114620018675762001887565b600191505062000834565b60ff8411156200187b576200187b620014ea565b50506001821b62000834565b5060208310610133831016604e8410600b8410161715620018ac575081810a62000834565b620018b88383620017da565b8060001904821115620018cf57620018cf620014ea565b029392505050565b6000620011f260ff84168362001823565b6000600160ff1b8201620019005762001900620014ea565b5060000390565b60008160020b627fffff198103620019235762001923620014ea565b60000392915050565b6000826200193e576200193e62001536565b500690565b80820180821115620008345762000834620014ea565b81810381811115620008345762000834620014ea565b60805160a05160c05160e051610100516101205161193862001a05600039600081816102cb015261045801526000818161016b015281816104a20152610a7f015260008181610144015261065801526000818161010a01526106370152600081816101aa01526105f801526000818161030d015281816103b80152818161052c0152818161057201526106d301526119386000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638380edb711610097578063e941fa7811610066578063e941fa78146102c6578063eb91d37e146102ed578063f2fde38b146102f5578063fc0c546a1461030857600080fd5b80638380edb7146102815780638da5cb5b14610299578063ac4afa38146102aa578063e1f1c4a7146102bd57600080fd5b80633ccfd60b116100d35780633ccfd60b146101cc57806342340a56146101d6578063570ca73514610266578063715018a61461027957600080fd5b806309503011146101055780631d0806ae1461013f5780631db9be1b14610166578063251c1aa3146101a5575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61018d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610136565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101d461032f565b005b6102286101e43660046113c3565b6004602052600090815260409020805460018201546002909201546001600160a01b039182169282169181169060ff600160a01b8204811691600160a81b90041685565b604080516001600160a01b0396871681529486166020860152929094169183019190915260ff9081166060830152909116608082015260a001610136565b60035461018d906001600160a01b031681565b6101d46105e2565b6102896105f4565b6040519015158152602001610136565b6000546001600160a01b031661018d565b61018d6102b83660046113e0565b61069c565b61012c61271081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c6106c6565b6101d46103033660046113c3565b610807565b61018d7f000000000000000000000000000000000000000000000000000000000000000081565b61033761084a565b6000546001600160a01b0316331480159061035d57506003546001600160a01b03163314155b1561037b5760405163e6c4247b60e01b815260040160405180910390fd5b6103836105f4565b6103a05760405163fa68006560e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b91906113f9565b90508060000361044e57604051631e9acf1760e31b815260040160405180910390fd5b600061271061047d7f000000000000000000000000000000000000000000000000000000000000000084611428565b6104879190611455565b905060006104958284611469565b90508115610553576105537f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c415b95c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610522919061147c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169084610874565b6105996105686000546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083610874565b604080518281526020810184905233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a25050506105e060018055565b565b6105ea6108cb565b6105e060006108f8565b60007f000000000000000000000000000000000000000000000000000000000000000042106106235750600190565b600061062d6106c6565b905061271061067c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611428565b6106869190611455565b811061069457600191505090565b600091505090565b600281815481106106ac57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000825b6002548110156107ff5760006002828154811061071357610713611499565b60009182526020822001546001600160a01b031691506107338285610948565b905060006107418383610a09565b9050670de0b6b3a76400006107568288611428565b6107609190611455565b6001600160a01b03808516600090815260046020908152604091829020825160a081018452815485168152600182015485169281018390526002909101548085169382019390935260ff600160a01b840481166060830152600160a81b909304909216608083015292985091908716036107e057806040015195506107e8565b806020015195505b5050505080806107f7906114af565b9150506106f4565b509092915050565b61080f6108cb565b6001600160a01b03811661083e57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610847816108f8565b50565b60026001540361086d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526108c6908490610d9f565b505050565b6000546001600160a01b031633146105e05760405163118cdaa760e01b8152336004820152602401610835565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038083166000908152600460209081526040808320815160a081018352815486168152600182015486169381018490526002909101548086169282019290925260ff600160a01b830481166060830152600160a81b90920490911660808201529192841690036109c3576001915050610a03565b826001600160a01b031681604001516001600160a01b0316036109ea576000915050610a03565b604051633b88ff5b60e21b815260040160405180910390fd5b92915050565b6001600160a01b038083166000908152600460208181526040808420815160a08101835281548716815260018201548716818501526002909101548087168284015260ff600160a01b820481166060840152600160a81b90910416608082015281516303c1d5df60e41b815291519495909486947f000000000000000000000000000000000000000000000000000000000000000090921693633c1d5df09380840193919291908290030181865afa158015610ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aed91906114c8565b60408051600280825260608201835292935060009290916020830190803683370190505090508161ffff1681600081518110610b2b57610b2b611499565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610b5a57610b5a611499565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0388169063883bdbfd90610b9e908590600401611502565b600060405180830381865afa158015610bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be39190810190611615565b509050600081600081518110610bfb57610bfb611499565b602002602001015182600181518110610c1657610c16611499565b6020026020010151610c2891906116e1565b90506000610c3a61ffff86168361170e565b905060008260060b128015610c5e5750610c58600186900b8361174c565b60060b15155b15610c715780610c6d8161176e565b9150505b6000610c7c82610e16565b90506000610c956001600160a01b038316806001611236565b9050600160c01b6000610cb183670de0b6b3a764000084611236565b90508b610d4557610cd36ec097ce7bc90715b34b9f1000000000600183611236565b9050896060015160ff168a6080015160ff1610610d1b57610d14818b606001518c60800151610d029190611791565b610d0d90600a61188e565b6001611236565b9050610d8f565b610d148160018c608001518d60600151610d359190611791565b610d4090600a61188e565b611236565b896060015160ff168a6080015160ff1610610d7457610d148160018c606001518d60800151610d359190611791565b610d8c818b608001518c60600151610d029190611791565b90505b9c9b505050505050505050505050565b600080602060008451602086016000885af180610dc2576040513d6000823e3d81fd5b50506000513d91508115610dda578060011415610de7565b6001600160a01b0384163b155b15610e1057604051635274afe760e01b81526001600160a01b0385166004820152602401610835565b50505050565b60008060008360020b12610e2d578260020b610e3a565b8260020b610e3a9061189d565b9050610e49620d89e7196118b9565b60020b811115610e7f5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610835565b600081600116600003610e9657600160801b610ea8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610ee7576080610ee2826ffff97272373d413259a46990580e213a611428565b901c90505b6004821615610f11576080610f0c826ffff2e50f5f656932ef12357cf3c7fdcc611428565b901c90505b6008821615610f3b576080610f36826fffe5caca7e10e4e61c3624eaa0941cd0611428565b901c90505b6010821615610f65576080610f60826fffcb9843d60f6159c9db58835c926644611428565b901c90505b6020821615610f8f576080610f8a826fff973b41fa98c081472e6896dfb254c0611428565b901c90505b6040821615610fb9576080610fb4826fff2ea16466c96a3843ec78b326b52861611428565b901c90505b6080821615610fe3576080610fde826ffe5dee046a99a2a811c461f1969c3053611428565b901c90505b61010082161561100e576080611009826ffcbe86c7900a88aedcffc83b479aa3a4611428565b901c90505b610200821615611039576080611034826ff987a7253ac413176f2b074cf7815e54611428565b901c90505b61040082161561106457608061105f826ff3392b0822b70005940c7a398e4b70f3611428565b901c90505b61080082161561108f57608061108a826fe7159475a2c29b7443b29c7fa6e889d9611428565b901c90505b6110008216156110ba5760806110b5826fd097f3bdfd2022b8845ad8f792aa5825611428565b901c90505b6120008216156110e55760806110e0826fa9f746462d870fdf8a65dc1f90e061e5611428565b901c90505b61400082161561111057608061110b826f70d869a156d2a1b890bb3df62baf32f7611428565b901c90505b61800082161561113b576080611136826f31be135f97d08fd981231505542fcfa6611428565b901c90505b62010000821615611167576080611162826f09aa508b5b7a84e1c677de54f3e99bc9611428565b901c90505b6202000082161561119257608061118d826e5d6af8dedb81196699c329225ee604611428565b901c90505b620400008216156111bc5760806111b7826d2216e584f5fa1ea926041bedfe98611428565b901c90505b620800008216156111e45760806111df826b048a170391f7dc42444e8fa2611428565b901c90505b60008460020b13156111ff576111fc81600019611455565b90505b61120e640100000000826118db565b1561121a57600161121d565b60005b61122e9060ff16602083901c6118ef565b949350505050565b600080806000198587098587029250828110838203039150508060000361126f576000841161126457600080fd5b5082900490506113a7565b80841161127b57600080fd5b6000848688098084039381119092039190506000856112998161189d565b169586900495938490049360008190030460010190506112b98184611428565b9093179260006112ca876003611428565b60021890506112d98188611428565b6112e4906002611469565b6112ee9082611428565b90506112fa8188611428565b611305906002611469565b61130f9082611428565b905061131b8188611428565b611326906002611469565b6113309082611428565b905061133c8188611428565b611347906002611469565b6113519082611428565b905061135d8188611428565b611368906002611469565b6113729082611428565b905061137e8188611428565b611389906002611469565b6113939082611428565b905061139f8186611428565b955050505050505b9392505050565b6001600160a01b038116811461084757600080fd5b6000602082840312156113d557600080fd5b81356113a7816113ae565b6000602082840312156113f257600080fd5b5035919050565b60006020828403121561140b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a0357610a03611412565b634e487b7160e01b600052601260045260246000fd5b6000826114645761146461143f565b500490565b81810381811115610a0357610a03611412565b60006020828403121561148e57600080fd5b81516113a7816113ae565b634e487b7160e01b600052603260045260246000fd5b6000600182016114c1576114c1611412565b5060010190565b6000602082840312156114da57600080fd5b815161ffff811681146113a757600080fd5b634e487b7160e01b600052604160045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561154057835163ffffffff168352928401929184019160010161151e565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611575576115756114ec565b604052919050565b600067ffffffffffffffff821115611597576115976114ec565b5060051b60200190565b600082601f8301126115b257600080fd5b815160206115c76115c28361157d565b61154c565b82815260059290921b840181019181810190868411156115e657600080fd5b8286015b8481101561160a5780516115fd816113ae565b83529183019183016115ea565b509695505050505050565b6000806040838503121561162857600080fd5b825167ffffffffffffffff8082111561164057600080fd5b818501915085601f83011261165457600080fd5b815160206116646115c28361157d565b82815260059290921b8401810191818101908984111561168357600080fd5b948201945b838610156116b15785518060060b81146116a25760008081fd5b82529482019490820190611688565b918801519196509093505050808211156116ca57600080fd5b506116d7858286016115a1565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610a0357610a03611412565b60008160060b8360060b806117255761172561143f565b667fffffffffffff1982146000198214161561174357611743611412565b90059392505050565b60008260060b8061175f5761175f61143f565b808360060b0791505092915050565b60008160020b627fffff19810361178757611787611412565b6000190192915050565b60ff8281168282160390811115610a0357610a03611412565b600181815b808511156117e55781600019048211156117cb576117cb611412565b808516156117d857918102915b93841c93908002906117af565b509250929050565b6000826117fc57506001610a03565b8161180957506000610a03565b816001811461181f576002811461182957611845565b6001915050610a03565b60ff84111561183a5761183a611412565b50506001821b610a03565b5060208310610133831016604e8410600b8410161715611868575081810a610a03565b61187283836117aa565b806000190482111561188657611886611412565b029392505050565b60006113a760ff8416836117ed565b6000600160ff1b82016118b2576118b2611412565b5060000390565b60008160020b627fffff1981036118d2576118d2611412565b60000392915050565b6000826118ea576118ea61143f565b500690565b80820180821115610a0357610a0361141256fea2646970667358221220a087b26507c7ec3c991f2caeddc00e56dd6ee237c60868099224b07f0771796c64736f6c63430008140033a26469706673582212208a7235b953b01959376cc6c555092b2503823faf2aeef9ee86bf2bfc3b816e2c64736f6c63430008140033000000000000000000000000333a16307d8bef80616f719e958af5c76290ca85000000000000000000000000521faacdfa097ad35a32387727e468f7fd032fd6000000000000000000000000000000000000000000000000000000000000012c