69 txs
82 calls
constructor
constructor(address _owner)
functions
activeInstance
viewfunction activeInstance() view returns (address)
claimIncentiveFeeBPS
viewfunction claimIncentiveFeeBPS() view returns (uint16)
deviation
viewfunction deviation() view returns (uint32)
distributeIncentiveFeeBPS
viewfunction distributeIncentiveFeeBPS() view returns (uint16)
distributionCaps
viewfunction distributionCaps(address) view returns (uint256)
distributionInterval
viewfunction distributionInterval() view returns (uint64)
distributionTargets
viewfunction distributionTargets(address) view returns (address)
distributionTokens
viewfunction distributionTokens(address) view returns (bool)
distributionTypes
viewfunction distributionTypes(address) view returns (uint8)
getMaturedStake
viewfunction getMaturedStake() view returns (address, uint256)
getNextDistributionInfo
viewfunction getNextDistributionInfo() view returns (uint256 time, uint256 amount)
getNextStakeInfo
viewfunction getNextStakeInfo() view returns (uint256 time, uint256 amount)
getNextSwapInfo
viewfunction getNextSwapInfo() view returns (uint256 time, uint256 amount)
getTotalUnclaimedRewards
viewfunction getTotalUnclaimedRewards() view returns (uint256 titanXRewards, uint256 ethRewards)
instances
viewfunction instances(uint256 instanceId) view returns (address)
intervalOverride
viewfunction intervalOverride() view returns (uint256)
isMultihopSwap
viewfunction isMultihopSwap(address) view returns (bool)
lastDistributionTime
viewfunction lastDistributionTime() view returns (uint256)
lastStakeTime
viewfunction lastStakeTime() view returns (uint256)
lastSwapTime
viewfunction lastSwapTime() view returns (uint256)
maxDistributionAmount
viewfunction maxDistributionAmount() view returns (uint256)
maxSwapAmount
viewfunction maxSwapAmount() view returns (uint256)
minStakeAmount
viewfunction minStakeAmount() view returns (uint256)
multihopSwapOptionsV3
viewfunction multihopSwapOptionsV3(address) view returns (bytes)
numInstances
viewfunction numInstances() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
secondsAgo
viewfunction secondsAgo() view returns (uint32)
stakeIncentiveFeeBPS
viewfunction stakeIncentiveFeeBPS() view returns (uint16)
stakeInterval
viewfunction stakeInterval() view returns (uint64)
swapIncentiveFeeBPS
viewfunction swapIncentiveFeeBPS() view returns (uint16)
swapInterval
viewfunction swapInterval() view returns (uint64)
swapOptionsV2
viewfunction swapOptionsV2(address, uint256) view returns (address)
swapOptionsV3
viewfunction swapOptionsV3(address) view returns (address tokenOut, uint24 fee)
tokenDistributionTimes
viewfunction tokenDistributionTimes(address) view returns (uint256)
whitelistedUsers
viewfunction whitelistedUsers(address) view returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
addTransferToken
nonpayablefunction addTransferToken(address token, address target)
addUniswapV2Token
nonpayablefunction addUniswapV2Token(address token, address target, address[] path, uint256 capPerSwap)
addUniswapV3MultihopToken
nonpayablefunction addUniswapV3MultihopToken(address token, address target, bytes path, uint256 capPerSwap)
addUniswapV3Token
nonpayablefunction addUniswapV3Token(address token, address target, address tokenOut, uint24 poolFee, uint256 capPerSwap)
claim
nonpayablefunction claim()
claimV2Rewards
nonpayablefunction claimV2Rewards(uint256 instanceId, address[] tokens, uint256[] stakeIds)
deployNewInstance
nonpayablefunction deployNewInstance()
disableDistributionToken
nonpayablefunction disableDistributionToken(address token)
distributeEthRewards
nonpayablefunction distributeEthRewards(uint256 minAmountOut, uint256 deadline)
distributeToken
nonpayablefunction distributeToken(address token, uint256 minAmountOut, uint256 deadline)
renounceOwnership
nonpayablefunction renounceOwnership()
setClaimIncentiveFee
nonpayablefunction setClaimIncentiveFee(uint16 bps)
setDeviation
nonpayablefunction setDeviation(uint32 limit)
setDistrbutionTokenCapPerSwap
nonpayablefunction setDistrbutionTokenCapPerSwap(address token, uint256 limit)
setDistrbutionWhitelist
nonpayablefunction setDistrbutionWhitelist(address[] accounts, bool isAllowed)
setDistributeIncentiveFee
nonpayablefunction setDistributeIncentiveFee(uint16 bps)
setDistributionInterval
nonpayablefunction setDistributionInterval(uint64 limit)
setMaxDistributionAmount
nonpayablefunction setMaxDistributionAmount(uint256 limit)
setMaxSwapAmount
nonpayablefunction setMaxSwapAmount(uint256 limit)
setMinStakeAmount
nonpayablefunction setMinStakeAmount(uint256 limit)
setSecondsAgo
nonpayablefunction setSecondsAgo(uint32 limit)
setStakeIncentiveFee
nonpayablefunction setStakeIncentiveFee(uint16 bps)
setStakeInterval
nonpayablefunction setStakeInterval(uint64 limit)
setSwapIncentiveFee
nonpayablefunction setSwapIncentiveFee(uint16 bps)
setSwapInterval
nonpayablefunction setSwapInterval(uint64 limit)
stake
nonpayablefunction stake()
swap
nonpayablefunction swap(uint256 minAmountOut, uint256 deadline)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Claim
event Claim()
Distribution
event Distribution()
NewInstance
event NewInstance(uint256 instanceId, address instanceAddress)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Stake
event Stake()
Swap
event Swap()
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
Cooldown
error Cooldown()
Create2EmptyBytecode
error Create2EmptyBytecode()
Create2FailedDeployment
error Create2FailedDeployment()
Create2InsufficientBalance
error Create2InsufficientBalance(uint256 balance, uint256 needed)
DuplicateDistributionToken
error DuplicateDistributionToken()
FailedInnerCall
error FailedInnerCall()
InsufficientBalance
error InsufficientBalance()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
NothingToClaim
error NothingToClaim()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
Prohibited
error Prohibited()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
T
error T()
TWAP
error TWAP()
Unauthorized
error Unauthorized()
ZeroAddress
error ZeroAddress()
ZeroInput
error ZeroInput()
creation bytecode
0x6080806040523461022f5760208161741b803803809161001f8285610234565b83398101031261022f57516001600160a01b0381169081900361022f57801561021957600180546001600160a01b0319908116909155600080549182168317815560405192916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360016002556b06765c793fa10079d00000006008556c01431e0fae6d7217caa00000006009556729a2241af62c0000600a557e1e001e001e001e0000000000000e100000000000093a800000000000000708600b55600c80546001600160401b0319166501f40000012c179055611232906101116020830182610234565b81815260208101916161e98339600354916000198314610203576001830160035560405160208101903060601b825284603482015260348152610155605482610234565b519020908251156101f25791516001600160a01b03926000f51680156101e1577fd55946290a6ff8ebb4aa2df8f1d355c32d034d04fb225b655d9da856c250fda8918160409260018060a01b0319600454161760045581600052600d602052826000208160018060a01b031982541617905582519182526020820152a1604051615f7b908161026e8239f35b633a0ba96160e11b60005260046000fd5b631328927760e21b60005260046000fd5b634e487b7160e01b600052601160045260246000fd5b631e4fbdf760e01b600052600060045260246000fd5b600080fd5b601f909101601f19168101906001600160401b0382119082101761025757604052565b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001a575b50361561001857005b005b600090813560e01c9081630dd8715714613843575080631ad7b12714613801578063294a441114613797578063297a7cdd146135d55780632ace03ad146135785780632c162e541461354f5780632d6e1408146135345780632f84cbf5146135195780633a4b66f1146133da57806349984e081461323b5780634b56e819146131aa5780634e71d92d14612fe557806351778fa414612fbc57806353f754e714612f7f57806355cf98b714612e365780635bc02c7514612e185780635fea13f814612deb578063633dd14514612dc7578063639097a114612da157806364d4db1014612d83578063664d4e9814612d5e57806371201a0e14612d34578063715018a614612ccf5780637319922814612c6957806375b1735014612c4b578063786226d314612c0c57806379ba509714612b875780637f7de58014612b605780638166b31614612afa578063840d3e9614612a995780638da5cb5b14612a72578063946bdb0814611e1557806399aa65a714611df75780639bba73f114611bb6578063a2f7b3a514611b83578063a5f7f99d14611b5a578063aa2dbae514611b0b578063ad44a27314611ad1578063af1a3d0414611a6b578063b1283c1c14611a44578063b3e0662d14611a0b578063c0794e71146119e3578063c2bc5d341461197b578063c3c12d591461192d578063c41208b3146118ee578063c491631e1461182c578063cce987d41461180e578063cddd89b8146117b6578063d43b51b614611791578063d65a562314611767578063d96073cf14610a56578063d9ad02e1146109ff578063daf8c5aa14610980578063db4d085214610826578063e12ae00e14610805578063e30c3978146107dc578063e76e9d5e146105e8578063eb4af045146105c5578063ef7fbfea14610459578063f18876841461043b578063f2fde38b146103ce578063f3cdb351146103a9578063f621cc481461036a578063f6886ebe146103295763f853c6c70361000f5734610326576020366003190112610326576020906040906001600160a01b0361031561385f565b168152601283522054604051908152f35b80fd5b5034610326576020366003190112610326576020906001600160a01b0361034e61385f565b16815260138252604060018060a01b0391205416604051908152f35b50346103265760203660031901126103265760209060ff906040906001600160a01b0361039561385f565b168152600e84522054166040519015158152f35b5034610326578060031936011261032657602061ffff600b5460c01c16604051908152f35b5034610326576020366003190112610326576103e861385f565b6103f0614738565b600180546001600160a01b0319166001600160a01b0392831690811790915582549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346103265780600319360112610326576020600954604051908152f35b50346103265760a03660031901126103265761047361385f565b61047b61387a565b906044356001600160a01b03811691908290036105c1576064359062ffffff82168092036105bd576104ab614738565b6001600160a01b03169283156105ae57838552600f60205260ff60408620541661059f57838552600f60205260408520600160ff19825416179055838552601060205260408520600360ff1982541617905583855260146020526040852060ff1981541690558385526013602052604085209060018060a01b03166001600160601b0360a01b82541617905560405191610544836138d6565b825260208083019182528385526016815260408086209351845493516001600160b81b03199094166001600160a01b03919091161760a09390931b62ffffff60a01b1692909217909255918352601190528120608435905580f35b6307de7fa360e51b8552600485fd5b63d92e233d60e01b8552600485fd5b8480fd5b8380fd5b5034610326576020366003190112610326576105df614738565b60043560095580f35b5034610326576060366003190112610326576024356001600160401b0381116107d857610619903690600401613929565b906044356001600160401b0381116105c157610639903690600401613929565b9290333b158015906107ce575b6107c0576004358552600d60205260408520546001600160a01b031680156107b157908591604051956304526cdb60e51b87528460448801604060048a015252606487019286855b8781106107815750508784036003190160248901528184526001600160fb1b0382116105bd5760208886928196829560051b809285830137010301925af1928315610776578493610752575b50835b8181106106e8578480f35b835181101561073e5780610738612710610717602060019560051b8901015161ffff600b5460e01c1690613aa9565b0433848060a01b0361073261072d86898b613c5a565b613c80565b16614817565b016106dd565b634e487b7160e01b85526032600452602485fd5b61076f9193503d8086833e61076781836138f1565b8101906146a2565b91386106da565b6040513d86823e3d90fd5b91929394600191965060208091838060a01b0361079d8a613890565b16815201960191019089959493929161068e565b63d92e233d60e01b8652600486fd5b6282b42960e81b8552600485fd5b5032331415610646565b5080fd5b50346103265780600319360112610326576001546040516001600160a01b039091168152602090f35b50346103265780600319360112610326576020600b5460f01c604051908152f35b5034610326578060031936011261032657808182600354905b818510610856576040848482519182526020820152f35b9091848252600d60205260018060a01b0360408320541693604051637f4a4bd360e11b8152856004820152602081602481732614f29c39de46468a921fd0b41fdd99a01f2edf5afa90811561077657849161094b575b506108b691613af8565b93604051906338ce8f2560e21b82526004820152602081602481732614f29c39de46468a921fd0b41fdd99a01f2edf5afa90811561094057839161090c575b5061090290600192613af8565b940193919061083f565b905060203d8111610939575b61092281836138f1565b6020826000928101031261032657505160016108f5565b503d610918565b6040513d85823e3d90fd5b905060203d8111610979575b61096181836138f1565b602082600092810103126103265750516108b66108ac565b503d610957565b50346103265760203660031901126103265760043563ffffffff81168082036109fb576109ab614738565b80156109ec57612710106109dd5767ffffffff00000000600c549160201b169067ffffffff00000000191617600c5580f35b632b0039c760e21b8252600482fd5b63af458c0760e01b8352600483fd5b8280fd5b5034610326576020366003190112610326576004356001600160401b0381168091036107d857610a2d614738565b8015610a47576001600160401b0319600b541617600b5580f35b63af458c0760e01b8252600482fd5b503461032657610a6536613959565b90333b1580159061175d575b61174f57610a7d613ba1565b90421061174057801561173157610ab99042600555612710610aa861ffff600b5460c01c1683613aa9565b0490610ab482336147de565b613c40565b600c54604051633850c7bd60e01b8152919290732c83c54c5612bfd62a78124d4a0ea001278a689c63ffffffff821660e085600481855afa8015611571578895899161169d575b5061ffff169485156116735761ffff600191160161ffff81116114005761ffff600096816040519363252c09d760e01b85521606166004820152608081602481865afa9081156116435789908a9261164e575b5090156115d0575b90610b6d63ffffffff928342166149f0565b81838216106115c8575b5016801561159e5787604051610b8e6060826138f1565b600281526020810193604036863783610ba68361471b565b5282610bb183614728565b5260405163883bdbfd60e01b81526020600482015291516024830181905291948592604484019190855b81811061157c5750505082809103915afa918215611571578890899361144b575b50610c13610c0982614728565b5160060b9161471b565b5160060b900391667fffffffffffff198312667fffffffffffff841317611400576001600160a01b03610c4582614728565b5116906001600160a01b0390610c5a9061471b565b51169003906001600160a01b038211611400578060060b9260060b831561143757667fffffffffffff1981146000198514166114235783810560020b938a82129182611414575b50506113ea575b6001600160a01b038181026001600160c01b03169190910490036113d65760201b640100000000600160c01b03161561118d5760020b868112156113d057808703905b620d89e882116113c157879060018316156113af576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169260028116611393575b60048116611377575b6008811661135b575b6010811661133f575b60208116611323575b60408116611307575b608081166112eb575b61010081166112cf575b61020081166112b3575b6104008116611297575b610800811661127b575b611000811661125f575b6120008116611243575b6140008116611227575b618000811661120b575b6201000081166111ef575b6202000081166111d4575b6204000081166111b9575b62080000166111a1575b1361117e575b6127109163ffffffff610e4181610e489481811615600014611176578b905b60201c60ff91909116016001600160a01b03166001600160801b0381116111475780610e2691613aa9565b898c1561113857610e3691614c54565b935b60201c166149d8565b1690613aa9565b0481106111295760405193610e5c856138a4565b73f19308f923582a6f7c465e5ce7a9dc1bec6665b18552732614f29c39de46468a921fd0b41fdd99a01f2edf6020860152612710604086015230606086015260808501528260a085015260c08401528360e0840152604051636eb1769f60e11b8152306004820152600080516020615f26833981519152602482015260208160448173f19308f923582a6f7c465e5ce7a9dc1bec6665b15afa91821561111e5785926110e7575b505090610f0f91613af8565b90828060405193602085019063095ea7b360e01b8252600080516020615f268339815191526024870152604486015260448552610f4d6064866138f1565b8451908273f19308f923582a6f7c465e5ce7a9dc1bec6665b15af1610f70614878565b816110a4575b50610fa6926020929180611086575b15611027575b506040518093819263414bf38960e01b8352600483016148f9565b038185600080516020615f268339815191525af1801561101c57610fed575b507f3ebfdaaf4031bec9a2b7b0a1c594d2d03f3d0b8d68531c9164c2829bac00fefa8180a180f35b61100e9060203d602011611015575b61100681836138f1565b810190613ae9565b5038610fc5565b503d610ffc565b6040513d84823e3d90fd5b6110809061106660405163095ea7b360e01b86820152600080516020615f268339815191526024820152876044820152604481526110666064826138f1565b73f19308f923582a6f7c465e5ce7a9dc1bec6665b1614962565b38610f8b565b5073f19308f923582a6f7c465e5ce7a9dc1bec6665b13b1515610f85565b80518015925082156110bc575b50610fa69050610f76565b8193925090602091810103126105c157610fa6926110dd6020809401613c4d565b91928194506110b1565b9091506020823d602011611116575b81611103602093836138f1565b81010312610326575051610f0f38610f03565b3d91506110f6565b6040513d87823e3d90fd5b63431653f160e11b8552600485fd5b9061114291614bcf565b610e36565b8061115191614a7f565b898c156111675761116191614b80565b93610e38565b9061117191614ade565b611161565b600190610dfb565b801561118d5760001904610ddc565b634e487b7160e01b87526012600452602487fd5b916b048a170391f7dc42444e8fa20260801c91610dd6565b6d2216e584f5fa1ea926041bedfe9890930260801c92610dcc565b926e5d6af8dedb81196699c329225ee6040260801c92610dc1565b926f09aa508b5b7a84e1c677de54f3e99bc90260801c92610db6565b926f31be135f97d08fd981231505542fcfa60260801c92610dab565b926f70d869a156d2a1b890bb3df62baf32f70260801c92610da1565b926fa9f746462d870fdf8a65dc1f90e061e50260801c92610d97565b926fd097f3bdfd2022b8845ad8f792aa58250260801c92610d8d565b926fe7159475a2c29b7443b29c7fa6e889d90260801c92610d83565b926ff3392b0822b70005940c7a398e4b70f30260801c92610d79565b926ff987a7253ac413176f2b074cf7815e540260801c92610d6f565b926ffcbe86c7900a88aedcffc83b479aa3a40260801c92610d65565b926ffe5dee046a99a2a811c461f1969c30530260801c92610d5b565b926fff2ea16466c96a3843ec78b326b528610260801c92610d52565b926fff973b41fa98c081472e6896dfb254c00260801c92610d49565b926fffcb9843d60f6159c9db58835c9266440260801c92610d40565b926fffe5caca7e10e4e61c3624eaa0941cd00260801c92610d37565b926ffff2e50f5f656932ef12357cf3c7fdcc0260801c92610d2e565b926ffff97272373d413259a46990580e213a0260801c92610d25565b6001600160881b03600160801b610d1a565b6315e4079d60e11b8852600488fd5b80610ceb565b634e487b7160e01b88526011600452602488fd5b91627fffff198114611400576000190191610ca8565b634e487b7160e01b89526011600452602489fd5b0760060b151590503880610ca1565b634e487b7160e01b8a52601160045260248afd5b634e487b7160e01b8a52601260045260248afd5b9250503d8089843e61145d81846138f1565b82019160408184031261156d5780516001600160401b0381116115495781019083601f830112156115495781519161149483613912565b926114a260405194856138f1565b80845260208085019160051b8301019186831161156957602001905b828210611551575050506020810151906001600160401b03821161154d57019280601f850112156115495783516114f481613912565b9461150260405196876138f1565b81865260208087019260051b82010192831161154557602001905b82821061152d5750505038610bfc565b6020809161153a84614a0a565b81520191019061151d565b8b80fd5b8980fd5b8a80fd5b6020809161155e84614a2d565b8152019101906114be565b8c80fd5b8880fd5b6040513d8a823e3d90fd5b825163ffffffff1684528e965088955060209384019390920191600101610bdb565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b905038610b77565b5060405163252c09d760e01b81526004810189905290608082602481865afa9182156116435763ffffffff92610b6d918b91611611575b5091925050610b5b565b611633915060803d60801161163c575b61162b81836138f1565b810190614a3b565b50505038611607565b503d611621565b6040513d8b823e3d90fd5b9050611669915060803d60801161163c5761162b81836138f1565b9291505038610b53565b60405162461bcd60e51b81526020600482015260026024820152614e4960f01b6044820152606490fd5b95505060e0853d60e011611729575b816116b960e093836138f1565b81010312611725576116ca85614a0a565b5060208501518060020b03611725576116e560408601614a1e565b946116f260608201614a1e565b956116ff60808301614a1e565b5060a082015160ff8116036115495761171d60c061ffff9301613c4d565b509590610b00565b8780fd5b3d91506116ac565b631e9acf1760e31b8452600484fd5b63b0782df760e01b8452600484fd5b6282b42960e81b8352600483fd5b5032331415610a71565b503461032657806003193601126103265760206001600160401b03600b5460401c16604051908152f35b5034610326578060031936011261032657602061ffff600b5460d01c16604051908152f35b5034610326576040366003190112610326576117d061385f565b6001600160a01b031681526017602052604081208054909190602435908110156107d85760209282528260018060a01b039220015416604051908152f35b50346103265780600319360112610326576020600854604051908152f35b50346103265760403660031901126103265761184661385f565b61184e61387a565b90611857614738565b6001600160a01b031680156118df57808352600f60205260ff6040842054166118d057808352600f60205260408320600160ff19825416179055808352601060205260408320600160ff1982541617905582526013602052604082209060018060a01b03166001600160601b0360a01b82541617905580f35b6307de7fa360e51b8352600483fd5b63d92e233d60e01b8352600483fd5b50346103265760203660031901126103265760209060ff906040906001600160a01b0361191961385f565b168152600f84522054166040519015158152f35b50346103265760203660031901126103265760409081906001600160a01b0361195461385f565b1681526016602052205462ffffff82519160018060a01b038116835260a01c166020820152f35b50346103265760403660031901126103265761199561385f565b602435906119a1614738565b6001600160a01b0316808352600f602052604083205460ff16156119d45781156109ec5782526011602052604082205580f35b632b0039c760e21b8352600483fd5b503461032657806003193601126103265760206040516c01431e0fae6d7217caa00000008152f35b5034610326576020366003190112610326576020906040906001600160a01b03611a3361385f565b168152601183522054604051908152f35b503461032657806003193601126103265760206001600160401b03600b5416604051908152f35b50346103265760203660031901126103265760043561ffff81168082036109fb57611a94614738565b8015908115611ac5575b506109dd57600b805461ffff60d01b191660d09290921b61ffff60d01b1691909117905580f35b6103e891501138611a9e565b5034610326578060031936011261032657611aea6145f5565b604080516001600160a01b03939093168352602083019190915290f35b0390f35b503461032657602036600319011261032657611b0790611b46906040906001600160a01b03611b3861385f565b1681526015602052206139c4565b604051918291602083526020830190613a68565b503461032657602036600319011261032657600435611b77614738565b8015610a475760085580f35b5034610326576020366003190112610326576020906004358152600d8252604060018060a01b0391205416604051908152f35b503461032657608036600319011261032657611bd061385f565b90611bd961387a565b604435926001600160401b0384116109fb57366023850112156109fb578360040135611c048161396f565b94611c1260405196876138f1565b81865236602483830101116105bd578185926024602093018389013786010152611c3a614738565b6001600160a01b03169081156118df57818352600f60205260ff6040842054166118d057818352600f60205260408320600160ff19825416179055818352601060205260408320600360ff19825416179055818352601460205260408320600160ff198254161790558183526013602052604083209060018060a01b03166001600160601b0360a01b82541617905580825260156020526040822083516001600160401b038111611de357611cef825461398a565b601f8111611da8575b50602094601f8211600114611d46579484958293949592611d3b575b50508160011b916000199060031b1c19161790555b81526011602052606435604082205580f35b015190503880611d14565b601f1982169583865280862091865b888110611d9057508360019596979810611d77575b505050811b019055611d29565b015160001960f88460031b161c19169055388080611d6a565b91926020600181928685015181550194019201611d55565b611dd39083865260208620601f840160051c81019160208510611dd9575b601f0160051c0190613ad2565b38611cf8565b9091508190611dc6565b634e487b7160e01b84526041600452602484fd5b50346103265780600319360112610326576020600354604051908152f35b503461032657611e2436613959565b90611e2d614858565b333b15801590612a68575b61174f57611e446145c5565b919042106117405781156117315742600755611e73612710611e6b600b5460f01c85613aa9565b048093613c40565b9073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b156105bd57604051630d0e30db60e41b8152859081816004818773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1801561101c57612a53575b5050600c54604051633850c7bd60e01b8152919073c45a81bc23a64ea556ab4cdf08a86b61cdceea8b63ffffffff821660e085600481855afa80156116435789958a916129c3575b5061ffff169485156116735761ffff600191160161ffff81116114235761ffff600096816040519363252c09d760e01b85521606166004820152608081602481865afa908115612993578a908b9261299e575b509015612930575b90611f7b63ffffffff928342166149f0565b8183821610612928575b5016801561159e5788604051611f9c6060826138f1565b600281526020810193604036863783611fb48361471b565b5282611fbf83614728565b5260405163883bdbfd60e01b81526020600482015291516024830181905291948592604484019190855b8181106129065750505082809103915afa9182156116435789908a936127f0575b50612017610c0982614728565b5160060b900391667fffffffffffff198312667fffffffffffff841317611423576001600160a01b0361204982614728565b5116906001600160a01b039061205e9061471b565b51169003906001600160a01b038211611423578060060b9260060b83156127dc57667fffffffffffff1981146000198514166127c85783810560020b938b821291826127b9575b50506127a3575b6001600160a01b038181026001600160c01b03169190910490036114005760201b640100000000600160c01b03161561255a5760020b8781121561279d57808803905b620d89e8821161278e578890600183161561277c576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169260028116612760575b60048116612744575b60088116612728575b6010811661270c575b602081166126f0575b604081166126d4575b608081166126b8575b610100811661269c575b6102008116612680575b6104008116612664575b6108008116612648575b611000811661262c575b6120008116612610575b61400081166125f4575b61800081166125d8575b6201000081166125bc575b6202000081166125a1575b620400008116612586575b620800001661256e575b1361254b575b6127109163ffffffff610e41816122369481811615600014612543578c905b60201c60ff91909116016001600160a01b0316898d6001600160801b03831161252f5761222f83610e3694613aa9565b9050614c54565b048110612520576040519461224a866138a4565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2865273f19308f923582a6f7c465e5ce7a9dc1bec6665b160208701526127106040870152735d27813c32dd705404d1a78c9444dab523331717606087015260808601528260a086015260c08501528460e0850152604051636eb1769f60e11b8152306004820152600080516020615f26833981519152602482015260208160448173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa9182156125155786926124de575b50509061231191613af8565b91838060405194602086019063095ea7b360e01b8252600080516020615f26833981519152602488015260448701526044865261234f6064876138f1565b8551908273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1612372614878565b8161249b575b506123a893602092918061247d575b1561241e575b506040518094819263414bf38960e01b8352600483016148f9565b038186600080516020615f268339815191525af1918215610940576123d3926123ff575b50336148a8565b7f5da5f5ab15b3f7ce29e57210ae89068218f2196e9df956cf8b0586b0d65205528180a1600160025580f35b6124179060203d6020116110155761100681836138f1565b50386123cc565b6124779061245d60405163095ea7b360e01b86820152600080516020615f2683398151915260248201528860448201526044815261245d6064826138f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2614962565b3861238d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b1515612387565b80518015925082156124b3575b506123a89050612378565b8193925090602091810103126105bd576123a8936124d46020809401613c4d565b91928195506124a8565b9091506020823d60201161250d575b816124fa602093836138f1565b8101031261032657505161231138612305565b3d91506124ed565b6040513d88823e3d90fd5b63431653f160e11b8652600486fd5b61253c8361116194614a7f565b9050614b80565b6001906121ff565b801561255a57600019046121e0565b634e487b7160e01b88526012600452602488fd5b916b048a170391f7dc42444e8fa20260801c916121da565b6d2216e584f5fa1ea926041bedfe9890930260801c926121d0565b926e5d6af8dedb81196699c329225ee6040260801c926121c5565b926f09aa508b5b7a84e1c677de54f3e99bc90260801c926121ba565b926f31be135f97d08fd981231505542fcfa60260801c926121af565b926f70d869a156d2a1b890bb3df62baf32f70260801c926121a5565b926fa9f746462d870fdf8a65dc1f90e061e50260801c9261219b565b926fd097f3bdfd2022b8845ad8f792aa58250260801c92612191565b926fe7159475a2c29b7443b29c7fa6e889d90260801c92612187565b926ff3392b0822b70005940c7a398e4b70f30260801c9261217d565b926ff987a7253ac413176f2b074cf7815e540260801c92612173565b926ffcbe86c7900a88aedcffc83b479aa3a40260801c92612169565b926ffe5dee046a99a2a811c461f1969c30530260801c9261215f565b926fff2ea16466c96a3843ec78b326b528610260801c92612156565b926fff973b41fa98c081472e6896dfb254c00260801c9261214d565b926fffcb9843d60f6159c9db58835c9266440260801c92612144565b926fffe5caca7e10e4e61c3624eaa0941cd00260801c9261213b565b926ffff2e50f5f656932ef12357cf3c7fdcc0260801c92612132565b926ffff97272373d413259a46990580e213a0260801c92612129565b6001600160881b03600160801b61211e565b6315e4079d60e11b8952600489fd5b806120ef565b91627fffff1981146114235760001901916120ac565b0760060b1515905038806120a5565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b8b52601260045260248bfd5b9250503d808a843e61280281846138f1565b8201916040818403126115495780516001600160401b03811161154d5781019083601f8301121561154d5781519161283983613912565b9261284760405194856138f1565b80845260208085019160051b8301019186831161290257602001905b8282106128ea575050506020810151906001600160401b03821161154557019280601f8501121561154d57835161289981613912565b946128a760405196876138f1565b81865260208087019260051b82010192831161156957602001905b8282106128d2575050503861200a565b602080916128df84614a0a565b8152019101906128c2565b602080916128f784614a2d565b815201910190612863565b8d80fd5b825163ffffffff1684528f965088955060209384019390920191600101611fe9565b905038611f85565b5060405163252c09d760e01b8152600481018a905290608082602481865afa9182156129935763ffffffff92611f7b918c91612971575b5091925050611f69565b61298a915060803d60801161163c5761162b81836138f1565b50505038612967565b6040513d8c823e3d90fd5b90506129b9915060803d60801161163c5761162b81836138f1565b9291505038611f61565b95505060e0853d60e011612a4b575b816129df60e093836138f1565b8101031261156d576129f085614a0a565b5060208501518060020b0361156d57612a0b60408601614a1e565b94612a1860608201614a1e565b95612a2560808301614a1e565b5060a082015160ff81160361154d57612a4360c061ffff9301613c4d565b509590611f0e565b3d91506129d2565b81612a5d916138f1565b6105bd578438611ec6565b5032331415611e38565b5034610326578060031936011261032657546040516001600160a01b039091168152602090f35b5034610326576020366003190112610326576004356001600160401b0381168082036109fb57612ac7614738565b15610a4757600b805467ffffffffffffffff60801b191660809290921b67ffffffffffffffff60801b1691909117905580f35b50346103265760203660031901126103265760043561ffff81168082036109fb57612b23614738565b8015908115612b54575b506109dd57600b805461ffff60e01b191660e09290921b61ffff60e01b1691909117905580f35b6103e891501138612b2d565b50346103265780600319360112610326576040612b7b6145c5565b82519182526020820152f35b5034610326578060031936011261032657600154336001600160a01b0390911603612bf957600180546001600160a01b0319908116909155815433918116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b63118cdaa760e01b815233600452602490fd5b50346103265760203660031901126103265760209060ff906040906001600160a01b03612c3761385f565b168152601484522054166040519015158152f35b50346103265780600319360112610326576020600754604051908152f35b50346103265760203660031901126103265760043561ffff81168082036109fb57612c92614738565b8015908115612cc3575b506109dd57600b805461ffff60c01b191660c09290921b61ffff60c01b1691909117905580f35b6103e891501138612c9c565b5034610326578060031936011261032657612ce8614738565b600180546001600160a01b03199081169091558154908116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461032657806003193601126103265760206001600160401b03600b5460801c16604051908152f35b5034610326578060031936011261032657602061ffff600b5460e01c16604051908152f35b50346103265780600319360112610326576020600654604051908152f35b5034610326578060031936011261032657602063ffffffff600c54821c16604051908152f35b5034610326578060031936011261032657602063ffffffff600c5416604051908152f35b503461032657606036600319011261032657612e15612e0861385f565b6044359060243590613c94565b80f35b50346103265780600319360112610326576020600a54604051908152f35b503461032657602036600319011261032657612e5061385f565b612e58614738565b6001600160a01b0316808252600f602052604082205460ff16156109dd57808252600f60205260408220805460ff19169055808252601060205260408220805460ff191690558082526013602052604082206001600160601b0360a01b81541690558082526011602052816040812055808252601760205260408220805483825580612f65575b5050808252601660205281604081205580825260156020528160408120612f06815461398a565b80612f23575b505052601460205260408120805460ff1916905580f35b601f8111600114612f395750555b813880612f0c565b81835260208320612f5591601f0160051c810190600101613ad2565b8082528160208120915555612f31565b612f789184526020842090810190613ad2565b3880612edf565b50346103265760203660031901126103265760209060ff906040906001600160a01b03612faa61385f565b16815260108452205416604051908152f35b50346103265780600319360112610326576004546040516001600160a01b039091168152602090f35b5034610326578060031936011261032657333b158015906131a0575b6131925761300d614858565b808080805b6003548310156130b857828252600d6020526040808320548151634e71d92d60e01b815291908290600490829087906001600160a01b03165af1908115610940578390849261307c575b509061306d61307392600194613af8565b95613af8565b92019192613012565b9150506040813d82116130b0575b81613097604093836138f1565b810103126109fb5780516020909101519061306d61305c565b3d915061308a565b838115808061318a575b61317b5761315357506130e861312791612710610aa861ffff600b5460e01c1683613aa9565b6040519063a9059cbb60e01b6020830152735d27813c32dd705404d1a78c9444dab52333171760248301526044820152604481526110666064826138f1565b7f3158952e7c791deb52750003dbcb0fb942106f2bcd1005fb946a83cd6646fdc48180a1600160025580f35b613176915061316f6127109161ffff600b5460e01c1690613aa9565b04336148a8565b613127565b6312d37ee560e31b8452600484fd5b5081156130c2565b6282b42960e81b8152600490fd5b5032331415613001565b5034610326576040366003190112610326576004356001600160401b0381116107d8576131db903690600401613929565b602435918215158093036105c1576131f4929192614738565b60ff849216915b838110613206578480f35b6001906001600160a01b0361321f61072d838887613c5a565b168652600e60205260408620805460ff191685179055016131fb565b50346103265780600319360112610326576004805460405163e18f2c9160e01b81529160209183919082906001600160a01b03165afa90811561101c5782916133a0575b50156133915761123260405161329860208301826138f1565b8181526020810191614cf4833960035491600019831461337d576001830160035560405160208101903060601b8252846034820152603481526132dc6054826138f1565b5190209082511561336e5791516001600160a01b039285f516801561335f577fd55946290a6ff8ebb4aa2df8f1d355c32d034d04fb225b655d9da856c250fda891816040926001600160601b0360a01b6004541617600455818552600d602052828520816001600160601b0360a01b82541617905582519182526020820152a180f35b633a0ba96160e11b8352600483fd5b631328927760e21b8552600485fd5b634e487b7160e01b84526011600452602484fd5b632b0039c760e21b8152600490fd5b90506020813d6020116133d2575b816133bb602093836138f1565b810103126107d8576133cc90613c4d565b3861327f565b3d91506133ae565b5034610326578060031936011261032657333b1580159061350f575b61319257613402613b05565b906c01431e0fae6d7217caa000000082106134dc575b5061345d904260065561345761271061343a61ffff600b5460d01c1684613aa9565b046134458133614781565b6004546001600160a01b031692613c40565b90614781565b60045481906001600160a01b0316803b156134d957818091600460405180958193633a4b66f160e01b83525af180156134cc576134bc575b7fde20bc92f9195457f9ba0ec9258c42c0814617c756a597287307a20494e839928180a180f35b6134c5916138f1565b3881613495565b50604051903d90823e3d90fd5b50fd5b42106135005760095481106134f15738613418565b631e9acf1760e31b8252600482fd5b63b0782df760e01b8252600482fd5b50323314156133f6565b50346103265780600319360112610326576040612b7b613ba1565b50346103265780600319360112610326576040612b7b613b05565b50346103265760203660031901126103265760043561356c614738565b8015610a4757600a5580f35b5034610326576020366003190112610326576004356001600160401b0381168082036109fb576135a6614738565b15610a475767ffffffffffffffff60401b600b549160401b169067ffffffffffffffff60401b191617600b5580f35b5034610326576080366003190112610326576135ef61385f565b6135f761387a565b906044356001600160401b0381116105c157366023820112156105c15780600401359161362383613912565b9161363160405193846138f1565b838352602083016024819560051b8301019136831161172557602401905b82821061377f57505050613661614738565b6001600160a01b03169283156105ae57838552600f60205260ff60408620541661059f57838552600f60205260408520600160ff19825416179055838552601060205260408520600260ff198254161790558385526013602052604085209060018060a01b03166001600160601b0360a01b8254161790558284526017602052604084209051916001600160401b03831161376b57600160401b831161376b578154838355808410613750575b5090845260208420845b83811061373357858581526011602052606435604082205580f35b82516001600160a01b031681830155602090920191600101613718565b82865260208620613765918101908501613ad2565b3861370e565b634e487b7160e01b85526041600452602485fd5b6020809161378c84613890565b81520191019061364f565b50346103265760203660031901126103265760043561ffff81168082036109fb576137c0614738565b80159081156137f5575b506109dd57600b80546001600160f01b031660f09290921b6001600160f01b03191691909117905580f35b6103e8915011386137ca565b50346103265760203660031901126103265760043563ffffffff81168091036107d85761382c614738565b8015610a475763ffffffff19600c541617600c5580f35b9050346107d857816003193601126107d8576020906005548152f35b600435906001600160a01b038216820361387557565b600080fd5b602435906001600160a01b038216820361387557565b35906001600160a01b038216820361387557565b61010081019081106001600160401b038211176138c057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176138c057604052565b90601f801991011681019081106001600160401b038211176138c057604052565b6001600160401b0381116138c05760051b60200190565b9181601f84011215613875578235916001600160401b038311613875576020808501948460051b01011161387557565b6040906003190112613875576004359060243590565b6001600160401b0381116138c057601f01601f191660200190565b90600182811c921680156139ba575b60208310146139a457565b634e487b7160e01b600052602260045260246000fd5b91607f1691613999565b90604051918260008254926139d88461398a565b8084529360018116908115613a4657506001146139ff575b506139fd925003836138f1565b565b90506000929192526020600020906000915b818310613a2a5750509060206139fd92820101386139f0565b6020919350806001915483858901015201910190918492613a11565b9050602092506139fd94915060ff191682840152151560051b820101386139f0565b919082519283825260005b848110613a94575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201613a73565b81810292918115918404141715613abc57565b634e487b7160e01b600052601160045260246000fd5b818110613add575050565b60008155600101613ad2565b90816020910312613875575190565b91908201809211613abc57565b6040516370a0823160e01b8152306004820152602081602481732614f29c39de46468a921fd0b41fdd99a01f2edf5afa908115613b9557600091613b63575b50613b606006546001600160401b03600b5460401c1690613af8565b91565b90506020813d602011613b8d575b81613b7e602093836138f1565b81010312613875575138613b44565b3d9150613b71565b6040513d6000823e3d90fd5b6040516370a0823160e01b815230600482015260208160248173f19308f923582a6f7c465e5ce7a9dc1bec6665b15afa908115613b9557600091613c0e575b506008549081811115613c0757505b613b606005546001600160401b03600b541690613af8565b9050613bef565b906020823d602011613c38575b81613c28602093836138f1565b8101031261032657505138613be0565b3d9150613c1b565b91908203918211613abc57565b5190811515820361387557565b9190811015613c6a5760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036138755790565b6001600160a01b03166000818152600f602052604090205460ff16156145b45780600052601060205260ff604060002054166001811461451257816000526012602052613cf56040600020546001600160401b03600b5460801c1690613af8565b4210614501576002811461417d57600314613d1b5763af458c0760e01b60005260046000fd5b33600052600e60205260ff604060002054161561416d57806000526012602052426040600020556040516370a0823160e01b8152306004820152602081602481855afa908115613b955760009161413b575b50816000526011602052604060002054908181116000146141335750915b821561412257613dae612710613da6600b5460f01c86613aa9565b048094613c40565b9082600052601360205260018060a01b036040600020541690604051636eb1769f60e11b8152306004820152600080516020615f268339815191526024820152602081604481885afa8015613b955784906000906140ec575b613e119250613af8565b60008060405192602084019063095ea7b360e01b8252600080516020615f268339815191526024860152604485015260448452613e4f6064856138f1565b83519082895af1613e5e614878565b816140b5575b50806140ab575b15614058575b5083600052601460205260ff60406000205416600014613f7d578360005260156020526040600020916040519160a08301948386106001600160401b038711176138c057613ec7613f0e956020976040526139c4565b8452858401928352604084019889526060840190815260808401918252604051988995869563c04b8d5960e01b87528860048801525160a0602488015260c4870190613a68565b93516001600160a01b031660448601525160648501525160848401525160a483015203816000600080516020615f268339815191525af1928315613b95576139fd93613f5e575b505b3390614817565b613f769060203d6020116110155761100681836138f1565b5038613f55565b60209261400e9685600052601685526040600020938560405195613fa0876138d6565b546001600160a01b03811680885260a09190911c62ffffff169190960181905260405195613fcd876138a4565b8887528787015260408601526060850152608084015260a083015260c0820152600060e08201526040518095819263414bf38960e01b8352600483016148f9565b03816000600080516020615f268339815191525af1928315613b95576139fd93614039575b50613f57565b6140519060203d6020116110155761100681836138f1565b5038614033565b6140a59061409f60405163095ea7b360e01b6020820152600080516020615f26833981519152602482015260006044820152604481526140996064826138f1565b87614962565b85614962565b38613e71565b50843b1515613e6b565b80518015925082156140ca575b505038613e64565b81925090602091810103126138755760206140e59101613c4d565b38806140c2565b50506020813d60201161411a575b81614107602093836138f1565b810103126138755783613e119151613e07565b3d91506140fa565b631e9acf1760e31b60005260046000fd5b905091613d8b565b906020823d602011614165575b81614155602093836138f1565b8101031261032657505138613d6d565b3d9150614148565b6282b42960e81b60005260046000fd5b5091909133600052600e60205260ff604060002054161561416d57806000526012602052426040600020556040516370a0823160e01b8152306004820152602081602481855afa908115613b95576000916144cf575b50816000526011602052604060002054908181116000146144c75750915b82156141225761420c612710613da6600b5460f01c86613aa9565b90604051636eb1769f60e11b8152306004820152737a250d5630b4cf539739df2c5dacb4c659f2488d6024820152602081604481875afa8015613b95578390600090614491575b61425d9250613af8565b60008060405192602084019063095ea7b360e01b8252737a250d5630b4cf539739df2c5dacb4c659f2488d60248601526044850152604484526142a16064856138f1565b83519082885af16142b0614878565b8161445a575b5080614450575b156143f7575b5090938260005260176020526040600020604051958660208354918281520190819360005260206000209060005b8181106143d857505050876143079103886138f1565b84600052601360205260018060a01b0360406000205416906040519788946338ed173960e01b865260a48601926004870152602486015260a060448601525180915260c48401929060005b8181106143b65750505090600093839260648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1928315613b95576139fd9361439d57503390614817565b6143b1903d806000833e61076781836138f1565b613f55565b82516001600160a01b0316855289955060209485019490920191600101614352565b82546001600160a01b03168452602090930192600192830192016142f1565b61444a9061444460405163095ea7b360e01b6020820152737a250d5630b4cf539739df2c5dacb4c659f2488d6024820152600060448201526044815261443e6064826138f1565b86614962565b84614962565b386142c3565b50833b15156142bd565b805180159250821561446f575b5050386142b6565b819250906020918101031261387557602061448a9101613c4d565b3880614467565b50506020813d6020116144bf575b816144ac602093836138f1565b81010312613875578261425d9151614253565b3d915061449f565b9050916141f1565b906020823d6020116144f9575b816144e9602093836138f1565b81010312610326575051386141d3565b3d91506144dc565b63b0782df760e01b60005260046000fd5b509150506040516370a0823160e01b8152306004820152602081602481855afa908115613b9557600091614582575b508015614122576139fd91613f57614564612710613da6600b5460f01c86613aa9565b6000838152601360205260409020546001600160a01b031683614817565b906020823d6020116145ac575b8161459c602093836138f1565b8101031261032657505138614541565b3d915061458f565b632b0039c760e21b60005260046000fd5b600a5447818111156145ee57505b613b606007546001600160401b03600b5460801c1690613af8565b90506145d3565b60035460005b81811061460c575050600090600090565b80600052600d60205260018060a01b03604060002054166040519063072553c560e01b8252604082600481845afa918215613b95576000908193614662575b5061465a5750506001016145fb565b939092509050565b92506040833d821161469a575b8161467c604093836138f1565b810103126103265750602061469083613c4d565b920151913861464b565b3d915061466f565b602081830312613875578051906001600160401b03821161387557019080601f830112156138755781516146d581613912565b926146e360405194856138f1565b81845260208085019260051b82010192831161387557602001905b82821061470b5750505090565b81518152602091820191016146fe565b805115613c6a5760200190565b805160011015613c6a5760400190565b6000546001600160a01b0316330361474c57565b63118cdaa760e01b6000523360045260246000fd5b811561476b570490565b634e487b7160e01b600052601260045260246000fd5b60405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091526139fd906147c481606481015b03601f1981018352826138f1565b732614f29c39de46468a921fd0b41fdd99a01f2edf614962565b60405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091526139fd9061106681606481016147b6565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526139fd916148536064836138f1565b614962565b60028054146148675760028055565b633ee5aeb560e01b60005260046000fd5b3d156148a3573d906148898261396f565b9161489760405193846138f1565b82523d6000602084013e565b606090565b8147106148e4576000918291829182916001600160a01b03165af16148cb614878565b50156148d357565b630a12f52160e11b60005260046000fd5b63cd78605960e01b6000523060045260246000fd5b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0808401519083015260c0808401519083015260e09283015116918101919091526101000190565b60008061498b9260018060a01b03169360208151910182865af1614984614878565b9083614ca3565b80519081151591826149b5575b50506149a15750565b635274afe760e01b60005260045260246000fd5b81925090602091810103126138755760206149d09101613c4d565b153880614998565b63ffffffff16612710039063ffffffff8211613abc57565b9063ffffffff8091169116039063ffffffff8211613abc57565b51906001600160a01b038216820361387557565b519061ffff8216820361387557565b51908160060b820361387557565b919082608091031261387557815163ffffffff811681036138755791614a6360208201614a2d565b91614a7c6060614a7560408501614a0a565b9301613c4d565b90565b8181029160009160001982820992848085109403938085039414614ad35783600160401b1115614ac4575090600160401b910990828211900360c01b910360401c1790565b63227bc15360e01b8152600490fd5b925050505060401c90565b90608082901b9060001983600160801b0992828085109403938085039414614b745783821115614b63578190600160801b09816000038216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b63227bc15360e01b60005260046000fd5b5090614a7c9250614761565b6000908281029260001981830992848085109403938085039414614bc457600160801b841015614ac45750600160801b910990828211900360801b910360801c1790565b925050505060801c90565b9060c082901b9060001983600160c01b0992828085109403938085039414614b745783821115614b63578190600160c01b09816000038216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b6000908281029260001981830992848085109403938085039414614c9857600160c01b841015614ac45750600160c01b910990828211900360401b910360c01c1790565b925050505060c01c90565b90614cb857508051156148d357805190602001fd5b81511580614cea575b614cc9575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15614cc156fe608080604052346075573315605f5760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36111b7908161007b8239f35b631e4fbdf760e01b600052600060045260246000fd5b600080fdfe60806040526004361015610018575b361561001657005b005b6000803560e01c8063072553c514610baf5780633a4b66f114610a9f5780634e71d92d146108b55780635ad3f99c1461081a57806369651d4314610782578063715018a6146107285780638a4d9b60146104e25780638da5cb5b146104bb578063af83a81c14610256578063b039d0ce14610183578063bf9befb114610165578063e18f2c91146101435763f2fde38b146100b3575061000e565b34610140576020366003190112610140576004356001600160a01b0381169081900361013c576100e1610ee1565b80156101285781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b80fd5b503461014057806003193601126101405760206103e860015414604051908152f35b50346101405780600319360112610140576020600154604051908152f35b5034610140576020366003190112610140578054604051638da5cb5b60e01b81526004803592602091839182906001600160a01b03165afa90811561024b578391610205575b506001600160a01b031633036101f75760015481116101e85760025580f35b632b0039c760e21b8252600482fd5b6282b42960e81b8252600482fd5b90506020813d602011610243575b8161022060209383610c09565b8101031261023f57516001600160a01b038116810361023f57386101c9565b8280fd5b3d9150610213565b6040513d85823e3d90fd5b503461014057602036600319011261014057600435801580156104b0575b6104a1576000805160206111628339815191523b1561013c57604051632277d1bd60e01b815282908181600481836000805160206111628339815191525af180156104275761048c575b505060405162572fd560e11b81523060048201526024810182905260e0816044816000805160206111628339815191525afa90811561024b578391610444575b506080015165ffffffffffff164211156104355781906000805160206111628339815191523b15610432576040519063065f146b60e11b825260048201528181602481836000805160206111628339815191525af1801561042757610412575b505080546040516370a0823160e01b8152306004820152906001600160a01b03166020826024816000805160206111628339815191525afa90811561024b5783916103d7575b6103ae9250610ff3565b60025460001981146103c35760010160025580f35b634e487b7160e01b82526011600452602482fd5b90506020823d60201161040a575b816103f260209383610c09565b81010312610405576103ae9151906103a4565b600080fd5b3d91506103e5565b8161041c91610c09565b61014057803861035e565b6040513d84823e3d90fd5b50fd5b632968c44760e21b8252600482fd5b905060e03d60e011610485575b61045b8183610c09565b810160e0828203126104815761047a60809165ffffffffffff93610c6c565b91506102fe565b8380fd5b503d610451565b8161049691610c09565b61013c5781386102be565b637351f92960e11b8252600482fd5b506001548111610274565b5034610140578060031936011261014057546040516001600160a01b039091168152602090f35b50346101405760403660031901126101405760043567ffffffffffffffff811161013c57610514903690600401610bd8565b9060243567ffffffffffffffff811161048157610535903690600401610bd8565b61053d610ee1565b6001546002548103908111610714578103610705578454604051637fe56d4b60e01b8152606060048201526064810186905294869460848701946001600160a01b0390931693929186905b8082106106c9575050508584036003190160248701528184526001600160fb1b0382116106c5578593602093859360051b80938684013760448401520103018183739e41a99b6729d73e4491e64a980b1c4bedaa9b055af1908115610427578291610634575b5090604051918291602083016020845282518091526020604085019301915b81811061061b575050500390f35b825184528594506020938401939092019160010161060d565b90503d8083833e6106458183610c09565b81019060208183031261023f5780519067ffffffffffffffff821161048157019080601f8301121561023f57815161067c81610c41565b9261068a6040519485610c09565b81845260208085019260051b8201019283116106c557602001905b8282106106b557505050386105ee565b81518152602091820191016106a5565b8480fd5b91965093949293919286356001600160a01b038116919082900361070157602081600193829352019701920188969594939291610588565b8980fd5b637351f92960e11b8552600485fd5b634e487b7160e01b86526011600452602486fd5b5034610140578060031936011261014057610741610ee1565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461014057806003193601126101405780546040516370a0823160e01b8152306004820152906001600160a01b03166020826024816000805160206111628339815191525afa90811561024b5783916107e4575b6107e19250610ff3565b80f35b90506020823d602011610812575b816107ff60209383610c09565b81010312610405576107e19151906107d7565b3d91506107f2565b503461014057806003193601126101405780546040516370a0823160e01b8152306004820152906001600160a01b031660208260248173f19308f923582a6f7c465e5ce7a9dc1bec6665b15afa90811561024b57839161087f575b6107e19250610f0a565b90506020823d6020116108ad575b8161089a60209383610c09565b81010312610405576107e1915190610875565b3d915061088d565b50346101405780600319360112610140576108ce610ee1565b604051637f4a4bd360e11b81523060048201526020816024816000805160206111628339815191525afa908115610427578291610a6d575b506040516338ce8f2560e21b81523060048201526020816024816000805160206111628339815191525afa90811561024b578391610a3b575b50811580158091610a32575b610960575b6040838382519182526020820152f35b6000805160206111628339815191523b1561048157604051636272683360e01b815284908181600481836000805160206111628339815191525af1801561042757610a1d575b5050610a02575b806109b9575b82610950565b82546001600160a01b03164782116109ef578380808481945af16109db6110c0565b506109b357630a12f52160e11b8352600483fd5b63cd78605960e01b845230600452602484fd5b8254610a189083906001600160a01b0316610f0a565b6109ad565b81610a2791610c09565b6104815783386109a6565b5081151561094b565b90506020813d602011610a65575b81610a5660209383610c09565b8101031261040557513861093f565b3d9150610a49565b90506020813d602011610a97575b81610a8860209383610c09565b81010312610405575138610906565b3d9150610a7b565b5034610140578060031936011261014057610ab8610ee1565b6040516370a0823160e01b81523060048201526020816024816000805160206111628339815191525afa908115610427578291610b7d575b506000805160206111628339815191523b1561013c57604051906310cc8ee760e01b8252600482015261033e6024820152816044820152818082606481836000805160206111628339815191525af18015610b7057610b60575b5050600154600181018091116103c35760015580f35b610b6991610c09565b3881610b4a565b50604051903d90823e3d90fd5b90506020813d602011610ba7575b81610b9860209383610c09565b8101031261013c575138610af0565b3d9150610b8b565b50346101405780600319360112610140576040610bca610d26565b825191151582526020820152f35b9181601f840112156104055782359167ffffffffffffffff8311610405576020808501948460051b01011161040557565b90601f8019910116810190811067ffffffffffffffff821117610c2b57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610c2b5760051b60200190565b519065ffffffffffff8216820361040557565b91908260e09103126104055760405160e0810181811067ffffffffffffffff821117610c2b576040528092805182526020810151602083015260408101519061ffff821682036104055760c0916040840152610cca60608201610c59565b6060840152610cdb60808201610c59565b608084015260a081015160a084015201519060038210156104055760c00152565b8051821015610d105760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b60405163842e298160e01b81523060048201526000816024816000805160206111628339815191525afa908115610ed557600091610de4575b5060005b8151811015610dda576040610d788284610cfc565b51015165ffffffffffff60808201511642119081610dae575b50610d9e57600101610d63565b610da791610cfc565b5151600191565b60c0915001516003811015610dc4571538610d91565b634e487b7160e01b600052602160045260246000fd5b5050600090600090565b903d8082843e610df48184610c09565b82019160208184031261013c5780519067ffffffffffffffff821161023f570182601f8201121561013c57805191610e2b83610c41565b93610e396040519586610c09565b838552602061012081870195028401019281841161023f57602001935b838510610e6857505050505038610d5f565b6101208583031261023f576040516060810181811067ffffffffffffffff821117610ec1579160209161012093604052875181528288015183820152610eb18560408a01610c6c565b6040820152815201940193610e56565b634e487b7160e01b85526041600452602485fd5b6040513d6000823e3d90fd5b6000546001600160a01b03163303610ef557565b63118cdaa760e01b6000523360045260246000fd5b60405163a9059cbb60e01b602082019081526001600160a01b0390921660248201526044810192909252610f91916000918291610f5481606481015b03601f198101835282610c09565b51908273f19308f923582a6f7c465e5ce7a9dc1bec6665b15af1610f766110c0565b9073f19308f923582a6f7c465e5ce7a9dc1bec6665b1611100565b8051908115159182610fcf575b5050610fa657565b635274afe760e01b60005273f19308f923582a6f7c465e5ce7a9dc1bec6665b160045260246000fd5b81925090602091810103126104055760200151801590811503610405573880610f9e565b60405163a9059cbb60e01b602082019081526001600160a01b03909216602482015260448101929092526110649160009182916110338160648101610f46565b5190826000805160206111628339815191525af161104f6110c0565b90600080516020611162833981519152611100565b805190811515918261109c575b505061107957565b635274afe760e01b60005260008051602061116283398151915260045260246000fd5b81925090602091810103126104055760200151801590811503610405573880611071565b3d156110fb573d9067ffffffffffffffff8211610c2b57604051916110ef601f8201601f191660200184610c09565b82523d6000602084013e565b606090565b90611126575080511561111557805190602001fd5b630a12f52160e11b60005260046000fd5b81511580611158575b611137575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561112f56fe0000000000000000000000002614f29c39de46468a921fd0b41fdd99a01f2edfa26469706673582212204fe1fd7f34a59c6ee491aa7650ff74ea7812b6d080e8e2f99135426d500a1b4964736f6c634300081a0033000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564a26469706673582212205018a630e6262cba3b52fca66bebab5811c50dae82bfb65ff125ba42eb84024864736f6c634300081a0033608080604052346075573315605f5760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36111b7908161007b8239f35b631e4fbdf760e01b600052600060045260246000fd5b600080fdfe60806040526004361015610018575b361561001657005b005b6000803560e01c8063072553c514610baf5780633a4b66f114610a9f5780634e71d92d146108b55780635ad3f99c1461081a57806369651d4314610782578063715018a6146107285780638a4d9b60146104e25780638da5cb5b146104bb578063af83a81c14610256578063b039d0ce14610183578063bf9befb114610165578063e18f2c91146101435763f2fde38b146100b3575061000e565b34610140576020366003190112610140576004356001600160a01b0381169081900361013c576100e1610ee1565b80156101285781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b80fd5b503461014057806003193601126101405760206103e860015414604051908152f35b50346101405780600319360112610140576020600154604051908152f35b5034610140576020366003190112610140578054604051638da5cb5b60e01b81526004803592602091839182906001600160a01b03165afa90811561024b578391610205575b506001600160a01b031633036101f75760015481116101e85760025580f35b632b0039c760e21b8252600482fd5b6282b42960e81b8252600482fd5b90506020813d602011610243575b8161022060209383610c09565b8101031261023f57516001600160a01b038116810361023f57386101c9565b8280fd5b3d9150610213565b6040513d85823e3d90fd5b503461014057602036600319011261014057600435801580156104b0575b6104a1576000805160206111628339815191523b1561013c57604051632277d1bd60e01b815282908181600481836000805160206111628339815191525af180156104275761048c575b505060405162572fd560e11b81523060048201526024810182905260e0816044816000805160206111628339815191525afa90811561024b578391610444575b506080015165ffffffffffff164211156104355781906000805160206111628339815191523b15610432576040519063065f146b60e11b825260048201528181602481836000805160206111628339815191525af1801561042757610412575b505080546040516370a0823160e01b8152306004820152906001600160a01b03166020826024816000805160206111628339815191525afa90811561024b5783916103d7575b6103ae9250610ff3565b60025460001981146103c35760010160025580f35b634e487b7160e01b82526011600452602482fd5b90506020823d60201161040a575b816103f260209383610c09565b81010312610405576103ae9151906103a4565b600080fd5b3d91506103e5565b8161041c91610c09565b61014057803861035e565b6040513d84823e3d90fd5b50fd5b632968c44760e21b8252600482fd5b905060e03d60e011610485575b61045b8183610c09565b810160e0828203126104815761047a60809165ffffffffffff93610c6c565b91506102fe565b8380fd5b503d610451565b8161049691610c09565b61013c5781386102be565b637351f92960e11b8252600482fd5b506001548111610274565b5034610140578060031936011261014057546040516001600160a01b039091168152602090f35b50346101405760403660031901126101405760043567ffffffffffffffff811161013c57610514903690600401610bd8565b9060243567ffffffffffffffff811161048157610535903690600401610bd8565b61053d610ee1565b6001546002548103908111610714578103610705578454604051637fe56d4b60e01b8152606060048201526064810186905294869460848701946001600160a01b0390931693929186905b8082106106c9575050508584036003190160248701528184526001600160fb1b0382116106c5578593602093859360051b80938684013760448401520103018183739e41a99b6729d73e4491e64a980b1c4bedaa9b055af1908115610427578291610634575b5090604051918291602083016020845282518091526020604085019301915b81811061061b575050500390f35b825184528594506020938401939092019160010161060d565b90503d8083833e6106458183610c09565b81019060208183031261023f5780519067ffffffffffffffff821161048157019080601f8301121561023f57815161067c81610c41565b9261068a6040519485610c09565b81845260208085019260051b8201019283116106c557602001905b8282106106b557505050386105ee565b81518152602091820191016106a5565b8480fd5b91965093949293919286356001600160a01b038116919082900361070157602081600193829352019701920188969594939291610588565b8980fd5b637351f92960e11b8552600485fd5b634e487b7160e01b86526011600452602486fd5b5034610140578060031936011261014057610741610ee1565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461014057806003193601126101405780546040516370a0823160e01b8152306004820152906001600160a01b03166020826024816000805160206111628339815191525afa90811561024b5783916107e4575b6107e19250610ff3565b80f35b90506020823d602011610812575b816107ff60209383610c09565b81010312610405576107e19151906107d7565b3d91506107f2565b503461014057806003193601126101405780546040516370a0823160e01b8152306004820152906001600160a01b031660208260248173f19308f923582a6f7c465e5ce7a9dc1bec6665b15afa90811561024b57839161087f575b6107e19250610f0a565b90506020823d6020116108ad575b8161089a60209383610c09565b81010312610405576107e1915190610875565b3d915061088d565b50346101405780600319360112610140576108ce610ee1565b604051637f4a4bd360e11b81523060048201526020816024816000805160206111628339815191525afa908115610427578291610a6d575b506040516338ce8f2560e21b81523060048201526020816024816000805160206111628339815191525afa90811561024b578391610a3b575b50811580158091610a32575b610960575b6040838382519182526020820152f35b6000805160206111628339815191523b1561048157604051636272683360e01b815284908181600481836000805160206111628339815191525af1801561042757610a1d575b5050610a02575b806109b9575b82610950565b82546001600160a01b03164782116109ef578380808481945af16109db6110c0565b506109b357630a12f52160e11b8352600483fd5b63cd78605960e01b845230600452602484fd5b8254610a189083906001600160a01b0316610f0a565b6109ad565b81610a2791610c09565b6104815783386109a6565b5081151561094b565b90506020813d602011610a65575b81610a5660209383610c09565b8101031261040557513861093f565b3d9150610a49565b90506020813d602011610a97575b81610a8860209383610c09565b81010312610405575138610906565b3d9150610a7b565b5034610140578060031936011261014057610ab8610ee1565b6040516370a0823160e01b81523060048201526020816024816000805160206111628339815191525afa908115610427578291610b7d575b506000805160206111628339815191523b1561013c57604051906310cc8ee760e01b8252600482015261033e6024820152816044820152818082606481836000805160206111628339815191525af18015610b7057610b60575b5050600154600181018091116103c35760015580f35b610b6991610c09565b3881610b4a565b50604051903d90823e3d90fd5b90506020813d602011610ba7575b81610b9860209383610c09565b8101031261013c575138610af0565b3d9150610b8b565b50346101405780600319360112610140576040610bca610d26565b825191151582526020820152f35b9181601f840112156104055782359167ffffffffffffffff8311610405576020808501948460051b01011161040557565b90601f8019910116810190811067ffffffffffffffff821117610c2b57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610c2b5760051b60200190565b519065ffffffffffff8216820361040557565b91908260e09103126104055760405160e0810181811067ffffffffffffffff821117610c2b576040528092805182526020810151602083015260408101519061ffff821682036104055760c0916040840152610cca60608201610c59565b6060840152610cdb60808201610c59565b608084015260a081015160a084015201519060038210156104055760c00152565b8051821015610d105760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b60405163842e298160e01b81523060048201526000816024816000805160206111628339815191525afa908115610ed557600091610de4575b5060005b8151811015610dda576040610d788284610cfc565b51015165ffffffffffff60808201511642119081610dae575b50610d9e57600101610d63565b610da791610cfc565b5151600191565b60c0915001516003811015610dc4571538610d91565b634e487b7160e01b600052602160045260246000fd5b5050600090600090565b903d8082843e610df48184610c09565b82019160208184031261013c5780519067ffffffffffffffff821161023f570182601f8201121561013c57805191610e2b83610c41565b93610e396040519586610c09565b838552602061012081870195028401019281841161023f57602001935b838510610e6857505050505038610d5f565b6101208583031261023f576040516060810181811067ffffffffffffffff821117610ec1579160209161012093604052875181528288015183820152610eb18560408a01610c6c565b6040820152815201940193610e56565b634e487b7160e01b85526041600452602485fd5b6040513d6000823e3d90fd5b6000546001600160a01b03163303610ef557565b63118cdaa760e01b6000523360045260246000fd5b60405163a9059cbb60e01b602082019081526001600160a01b0390921660248201526044810192909252610f91916000918291610f5481606481015b03601f198101835282610c09565b51908273f19308f923582a6f7c465e5ce7a9dc1bec6665b15af1610f766110c0565b9073f19308f923582a6f7c465e5ce7a9dc1bec6665b1611100565b8051908115159182610fcf575b5050610fa657565b635274afe760e01b60005273f19308f923582a6f7c465e5ce7a9dc1bec6665b160045260246000fd5b81925090602091810103126104055760200151801590811503610405573880610f9e565b60405163a9059cbb60e01b602082019081526001600160a01b03909216602482015260448101929092526110649160009182916110338160648101610f46565b5190826000805160206111628339815191525af161104f6110c0565b90600080516020611162833981519152611100565b805190811515918261109c575b505061107957565b635274afe760e01b60005260008051602061116283398151915260045260246000fd5b81925090602091810103126104055760200151801590811503610405573880611071565b3d156110fb573d9067ffffffffffffffff8211610c2b57604051916110ef601f8201601f191660200184610c09565b82523d6000602084013e565b606090565b90611126575080511561111557805190602001fd5b630a12f52160e11b60005260046000fd5b81511580611158575b611137575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561112f56fe0000000000000000000000002614f29c39de46468a921fd0b41fdd99a01f2edfa26469706673582212204fe1fd7f34a59c6ee491aa7650ff74ea7812b6d080e8e2f99135426d500a1b4964736f6c634300081a0033000000000000000000000000eb430c15ff72fec66f382e6905e2dcb88a805c51