448 txs
456 calls
constructor
constructor(address _owner, address _usdc, address _operator, address _feeReceiver, address _copyWalletFactory, address _gainsTrading, address _swapRouter, address _pyth)
functions
balanceOf
viewfunction balanceOf(address _account) view returns (uint256)
baseGas
viewfunction baseGas() view returns (uint256)
copyWallet
viewfunction copyWallet() view returns (address)
currentDeposit
viewfunction currentDeposit() view returns (uint256)
currentWithdrawal
viewfunction currentWithdrawal() view returns (uint256)
decimals
purefunction decimals() pure returns (uint8)
depositedMargin
viewfunction depositedMargin() view returns (uint256)
depositFee
viewfunction depositFee() view returns (uint256)
ethToUsd
viewfunction ethToUsd(uint256 _amount) view returns (uint256)
FACTOR
viewfunction FACTOR() view returns (uint256)
feeReceiver
viewfunction feeReceiver() view returns (address)
getAvailableBalance
viewfunction getAvailableBalance() view returns (uint256)
getCopyWalletMargin
viewfunction getCopyWalletMargin() view returns (uint256)
getPooledTokenByShares
viewfunction getPooledTokenByShares(uint256 _sharesAmount) view returns (uint256)
getSharesByPooledToken
viewfunction getSharesByPooledToken(uint256 _amount) view returns (uint256)
getTotalPooledToken
viewfunction getTotalPooledToken() view returns (uint256)
getTotalShares
viewfunction getTotalShares() view returns (uint256)
isAuth
viewfunction isAuth(address msgSender) view returns (bool)
isOperator
viewfunction isOperator(address msgSender) view returns (bool)
isOwner
viewfunction isOwner(address msgSender) view returns (bool)
lastDepositTimes
viewfunction lastDepositTimes(address) view returns (uint256)
lastSnapshot
viewfunction lastSnapshot() view returns (uint256)
lastSnapshotBalance
viewfunction lastSnapshotBalance() view returns (uint256)
lockDepositDuration
viewfunction lockDepositDuration() view returns (uint256)
managementFee
viewfunction managementFee() view returns (uint256)
name
viewfunction name() view returns (string)
netAccountDeposits
viewfunction netAccountDeposits(address) view returns (uint256)
operators
viewfunction operators(address operator) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
profitSharingRatio
viewfunction profitSharingRatio() view returns (uint256)
sharesOf
viewfunction sharesOf(address _account) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
vaultConfigs
viewfunction vaultConfigs() view returns (uint256 minDeposit, uint256 maxDeposit, uint256 minMargin, uint256 maxMargin, uint256 maxBalance)
withdrawFee
viewfunction withdrawFee() view returns (uint256)
withdrawnMargin
viewfunction withdrawnMargin() view returns (uint256)
addOperator
nonpayablefunction addOperator(address _operator)
claimRewards
payablefunction claimRewards(address _claimContract, address _claimToken, uint256[] _epochs, uint256[] _rewardAmounts, bytes32[][] _proofs) payable
closePosition
payablefunction closePosition(uint32 _index, uint64 _expectedPrice) payable
deposit
nonpayablefunction deposit(uint256 _amount)
executeCopyWallet
payablefunction executeCopyWallet(int256 margin, uint8[] commands, bytes[] inputs) payable
removeOperator
nonpayablefunction removeOperator(address _operator)
setBaseGas
nonpayablefunction setBaseGas(uint256 _gas)
setDepositFee
nonpayablefunction setDepositFee(uint256 _fee)
setFeeReceiver
nonpayablefunction setFeeReceiver(address _feeReceiver)
setLockDepositDuration
nonpayablefunction setLockDepositDuration(uint256 _duration)
setManagementFee
nonpayablefunction setManagementFee(uint256 _fee)
setProfitSharingRatio
nonpayablefunction setProfitSharingRatio(uint256 _ratio)
setVaultConfigs
nonpayablefunction setVaultConfigs(tuple _vaultConfigs)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 _fee)
snapshot
nonpayablefunction snapshot()
swapTokenV3
nonpayablefunction swapTokenV3(address _tokenIn, uint256 _amountIn, uint256 _amountOutMin, uint24 _fee)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
BaseGasUpdated
event BaseGasUpdated(uint256 gas)
CopyWalletUpdated
event CopyWalletUpdated(address copyWallet)
Deposit
event Deposit(address sender, uint256 amountUSDC, uint256 amountShares)
DepositFeeUpdated
event DepositFeeUpdated(uint256 fee)
FeeReceiverUpdated
event FeeReceiverUpdated(address feeReceiver)
FeeTransferred
event FeeTransferred(address sender, address receiver, uint256 value, uint8 feeType)
LockDepositDurationUpdated
event LockDepositDurationUpdated(uint256 duration)
ManagementFeeUpdated
event ManagementFeeUpdated(uint256 fee)
OperatorAdded
event OperatorAdded(address indexed caller, address indexed operator)
OperatorRemoved
event OperatorRemoved(address indexed caller, address indexed operator)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
Paused
event Paused(address account)
ProfitSharingRatioUpdated
event ProfitSharingRatioUpdated(uint256 ratio)
ProfitSharingTransferred
event ProfitSharingTransferred(address sender, address receiver, uint256 value)
SharesBurnt
event SharesBurnt(address indexed account, uint256 preRebaseTokenAmount, uint256 postRebaseTokenAmount, uint256 sharesAmount)
Snapshot
event Snapshot(uint256 timestamp, uint256 duration, uint256 shares, uint256 balance, uint256 deposit, uint256 withdrawal, int256 pnl)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
VaultConfigsUpdated
event VaultConfigsUpdated(uint256 minDeposit, uint256 maxDeposit, uint256 minMargin, uint256 maxMargin, uint256 maxBalance)
Withdraw
event Withdraw(address receiver, uint256 amountUSDC, uint256 amountShares)
WithdrawFeeUpdated
event WithdrawFeeUpdated(uint256 fee)
errors
InvalidOperatorAddress
error InvalidOperatorAddress(address operatorAddress)
Unauthorized
error Unauthorized()
creation bytecode
0x610120806040523462000483576101008162003d9d8038038091620000258285620006fd565b83398101031262000483576200003b8162000721565b620000496020830162000721565b91620000586040820162000721565b92620000676060830162000721565b620000756080840162000721565b906200008460a0850162000721565b92620000a160e06200009960c0880162000721565b960162000721565b95620000ac62000736565b620000b662000736565b600080546001600160a01b0319166001600160a01b0390941693841781559092907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a38051906001600160401b038211620004df5760065490600182811c92168015620006f2575b6020831014620005e65781601f84931162000691575b50602090601f8311600114620006135760009262000607575b50508160011b916000199060031b1c1916176006555b8051906001600160401b038211620004df5760055490600182811c92168015620005fc575b6020831014620005e65781601f84931162000590575b50602090601f83116001146200050157600092620004f5575b50508160011b916000199060031b1c1916176005555b600160075560646011556105dc60125562093a80601355620f42406014556001600160a01b03908116608052600880546001600160a01b0319169282169290921790915590811660a090815291811660c05291821660e0529116610100526040519081016001600160401b03811182821017620004df577f95574b55e4bc89938fbe7cc645bd1aa8d810130d84df861bb8f21271c0bee7c89160a09160405260806305f5e1009182815264174876e8008060208301526302faf080908160408401526404a817c80092836060820152642e90edd000948591015284600a5580600b5581600c5582600d5583600e556040519485526020850152604084015260608301526080820152a16000546001600160a01b03163303620004ce576001600160a01b031680158015620004b5575b6200049d5760208160009283526001825260408320600160ff1982541617905560246040518094838294337f0780dc183feb0e4f9714cd802b3c0a21894b7ccb4172c992569d2acb5d45f91c8480a360a0516356c0dea960e01b845260048401919091526001600160a01b03165af1908115620004915760009162000442575b600980546001600160a01b0319166001600160a01b0384169081179091556040519081527f61e9a8fdcaf6f5025df199ada3f11b1fc272bd408c0d6ade5dde1f121658aa5990602090a160405161361290816200076b823960805181818161067a01528181610c6e01528181611374015281816118e701528181611cfb01528181612a8901528181612d0201528181612fb701526134bc015260a05181505060c051816130c6015260e0518181816119440152611a0901526101005181612a3f0152f35b90506020813d60201162000488575b816200046060209383620006fd565b810103126200048357516001600160a01b0381168103620004835760206200037e565b600080fd5b3d915062000451565b6040513d6000823e3d90fd5b60249060405190637846caaf60e11b82526004820152fd5b5080600052600160205260ff60406000205416620002fe565b6040516282b42960e81b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b015190503880620001b9565b6005600090815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f198416851062000574576001945083601f198116106200055a575b505050811b01600555620001cf565b015160001960f88460031b161c191690553880806200054b565b818101518355602094850194600190930192909101906200052e565b90915060056000526020600020601f840160051c810160208510620005de575b90849392915b601f830160051c82018110620005ce575050620001a0565b60008155859450600101620005b6565b5080620005b0565b634e487b7160e01b600052602260045260246000fd5b91607f16916200018a565b0151905038806200014f565b60066000908152935060008051602062003d7d83398151915291905b601f198416851062000675576001945083601f198116106200065b575b505050811b0160065562000165565b015160001960f88460031b161c191690553880806200064c565b818101518355602094850194600190930192909101906200062f565b600660005290915060008051602062003d7d833981519152601f840160051c810160208510620006ea575b90849392915b601f830160051c82018110620006da57505062000136565b60008155859450600101620006c2565b5080620006bc565b91607f169162000120565b601f909101601f19168101906001600160401b03821190821017620004df57604052565b51906001600160a01b03821682036200048357565b60408051919082016001600160401b03811183821017620004df57604052600782526676436f70696e3160c81b602083015256fe608080604052600436101561001357600080fd5b600090813560e01c908163022c042e146126aa5750806305abfd711461260357806306fdde031461250a57806313e7c9d81461177757806318160ddd1461053c5780632520e7ff146124dc57806326afe310146124a45780632e1a7d4d14611c755780632f54bf6e14611c405780632f798f8714611bab578063313ce56714611b8f57806335815b9514611b7257806348960ff414611b2d578063490ae21014611ac85780634a9b4b6614611aa957806353d099681461186d57806357ab96e11461184f578063583bbc40146118315780635c975abb1461180e5780635e9a5bbd146117f057806367a52793146117d257806369971c29146117b45780636d70f7ae1461177757806370a082311461037b578063756ff8c71461153e5780637610c8bb14611447578063809dab6a1461133e578063849a1924146113205780638da5cb5b146112fa5780638f6e6aa814611118578063946d1480146110f9578063957be30c146110c157806395d89b4114610fb15780639711715a14610c045780639870d7fe14610b74578063a6f7f5d614610b56578063a797ec2114610b37578063ac8a584a14610a91578063b3f0067414610a6a578063b6ac642a14610a05578063b6b55f25146105a1578063b6f81c8514610586578063c473984e14610568578063c9870dee14610541578063d5002f2e1461053c578063e4f1dc3e1461051e578063e941fa7814610500578063e94b2f44146104e2578063eae329f7146104bf578063efdcd974146103f4578063f2fde38b14610380578063f5eb42dc1461037b578063fb861ac11461035d578063fe56e232146102f75763ff3d18921461027e57600080fd5b346102f45760203660031901126102f4576004356001600160a01b0382541633036102e3576020816102d5610bb87f8f6cc6fc24b0b46c3c4ee093907a8fbf22abfeea49c78cda99e5a8d0a5ef0137941115612bc3565b80601255604051908152a180f35b6040516282b42960e81b8152600490fd5b80fd5b50346102f45760203660031901126102f4576004356001600160a01b0382541633036102e35760208161034f6101f47f2147e2bc8c39e67f74b1a9e08896ea1485442096765942206af1f4bc8bcde917941115612bc3565b80601155604051908152a180f35b50346102f457806003193601126102f4576020601554604051908152f35b612828565b50346102f45760203660031901126102f45761039a6127f4565b81546001600160a01b0380821633036102e35773ffffffffffffffffffffffffffffffffffffffff19921691829116178255337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b50346102f45760203660031901126102f45761040e6127f4565b6001600160a01b03908183541633036102e35716801561047a5760207f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee91600854908073ffffffffffffffffffffffffffffffffffffffff19831617600855846040519216178152a180f35b60405162461bcd60e51b815260206004820152601860248201527f436f70696e5661756c743a205a65726f206164647265737300000000000000006044820152606490fd5b50346102f457806003193601126102f45760206104da613096565b604051908152f35b50346102f457806003193601126102f4576020601754604051908152f35b50346102f457806003193601126102f4576020601054604051908152f35b50346102f457806003193601126102f4576020601254604051908152f35b61280a565b50346102f457806003193601126102f45760206001600160a01b0360095416604051908152f35b50346102f457806003193601126102f4576020601354604051908152f35b50346102f457806003193601126102f45760206104da6134a1565b50346102f457602090816003193601126102f4576004356105c06135b4565b6105c8612901565b6105ee6105e9336001600160a01b0316600052600360205260406000205490565b613563565b600a5482106109c0576106019082612891565b600b541061097b5761061a6106146134a1565b82612891565b600e541061092b57612710610631600f54836128b4565b0461063c81836128e7565b906106468261353a565b928315610922575b6040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03907f000000000000000000000000000000000000000000000000000000000000000082169087816064818a865af18015610917576108df575b5086836107e8575b50505050338352601c8452604083206106d2828254612891565b9055338352601b84524260408420556106ed81601754612891565b6017556106f86135b4565b33156107a3577f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15929361072d83600454612891565b60045533855260038152610745836040872054612891565b338652600382526040862055847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef604051928584523393a360408051338152602081019290925281019190915280606081015b0390a1600160075580f35b60405162461bcd60e51b815260048101859052601860248201527f4d494e545f544f5f5448455f5a45524f5f4144445245535300000000000000006044820152606490fd5b60085460405163a9059cbb60e01b81529084166001600160a01b03166004820152602481018590529182908189816044810103925af180156108d457610875575b507fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd9160809160085416906040519133835288830152604082015260006060820152a1388080866106b8565b8681813d83116108cd575b61088a8183612792565b810103126108c957916080916108c07fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd946128f4565b50915091610829565b8580fd5b503d610880565b6040513d88823e3d90fd5b8781813d8311610910575b6108f48183612792565b8101031261090c57610905906128f4565b50386106b0565b8680fd5b503d6108ea565b6040513d89823e3d90fd5b9250819261064e565b60405162461bcd60e51b815260048101849052602260248201527f436f70696e5661756c743a204f766572206d6178207661756c742062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260048101849052601b60248201527f436f70696e5661756c743a204f766572206d617820616d6f756e7400000000006044820152606490fd5b60405162461bcd60e51b815260048101859052601c60248201527f436f70696e5661756c743a20556e646572206d696e20616d6f756e74000000006044820152606490fd5b50346102f45760203660031901126102f4576004356001600160a01b0382541633036102e357602081610a5c60647f9a1f74aeeb037eb3d45b22a56376dadd6ba6ded25ec3727e520415f6c76768a9941115612bc3565b80601055604051908152a180f35b50346102f457806003193601126102f45760206001600160a01b0360085416604051908152f35b50346102f45760203660031901126102f457610aab6127f4565b6001600160a01b03908183541633036102e3571680158015610b20575b610b0857808252600160205260408220805460ff19169055337f17d7f044d47e4fae1701f86266d0a674db3f792671bd1b974ace77a09af1c8278380a380f35b60249060405190637846caaf60e11b82526004820152fd5b50808252600160205260ff60408320541615610ac8565b50346102f45760203660031901126102f45760206104da600435613563565b50346102f457806003193601126102f4576020601154604051908152f35b50346102f45760203660031901126102f457610b8e6127f4565b6001600160a01b03908183541633036102e3571680158015610bee575b610b0857808252600160205260408220600160ff19825416179055337f0780dc183feb0e4f9714cd802b3c0a21894b7ccb4172c992569d2acb5d45f91c8380a380f35b50808252600160205260ff604083205416610bab565b50346102f457806003193601126102f457610c1d6135b4565b610c2633613581565b156102e3575a60155490620151808201808311610f9d57620150548301908111610f9d57421115610f5857610c59613096565b918260195583601a556001600160a01b0390817f000000000000000000000000000000000000000000000000000000000000000016916040516370a0823160e01b81523060048201526020958682602481885afa8015610f4d578890610f19575b610cc49250612891565b92610cd160175485612957565b60185490888282019283129112908015821691151617610f0557601654610cf791612957565b928015610efd57610d0890426128e7565b915b82610d82575b5050610d7f947fc47707b1747233d136b740d965f1bbc51e05f0428bd3861ff2e4718fd8484eb19260e0926004546017549060185492604051954287528601526040850152866060850152608084015260a083015260c0820152a1426015556016558260175582601855612f44565b80f35b610ddc8764496cebb800610da186610d9c6011548b6128b4565b6128b4565b04809484600854168c60405180968195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af18015610ef257610e62575b509260e0927fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd6080610d7f99947fc47707b1747233d136b740d965f1bbc51e05f0428bd3861ff2e4718fd8484eb19760085416906040519133835287830152604082015260026060820152a1925092819650610d10565b93909691928285813d8311610eeb575b610e7c8183612792565b81010312610ee7577fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd608060e095610d7f9a610ed87fc47707b1747233d136b740d965f1bbc51e05f0428bd3861ff2e4718fd8484eb1996128f4565b50949750949950505092610deb565b8880fd5b503d610e72565b6040513d8b823e3d90fd5b508691610d0a565b634e487b7160e01b88526011600452602488fd5b508682813d8311610f46575b610f2f8183612792565b81010312610f4157610cc49151610cba565b600080fd5b503d610f25565b6040513d8a823e3d90fd5b60405162461bcd60e51b815260206004820152601360248201527f436f70696e5661756c743a204e6f7420796574000000000000000000000000006044820152606490fd5b634e487b7160e01b84526011600452602484fd5b50346102f457806003193601126102f45760405160055460018082169180821c9160009184156110b7575b60209485851081146110a3578487528693929186908215611083575050600114611026575b5061100e92500383612792565b6110226040519282849384528301906127b4565b0390f35b84915060056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0906000915b85831061106b57505061100e935082010185611001565b80548389018501528794508693909201918101611054565b60ff19168582015261100e95151560051b85010192508791506110019050565b634e487b7160e01b84526022600452602484fd5b92607f1692610fdc565b50346102f45760203660031901126102f45760406020916001600160a01b036110e86127f4565b168152601b83522054604051908152f35b50346102f45760203660031901126102f45760206104da6004356129fa565b5060031960a0368201126112755761112e6127f4565b6024356001600160a01b0391828216809203610f415767ffffffffffffffff9360443585811161090c57611166903690600401612860565b939095606435818111610ee757611181903690600401612860565b92906084358381116112f65761119b903690600401612860565b9490966111a66135b4565b6111af33613581565b156102e3575a9a8a60095416998a3b156112f25790611203918e9c9b9a9896611213969594600460409c9a9c519e8f926311edcd5560e31b84521691015260248d015260a060448d015260a48c01916129a8565b91858a84030160648b01526129a8565b9186830301608487015280825260208083019260058284821b83010196868b935b86851061128457508b8d818d81818f8f8383809203925af1801561127957611261575b50610d7f82612f44565b61126a90612762565b611275578183611257565b5080fd5b6040513d84823e3d90fd5b91939597999a9b5091939597601f198282030189528935601e19843603018112156112ee5783018781019190358581116112ea5780871b360383136112ea576112d2899283926001956129a8565b9b01990195019290918d9b9a99989795969492611234565b8f80fd5b8e80fd5b8d80fd5b8a80fd5b50346102f457806003193601126102f4576001600160a01b036020915416604051908152f35b50346102f457806003193601126102f4576020601654604051908152f35b50346102f457806003193601126102f4576040516370a0823160e01b81523060048201526020916001600160a01b0383836024817f000000000000000000000000000000000000000000000000000000000000000085165afa9081156112795784908392611417575b60095460405163d0cb3cd160e01b8152955085916004918391165afa91821561140b57916113da575b6104da9250612891565b90508282813d8311611404575b6113f18183612792565b81010312610f41576104da9151906113d0565b503d6113e7565b604051903d90823e3d90fd5b915083813d8311611440575b61142d8183612792565b81010312610f41578360049351916113a7565b503d611423565b50346102f45760a03660031901126102f45760405160a0810181811067ffffffffffffffff8211176115285760405260043581526020810160243581526040820190604435825260608301926064358452608081019360843585526001600160a01b0386541633036102e3577f95574b55e4bc89938fbe7cc645bd1aa8d810130d84df861bb8f21271c0bee7c89461152292519384600a55519485600b55519182600c55519081600d55519182600e55604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b0390a180f35b634e487b7160e01b600052604160045260246000fd5b50600319906060368301126102f457600435602480359367ffffffffffffffff9485811161177357611574903690600401612860565b9590604493843583811161176f57611590903690600401612860565b92909161159b6135b4565b6115a433613581565b156102e3575a9780611760575b50885b8a81106116fa57506001600160a01b036009541695863b156116f657909199806040519863608d60eb60e01b8a528901604060048b015252606488019a8a915b8083106116c6578b8b818f818e8e838f8f8f8f8f87809a030190870152818452602090818501828460051b8701019582958a935b8685106116535750505050505050508383809203925af18015611279576112615750610d7f82612f44565b9295989a50929598509295601f19808583030186528935601e19843603018112156112f257830188813591018582116112ee5781360381136112ee57838f93601f848d9681889796889760019b5287870137858286010152011601019a019501950191928a9896938c9a98959692611628565b909392919b8435600d8110156116f2576116e460019260209261297f565b95019c019192939b906115f4565b8c80fd5b8980fd5b8060051b830135600d8110156112f6571561171d5761171890612970565b6115b4565b60405162461bcd60e51b815260206004820152601b818401527f436f70696e5661756c743a20496e76616c696420636f6d6d616e640000000000818a0152606490fd5b61176990612c32565b386115b1565b8780fd5b8480fd5b50346102f45760203660031901126102f45760ff60406020926001600160a01b036117a06127f4565b168152600184522054166040519015158152f35b50346102f457806003193601126102f4576020601854604051908152f35b50346102f457806003193601126102f4576020600f54604051908152f35b50346102f457806003193601126102f4576020601a54604051908152f35b50346102f457806003193601126102f457602060ff600254166040519015158152f35b50346102f457806003193601126102f4576020601454604051908152f35b50346102f457806003193601126102f4576020601954604051908152f35b50346102f45760803660031901126102f4576118876127f4565b6064359062ffffff8216809203611a92576118a06135b4565b6001600160a01b0383541633036102e3576040519160e0830183811067ffffffffffffffff821117611528576001600160a01b0392602092611983926040528482168652847f00000000000000000000000000000000000000000000000000000000000000001684870152604086015230606086015260243580608087015260443560a08701528660c08701528660405195868095819463095ea7b360e01b8352837f00000000000000000000000000000000000000000000000000000000000000001660048401602090939291936001600160a01b0360408201951681520152565b0393165af18015611a9e57611a61575b506001600160a01b0360c0604051926304e45aaf60e01b845282815116600485015282602082015116602485015262ffffff60408201511660448501528260608201511660648501526080810151608485015260a081015160a485015201511660c482015260208160e481856001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561127957611a39575080f35b602090813d8311611a5a575b611a4f8183612792565b81010312610f415780f35b503d611a45565b6020813d602011611a96575b81611a7a60209383612792565b81010312611a9257611a8b906128f4565b5038611993565b8280fd5b3d9150611a6d565b6040513d85823e3d90fd5b50346102f45760203660031901126102f45760206104da60043561353a565b50346102f45760203660031901126102f4576004356001600160a01b0382541633036102e357602081611b1f60647f206dd15151fcc83315419fbe53a71fcf9c09da803767d3dd05f7874e1b9bf645941115612bc3565b80600f55604051908152a180f35b50346102f457806003193601126102f457600a54600b54600c54600d54600e54604080519586526020860194909452928401919091526060830152608082015260a090f35b50346102f457806003193601126102f45760206040516127108152f35b50346102f457806003193601126102f457602060405160068152f35b5060403660031901126102f45760043563ffffffff81168091036112755760243567ffffffffffffffff8116809103611a9257611be66135b4565b6001600160a01b03908184541633036102e35783916009541692833b15611a9257604490836040519586948593632f798f8760e01b8552600485015260248401525af1801561127957611c37575080f35b610d7f90612762565b50346102f45760203660031901126102f457602090611c5d6127f4565b906001600160a01b0380915416911614604051908152f35b50346102f45760208060031936011261127557600435611c936135b4565b611c9b612901565b801561245f57338352601b8252611cb9604084205460135490612891565b42111561241a57611cc98161353a565b90611ce8336001600160a01b0316600052600360205260406000205490565b8281106123d5576001600160a01b0393847f0000000000000000000000000000000000000000000000000000000000000000166040516370a0823160e01b80825230600483015260249184818481875afa90811561218f578a916123a8575b50868110612309575b5060405190815230600482015283818381865afa908115610ef25789916122dc575b50851161227357338852601c8352604088205493670de0b6b3a764000094858102908082048714901517156122605790611dab916128c7565b9380860286810482036122605790611e3688611dc9818d96956128c7565b97611e2e611e258b611e208585612710611de5601054866128b4565b049e8f9c82821115612254575069021e19e0c9bab240000092610d9c611e1793611e0e936128e7565b601254906128b4565b049c8d926128e7565b6128e7565b9a601854612891565b6018556128b4565b04338a52601c8552611e4d60408b209182546128e7565b9055611e576135b4565b331561221157338952600384526040892054908188116121ce5750611e9487611e7f81613563565b92611e8c826004546128e7565b6004556128e7565b338a526003855260408a2055611ea987613563565b604051918252848201528660408201527f8b2a1e1ad5e0578c3dd82494156e985dade827a87c573b5c1c7716a32162ad6460603392a2876040518781527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef853392a360405163a9059cbb60e01b80825233600483015260248201879052919084816044818d885af1801561218f5761219a575b50806120b8575b5083611f8c575b604080513381526020810187905290810187905288907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568908060608101610798565b60085460405191825287166001600160a01b031660048201526024810184905291908190839060449082908b905af180156109175761203c575b505060085460408051338152959091166001600160a01b031660208601528401527ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568927fe76af25749de14614447e2cf967f2a0e48ed157eb8df66ea65baa677f0a35b3e9080606081010390a138808080611f4a565b81819392933d83116120b1575b6120538183612792565b810103126108c9577ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568946120a77fe76af25749de14614447e2cf967f2a0e48ed157eb8df66ea65baa677f0a35b3e936128f4565b5094819250611fc6565b503d612049565b6008546040518381529089166001600160a01b031660048201526024810182905284816044818d885af1801561218f57612136575b5060807fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd918960085416906040519133835287830152604082015260016060820152a138611f43565b8481813d8311612188575b61214b8183612792565b810103126116f6577fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd916121806080926128f4565b5091506120ed565b503d612141565b6040513d8c823e3d90fd5b8481813d83116121c7575b6121af8183612792565b810103126116f6576121c0906128f4565b5038611f3c565b503d6121a5565b84601b6064926040519262461bcd60e51b845260048401528201527f4255524e5f414d4f554e545f455843454544535f42414c414e434500000000006044820152fd5b83601a6064926040519262461bcd60e51b845260048401528201527f4255524e5f46524f4d5f5448455f5a45524f5f414444524553530000000000006044820152fd5b925050509c8d926128e7565b634e487b7160e01b8a526011600452828afd5b8260286084926040519262461bcd60e51b845260048401528201527f436f70696e5661756c743a204e6f7420656e6f7567682077697468647261776160448201527f626c652066756e640000000000000000000000000000000000000000000000006064820152fd5b90508381813d8311612302575b6122f38183612792565b81010312610ee7575138611d72565b503d6122e9565b600490858a600954166040519384809263d0cb3cd160e01b82525afa91821561239d578b9261236c575b5061233e90886128e7565b9061234b600c5483612891565b11611d5057600160ff1b811461226057612366908a03612c32565b38611d50565b9091508581813d8311612396575b6123848183612792565b810103126112f657519061233e612333565b503d61237a565b6040513d8d823e3d90fd5b90508481813d83116123ce575b6123bf8183612792565b810103126116f6575138611d47565b503d6123b5565b60405162461bcd60e51b815260048101859052601e60248201527f436f70696e5661756c743a204e6f7420656e6f7567682062616c616e636500006044820152606490fd5b60405162461bcd60e51b815260048101839052601b60248201527f436f70696e5661756c743a20496e206465706f736974206c6f636b00000000006044820152606490fd5b60405162461bcd60e51b815260048101839052601a60248201527f436f70696e5661756c743a20496e76616c696420616d6f756e740000000000006044820152606490fd5b50346102f45760203660031901126102f45760406020916001600160a01b036124cb6127f4565b168152601c83522054604051908152f35b50346102f45760203660031901126102f45760206125006124fb6127f4565b613581565b6040519015158152f35b50346102f457806003193601126102f457604051908060065491600183811c928185169485156125f9575b60209586861081146125e5578588528794939291879082156125c3575050600114612569575b505061100e92500383612792565b90859250600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b8583106125ab57505061100e9350820101388061255b565b80548389018501528794508693909201918101612593565b925093505061100e94915060ff191682840152151560051b820101388061255b565b634e487b7160e01b83526022600452602483fd5b93607f1693612535565b50346102f45760203660031901126102f4576004356001600160a01b0382541633036102e35762093a808111612665576020817fdcfe963699bbde91146a458b58269c446f371daf2f3fe41a428b7783c286f03f92601355604051908152a180f35b60405162461bcd60e51b815260206004820152601d60248201527f436f70696e5661756c743a204f766572206d6178206475726174696f6e0000006044820152606490fd5b90503461127557602036600319011261127557600435906001600160a01b0383541633036127545750624c4b40811161270f576020817f1f7e24d1f8ac9b596a34502db87778da821b5ac198a6738cfb24ab379b969bfe92601455604051908152a180f35b60405162461bcd60e51b815260206004820152601d60248201527f436f70696e5661756c743a204f766572206d61782062617365206761730000006044820152606490fd5b6282b42960e81b8152600490fd5b67ffffffffffffffff811161152857604052565b6040810190811067ffffffffffffffff82111761152857604052565b90601f8019910116810190811067ffffffffffffffff82111761152857604052565b919082519283825260005b8481106127e0575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016127bf565b600435906001600160a01b0382168203610f4157565b34610f41576000366003190112610f41576020600454604051908152f35b34610f41576020366003190112610f415760206104da6128466127f4565b6001600160a01b0316600052600360205260406000205490565b9181601f84011215610f415782359167ffffffffffffffff8311610f41576020808501948460051b010111610f4157565b9190820180921161289e57565b634e487b7160e01b600052601160045260246000fd5b8181029291811591840414171561289e57565b81156128d1570490565b634e487b7160e01b600052601260045260246000fd5b9190820391821161289e57565b51908115158203610f4157565b600260075414612912576002600755565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8181039291600013801582851316918412161761289e57565b600019811461289e5760010190565b90600d8210156129925760209181520190565b634e487b7160e01b600052602160045260246000fd5b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311610f415760209260051b809284830137010190565b519067ffffffffffffffff82168203610f4157565b604080516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace6004820152906001600160a01b036080836024817f000000000000000000000000000000000000000000000000000000000000000085165afa928315612bb857600093612b18575b50602060049183519283809263313ce56760e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa918215612b0e5750600091612adb575b5091610d9c612ad79260ff670de0b6b3a76400009516906133d9565b0490565b906020823d8211612b06575b81612af460209383612792565b810103126102f4575051610d9c612abb565b3d9150612ae7565b513d6000823e3d90fd5b6080939193813d8211612bb0575b81612b3360809383612792565b81010312611275578251916080830183811067ffffffffffffffff821117612b9c57845281518060070b8103611275578352612b71602083016129e5565b602084015283820151908160030b82036102f457508383015260609081015190820152916020612a71565b634e487b7160e01b82526041600452602482fd5b3d9150612b26565b82513d6000823e3d90fd5b15612bca57565b60405162461bcd60e51b815260206004820152601860248201527f436f70696e5661756c743a204f766572206d61782066656500000000000000006044820152606490fd5b805115612c1c5760200190565b634e487b7160e01b600052603260045260246000fd5b6040805191612c4083612776565b600190818452602090818501928236853760009384612c5e88612c0f565b52855192612c6b84612776565b82845284865b818110612f3457505086518186820152858152612c8d81612776565b612c9685612c0f565b52612ca084612c0f565b5085811315612f1657601954612cb68282612891565b82601a5480921192831593612efa575b50505015612e9057600954875163095ea7b360e01b81526001600160a01b03918216600482015260248101839052908690829060449082908b907f0000000000000000000000000000000000000000000000000000000000000000165af18015612e8657612e4e575b50612d3c90601954612891565b6019555b6001600160a01b036009541693843b156108c957865163608d60eb60e01b815260048101889052975160448901819052869589959094909360648701939192885b818110612e23575050506003198684030160248701528351908184528084019381808460051b83010196019489915b848310612deb57505050505050508383809203925af1918215612de1575050612dd65750565b612ddf90612762565b565b51903d90823e3d90fd5b9285989a5080969950612e0e81929598601f979497198682030187528b516127b4565b990193019301899896938c9896939592612db0565b92948497995082969850612e3b90869295935161297f565b9501910190889795928b97959492612d81565b8581813d8311612e7f575b612e638183612792565b8101031261090c5790612e78612d3c926128f4565b5090612d2f565b503d612e59565b88513d89823e3d90fd5b865162461bcd60e51b815260048101869052602960248201527f436f70696e5661756c743a204f766572206d6178207661756c7420636f6e666960448201527f6773206d617267696e00000000000000000000000000000000000000000000006064820152608490fd5b612f09935090611e2091612891565b600d541015388281612cc6565b80612f2c9160ff1c870390810118601a54612891565b601a55612d40565b6060828288010152018590612c71565b612f5d612f56612f6492601454612891565b5a906128e7565b3a906128b4565b600c810290808204600c149015171561289e57600a612f8391046129fa565b60085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905290919060208160448160007f000000000000000000000000000000000000000000000000000000000000000088165af1801561308a5761302b575b506080907fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd926008541690604051913383526020830152604082015260036060820152a1565b906020823d8211613082575b8161304460209383612792565b81010312610f41577fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd926130796080936128f4565b50925090612fe5565b3d9150613037565b6040513d6000823e3d90fd5b6001600160a01b03600954166040519163012feb5f60e61b83528160048401526000836024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa92831561308a576000936131a9575b50600090815b845183101561313f57613133613139916effffffffffffffffffffffffffffff61010060208760051b8a01015101511690612891565b92612970565b916130fd565b9150925060206004926040519384809263d0cb3cd160e01b82525afa801561308a57600090613176575b6131739250612891565b90565b506020823d82116131a1575b8161318f60209383612792565b81010312610f41576131739151613169565b3d9150613182565b9092503d806000833e6131bc8183612792565b6020828281010312610f4157815167ffffffffffffffff8111610f4157820190808301601f83011215610f415781519067ffffffffffffffff8211611528576040519361320f60208460051b0186612792565b828552602085019382820160206101a0860283010111610f41579360208501945b60206101a08602820101861061324d5750505050505091386130f7565b6101a0868585010312610f41576040516101a0810181811067ffffffffffffffff8211176115285760405286516001600160a01b0381168103610f41578152602087015163ffffffff81168103610f41576020820152604087015161ffff81168103610f415760408201526060808801519062ffffff82168203610f415782015260806132db8189016128f4565b9082015260a06132ec8189016128f4565b9082015260c0808801519060ff82168203610f415782015260e080880151906003821015610f415782015261010080880151906effffffffffffffffffffffffffffff82168203610f41578201526101206133488189016129e5565b9082015261014061335a8189016129e5565b9082015261016061336c8189016129e5565b90820152610180808801519077ffffffffffffffffffffffffffffffffffffffffffffffff82168203610f415782015282526101a09590950194602090910190613230565b9060ff8091169116039060ff821161289e57565b63ffffffff16604d811161289e57600a0a90565b600080825160070b128015613491575b801561347f575b6102f457604082015160030b810390818060030b0361346b575060ff16908160ff841610156000146134475760ff61343b613173949367ffffffffffffffff613441945116946133b1565b166133c5565b906128b4565b60ff61343b6131739467ffffffffffffffff613465945116946133b1565b906128c7565b634e487b7160e01b81526011600452602490fd5b5060fe19604083015160030b126133f0565b5080604083015160030b136133e9565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561308a57600090613507575b6131739150613501613096565b90612891565b6020823d8211613532575b8161351f60209383612792565b810103126102f4575061317390516134f4565b3d9150613512565b6135426134a1565b8061354e575050600090565b61355e61317392600454906128b4565b6128c7565b60045480613572575050600090565b61355e613173926134416134a1565b6001600160a01b038060005416911690811490811561359e575090565b9050600052600160205260ff6040600020541690565b60ff600254166135c057565b60405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606490fdfea164736f6c6343000812000af652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f000000000000000000000000d1b8ba87fe7e8997ac77ab8aca37a95b300dd39c000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bd3726fc0b8411869ae8268345cfff48747f39da0000000000000000000000001e83c1c0be7f384f2cceb0f1c296427884420315000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000ff162c694eaa571f685030649814282ea457f16900000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c