0 txs
9 calls
constructor
No constructor.
functions
arbitrage
viewfunction arbitrage() view returns (address)
banDetails
viewfunction banDetails(address) view returns (uint256 banTimestamp, string banReason, uint8 breakerType, uint256 violationValue)
bankx_address
viewfunction bankx_address() view returns (address)
bankx_to_eth_breaker
viewfunction bankx_to_eth_breaker() view returns (uint256 last_price)
BankXWETH_pool_address
viewfunction BankXWETH_pool_address() view returns (address)
bannedAddresses
viewfunction bannedAddresses(address) view returns (bool)
block_delay
viewfunction block_delay() view returns (uint256)
collateral_pool_address
viewfunction collateral_pool_address() view returns (address)
eth_to_bankx_breaker
viewfunction eth_to_bankx_breaker() view returns (uint256 last_price)
eth_to_xsd_breaker
viewfunction eth_to_xsd_breaker() view returns (uint256 last_price)
getBanStatus
viewfunction getBanStatus(address _address) view returns (bool isBanned, uint256 banTimestamp, string banReason, uint8 breakerType, uint256 violationValue)
getPriceThreshold
viewfunction getPriceThreshold(uint8 breaker_type) view returns (uint256)
getVolumeThreshold
viewfunction getVolumeThreshold(uint8 breaker_type) view returns (uint256)
liquidity_paused
viewfunction liquidity_paused() view returns (bool)
reward_manager_address
viewfunction reward_manager_address() view returns (address)
smartcontract_owner
viewfunction smartcontract_owner() view returns (address)
swap_paused
viewfunction swap_paused() view returns (bool)
treasury
viewfunction treasury() view returns (address)
WETH
viewfunction WETH() view returns (address)
xsd_address
viewfunction xsd_address() view returns (address)
xsd_to_eth_breaker
viewfunction xsd_to_eth_breaker() view returns (uint256 last_price)
XSDWETH_pool_address
viewfunction XSDWETH_pool_address() view returns (address)
creatorAddLiquidityETH
payablefunction creatorAddLiquidityETH(address pool, uint256 deadline) payable
creatorAddLiquidityTokens
nonpayablefunction creatorAddLiquidityTokens(address tokenB, uint256 amountB, uint256 deadline)
initialize
nonpayablefunction initialize(address _bankx_address, address _xsd_address, address _XSDWETH_pool, address _BankXWETH_pool, address _collateral_pool, address _reward_manager_address, address _pid_address, address _treasury, address _smartcontract_owner, address _WETH, uint256 _block_delay)
pauseLiquidity
nonpayablefunction pauseLiquidity()
pauseSwaps
nonpayablefunction pauseSwaps()
renounceOwnership
nonpayablefunction renounceOwnership()
setArbitrageAddress
nonpayablefunction setArbitrageAddress(address _arbitrage)
setBankXAddress
nonpayablefunction setBankXAddress(address _bankx_address)
setBankXPoolAddress
nonpayablefunction setBankXPoolAddress(address _BankXWETH_pool)
setCollateralPool
nonpayablefunction setCollateralPool(address _collateral_pool)
setPIDController
nonpayablefunction setPIDController(address _pid_address)
setRewardManager
nonpayablefunction setRewardManager(address _reward_manager_address)
setSafetyThresholds
nonpayablefunction setSafetyThresholds(uint8 breaker_type, uint256 _price_threshold, uint256 _volume_threshold)
setSmartContractOwner
nonpayablefunction setSmartContractOwner(address _smartcontract_owner)
setXSDAddress
nonpayablefunction setXSDAddress(address _xsd_address)
setXSDPoolAddress
nonpayablefunction setXSDPoolAddress(address _XSDWETH_pool)
swapBankXForETH
nonpayablefunction swapBankXForETH(uint256 amountOut, uint256 amountInMax, uint256 deadline)
swapETHForBankX
payablefunction swapETHForBankX(uint256 amountOut, uint256 deadline) payable
swapETHForXSD
payablefunction swapETHForXSD(uint256 amountOut, uint256 deadline) payable
swapXSDForETH
nonpayablefunction swapXSDForETH(uint256 amountOut, uint256 amountInMax, uint256 deadline)
unbanAddress
nonpayablefunction unbanAddress(address _address)
userAddLiquidityETH
payablefunction userAddLiquidityETH(address pool, uint256 deadline) payable
userRedeemLiquidity
nonpayablefunction userRedeemLiquidity(address pool, uint256 deadline)
events
AddressPermanentlyBanned
event AddressPermanentlyBanned(address indexed violator, string reason, uint8 breakerType, uint256 violationValue, uint256 timestamp)
AddressUnbanned
event AddressUnbanned(address indexed addr, address indexed admin, uint256 timestamp)
BankXSwappedForETH
event BankXSwappedForETH(address indexed user, uint256 bankxAmount, uint256 ethAmount, uint256 burnedAmount, uint256 timestamp)
CreatorLiquidityAdded
event CreatorLiquidityAdded(address indexed pool, address indexed creator, uint256 amount, uint256 timestamp)
ETHSwappedForBankX
event ETHSwappedForBankX(address indexed user, uint256 ethAmount, uint256 bankxAmount, uint256 timestamp)
ETHSwappedForXSD
event ETHSwappedForXSD(address indexed user, uint256 ethAmount, uint256 xsdAmount, uint256 timestamp)
LiquidityRedeemed
event LiquidityRedeemed(address indexed pool, address indexed user, uint256 timestamp)
LiquidityTokensAdded
event LiquidityTokensAdded(address indexed token, address indexed provider, uint256 amount, uint256 timestamp)
RouterInitialized
event RouterInitialized(address indexed bankx_address, address indexed xsd_address, address indexed XSDWETH_pool, address BankXWETH_pool, address collateral_pool, uint256 block_delay)
SafetyThresholdsUpdated
event SafetyThresholdsUpdated(uint8 breaker_type, uint256 price_threshold, uint256 volume_threshold)
SafetyTripped
event SafetyTripped(string breaker_name, string reason, uint256 value)
UserLiquidityAdded
event UserLiquidityAdded(address indexed pool, address indexed user, uint256 amount, uint256 timestamp)
XSDSwappedForETH
event XSDSwappedForETH(address indexed user, uint256 xsdAmount, uint256 ethAmount, uint256 burnedAmount, uint256 timestamp)
errors
No errors.
creation bytecode
0x6080806040523461001b5760016033556147f090816100218239f35b600080fdfe60806040526004361015610030575b361561001957600080fd5b61002e60018060a01b03603454163314613f9c565b005b6000803560e01c80630a738e1a14613d28578063153ee55414613ce25780631971d38614613b0f5780631ba2887814613ad357806328f7975714613a7f5780632bcab36c14613a5657806330a866fc146131fe5780633b20d74e14612f355780634063621314612f17578063414d3a5814612ed25780634404b5bd14612db357806345cd873a14612d775780634e49836b1461237b5780634eb5782d14612306578063558b7dd1146122ca57806355bc87251461228b57806355bf85361461226d57806361d027b31461224457806366751c821461222657806369c8d338146121fd5780636b1fdf0d14611e01578063715018a614611dc957806376abc47314611d8d5780637dd640a014611b1c57806380e4421314611ae05780638293a114146119af57806383b638ee14611986578063846c177e1461195d5780638b2941ca14610fd857806398ee20ab14610f8f5780639d3688f814610f53578063a3a1d7cb14610f2a578063a4619c5914610dfc578063a8f6182e14610dd6578063ad5c464814610dad578063b15f62e71461040d578063bc20d04e146103ef578063bf9e7a12146103c6578063dc0bd2371461039d578063ea88dc4214610374578063ebfb2eea14610316578063ec0702b6146102f3578063efd29421146102d5578063f2d580ff146102815763f34793f51461022b575061000e565b3461027e57602036600319011261027e57604060209160ff61024b613d7a565b61026060018060a01b03603d54163314613fb9565b1661026e6003821115613ff8565b8152604483522054604051908152f35b80fd5b503461027e57602036600319011261027e576001600160a01b036102bf816102a7613d64565b16916102b4831515613f5d565b603d54163314613fb9565b6001600160601b0360a01b603754161760375580f35b503461027e578060031936011261027e576020604854604051908152f35b503461027e578060031936011261027e57602060ff603f54166040519015158152f35b503461027e57602036600319011261027e5760ff61036461033d610338613d64565b614052565b9295916040959194955196879615158752602087015260a0604087015260a0860190613f1d565b9216606084015260808301520390f35b503461027e578060031936011261027e576036546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e57603a546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e57603d546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e576020604754604051908152f35b5061041736613d8a565b61042660ff603f5416156142aa565b604154604080516305f12e7760e11b80825233600483015293926001600160a01b03169181602481855afa8015610da25761046d918791610d83575b5051603e5490614326565b4310159283610d1b575b50506104856104a692614333565b338452604260205261049e60ff60408620541615614373565b4211156140da565b6104ae614465565b604154604051631819c17b60e11b815290602090829060049082906001600160a01b03165afa90811561074c578391610ce4575b50603654604051630240bc6b60e21b815290606090829060049082906001600160a01b03165afa8015610cd957610535849161053c9387908892610ca6575b506001600160701b038091169116346144db565b1015614409565b6000805260456020527fb476eedba4f8c885c12cb813443bb78e21239c276d1586e24afd457c6ea531b7543411610a79575b6046548061076b575b5060465560345482906001600160a01b0316803b15610709578160049160405192838092630d0e30db60e41b825234905af180156106e757610757575b5060345460365460405163a9059cbb60e01b81526001600160a01b03918216600482015234602482015292602092849260449284929091165af1801561074c57839061070d575b6106059150613f9c565b60365482906001600160a01b0316803b15610709578180916064604051809481936336cd320560e11b83528860048401528160248401523360448401525af180156106e7576106f5575b5050604080513481526020810192909252429082015233907fdbea14a25b697486253511e5c8746bbc4140225b6fcb9fec63287b737fea27379080606081015b0390a2600160335560415481906001600160a01b0316803b156106f25781809160246040518094819363bb82130b60e01b83523360048401525af180156106e7576106d75750f35b6106e090613df4565b61027e5780f35b6040513d84823e3d90fd5b50fd5b6106fe90613df4565b61070957813861064f565b5080fd5b506020813d602011610744575b8161072760209383613e58565b810103126107405761073b610605916141a2565b6105fb565b8280fd5b3d915061071a565b6040513d85823e3d90fd5b61076090613df4565b6107095781386105b4565b808210610a695761077c818361464c565b905b61271091828102928184041490151715610a535761079b916144bb565b6000805260446020527fff2df0515866d0e5037a04274635c66d5b7f91cd9f7cebf4fde878af347aa26954811115610577573360005260426020526040600020600160ff198254161790556040516107f281613e07565b42815260405161080181613e22565b6018815260008051602061477b83398151915260208201526020820152600060408201528160608201523360005260436020526040600020908051825560208101518051906001600160401b038211610a3d576108616001850154613dba565b601f81116109fd575b50602090601f831160011461097857926108b38360039460609460008051602061479b83398151915299989760009261096d575b50508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526018608082015260008051602061477b83398151915260a08201526000602082015281604082015242606082015260008051602061475b83398151915260c03392a26040610926614626565b9161093b825193606085526060850190613f1d565b906e283934b1b2902232bb34b0ba34b7b760891b6020858403938482880152600f81520152828401520190a138610577565b01519050388061089e565b906001850160005260206000209160005b601f19851681106109e557508360609360008051602061479b83398151915298979693600193600397601f198116106109cd575b505050811b0160018501556108b9565b015160001983881b60f8161c191690553880806109bd565b91926020600181928685015181550194019201610989565b610a2d90600186016000526020600020601f850160051c81019160208610610a33575b601f0160051c019061403b565b3861086a565b9091508190610a20565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b610a73828261464c565b9061077e565b919033600052604260205260406000209260019360ff19908582825416179055604051610aa581613e07565b428152604051610ab481613e22565b6019815260008051602061473b833981519152928360208301526020830191825260408301906000825260608401923484523360005260436020526040600020945185558985019051998a51906001600160401b038211610a3d57610b198354613dba565b601f8111610c74575b50602090601f8311600114610c0c57509080610b5c92600398999a9b9c9d60009261096d5750508160011b916000199060031b1c19161790565b90555b60ff60028601925116908254161790555191015560405190608082526019608083015260a08201526000602082015234604082015242606082015260008051602061475b83398151915260c03392a260008051602061479b833981519152610bc5614626565b6040610bdb815192606084526060840190613f1d565b6e159bdb1d5b5948115e18d959591959608a1b6020848303928382870152600f8152015234828401520190a161056e565b9190601f198216908460005260206000209160005b818110610c5e57509d8360039a9b9c9d9e9f10610c46575b505050811b019055610b5f565b0151600019838a1b60f8161c19169055388080610c39565b8f83015184559285019260209283019201610c21565b610ca090846000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b38610b22565b9050610cca915060603d606011610cd2575b610cc28183613e58565b8101906143d3565b509038610521565b503d610cb8565b6040513d86823e3d90fd5b90506020813d602011610d13575b81610cff60209383613e58565b81010312610d0e5751386104e2565b600080fd5b3d9150610cf2565b6040919350602482518095819382523360048301525afa8015610cd9576020610485916104a6948791610d54575b500151151592610477565b610d76915060403d604011610d7c575b610d6e8183613e58565b8101906142e6565b38610d49565b503d610d64565b610d9c915060403d604011610d7c57610d6e8183613e58565b38610462565b6040513d88823e3d90fd5b503461027e578060031936011261027e576034546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e57602060ff603f5460081c166040519015158152f35b503461027e57606036600319011261027e57610e16613d7a565b60243560ff60443592610e3460018060a01b03603d54163314613fb9565b16610e426003821115613ff8565b8115610ee5578215610ea0577f09e40245f1f5b6614985cbea1480e7c6b95cca34859db74c8931700beea31e22926060928286526044602052806040872055604560205281604087205560405192835260208301526040820152a180f35b60405162461bcd60e51b815260206004820152601c60248201527f566f6c756d65207468726573686f6c64206d757374206265203e2030000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527f5072696365207468726573686f6c64206d757374206265203e203000000000006044820152606490fd5b503461027e578060031936011261027e576035546040516001600160a01b039091168152602090f35b503461027e57602036600319011261027e576001600160a01b03610f79816102a7613d64565b6001600160601b0360a01b604154161760415580f35b503461027e57602036600319011261027e57610fa9613d64565b603d54906001600160a01b0390610fc33383851614613fb9565b16906001600160601b0360a01b1617603d5580f35b503461027e57610fe736613da0565b610ff660ff603f5416156142aa565b604154604080516305f12e7760e11b80825233600483015293926001600160a01b03169181602481855afa80156119525761103c918891610d83575051603e5490614326565b43101592836118ef575b505061105461106d92614333565b338552604260205261049e60ff60408720541615614373565b611075614465565b603754604051630240bc6b60e21b815290606090829060049082906001600160a01b03165afa8015610cd9576110c783916110ce93879088926118cc575b506001600160701b038091169116866144db565b1115614659565b60415460405163f195a3ab60e01b815290602090829060049082906001600160a01b03165afa908115610cd957849161189a575b50600360005260456020527fa00cd725958365f67c8fb506a84ce041d17da3d1c6ccea666854800f4fb4a1a7548211611657575b6049548061138c575b50604955603a546037546111639183916001600160a01b03908116913391166141af565b60375483906001600160a01b0316803b15610709578180916064604051809481936336cd320560e11b83528160048401528960248401523060448401525af180156106e757611378575b506034546001600160a01b0316803b1561070957818091602460405180948193632e1a7d4d60e01b83528960048401525af180156106e757611364575b50506111f682336146b1565b603a546040516318160ddd60e01b8152919084906001600160a01b0316602084600481845afa9384156106e757829461132d575b50611239600a8604809561464c565b6040516351e238e360e01b815290602082600481865afa918215610cd95784926112f6575b50116112ae575b50506040805191825260208201939093529182015242606082015233907ff67f238b2e6a48f4e27e7353072901e2c1c6233077e73527ebd5136d3b68594390806080810161068f565b803b15610709578180916024604051809481936306e0bca360e41b83528960048401525af180156106e75715611265576112e790613df4565b6112f2578338611265565b8380fd5b935090506020833d602011611325575b8161131360209383613e58565b81010312610d0e57869251903861125e565b3d9150611306565b915092506020813d60201161135c575b8161134a60209383613e58565b81010312610d0e57849051923861122a565b3d915061133d565b61136d90613df4565b6107405782386111ea565b61138190613df4565b6107405782386111ad565b8082106116475761139d818361464c565b905b61271091828102928184041490151715610a53576113bc916144bb565b600360005260446020527fbb4c205d2fd5d5c0ff4ab723a86b46f24bafcc7dfe57b1f587a8c4b4e7fe20145481111561113f573360005260426020526040600020600160ff1982541617905560405161141481613e07565b4281526040519061142482613e22565b6018825260008051602061477b8339815191526020830152602081019182526003604082015282606082015233600052604360205260406000209181518355518051906001600160401b038211610a3d576114826001850154613dba565b601f8111611612575b50602090601f831160011461158d57926114d38360039460609460008051602061479b83398151915299989760009261096d5750508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526018608082015260008051602061477b83398151915260a08201526003602082015281604082015242606082015260008051602061475b83398151915260c03392a260406115466145fe565b9161155b825193606085526060850190613f1d565b906e283934b1b2902232bb34b0ba34b7b760891b6020858403938482880152600f81520152828401520190a13861113f565b906001850160005260206000209160005b601f19851681106115fa57508360609360008051602061479b83398151915298979693600193600397601f198116106115e2575b505050811b0160018501556114d9565b015160001983881b60f8161c191690553880806115d2565b9192602060018192868501518155019401920161159e565b61164190600186016000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b3861148b565b611651828261464c565b9061139f565b3360005260426020526040600020600160ff1982541617905560405161167c81613e07565b4281526040519061168c82613e22565b6019825260008051602061473b8339815191526020830152602081019182526003604082015283606082015233600052604360205260406000209181518355518051906001600160401b038211610a3d576116ea6001850154613dba565b601f8111611865575b50602090601f83116001146117f157826060936003959361172a9360009261096d5750508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526019608082015260008051602061473b83398151915260a08201526003602082015282604082015242606082015260008051602061475b83398151915260c03392a260008051602061479b8339815191526117aa6145fe565b60406117c0815192606084526060840190613f1d565b6e159bdb1d5b5948115e18d959591959608a1b6020848303928382870152600f8152015285828401520190a1611136565b906001850160005260206000209160005b601f198516811061184d5750926003949260019260609583601f19811610611835575b505050811b016001850155611730565b015160001983881b60f8161c19169055388080611825565b91926020600181928685015181550194019201611802565b61189490600186016000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b386116f3565b90506020813d6020116118c4575b816118b560209383613e58565b81010312610d0e575138611102565b3d91506118a8565b90506118e7915060603d606011610cd257610cc28183613e58565b5090386110b3565b6040919350602482518095819382523360048301525afa80156119475760206110549161106d948891611928575b500151151592611046565b611941915060403d604011610d7c57610d6e8183613e58565b3861191d565b6040513d87823e3d90fd5b6040513d89823e3d90fd5b503461027e578060031936011261027e576038546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e576037546040516001600160a01b039091168152602090f35b503461027e57602080600319360112610709576119ca613d64565b603d546001600160a01b0391906119e49083163314613fb9565b168083526042825260ff60408420541615611aa657808352604282526040832060ff19815416905560438252826003604082208281558260018201611a298154613dba565b80611a66575b5050600282015501557fc8d18894b8e8903a4010a318bebfde50d1c264ea35f1063350406f0bbd69884b604051924284523393a380f35b601f8111600114611a80575060009150555b823880611a2f565b90806000918452611a9f601f8a8620940160051c84016001850161403b565b5555611a78565b60405162461bcd60e51b81526004810183905260126024820152711059191c995cdcc81b9bdd0818985b9b995960721b6044820152606490fd5b503461027e57602036600319011261027e576001600160a01b03611b06816102a7613d64565b6001600160601b0360a01b603a541617603a5580f35b50604036600319011261027e57611b31613d64565b611b3f4260243510156140da565b603c546001600160a01b039190821633148015611d80575b611b6090613fb9565b8160365416918082169283148015611d73575b15611d2e578391611b85341515614117565b8160345416803b156112f2578360049160405192838092630d0e30db60e41b825234905af1908115610cd9578491611d1a575b5060345460405163a9059cbb60e01b81526001600160a01b039390931660048401523460248401526020918391604491839187165af1801561074c578390611ce0575b611c059150613f9c565b60365481168303611c8b5760405416803b1561070957818091600460405180948193632db3f04960e11b83525af180156106e757611c77575b50505b604051903482524260208301527fee547ef84acd5569aea37f0f8f332b9c96a3db7e0f8158cd9330ca200004ec7760403393a380f35b611c8090613df4565b610709578138611c3e565b80603754168314611c9e575b5050611c41565b60405416803b156107095781809160046040518094819363e09d3c3f60e01b83525af180156106e75715611c9757611cd590613df4565b610709578138611c97565b506020813d8211611d12575b81611cf960209383613e58565b8101031261074057611d0d611c05916141a2565b611bfb565b3d9150611cec565b611d2390613df4565b610740578238611bb8565b60405162461bcd60e51b815260206004820152601760248201527f506f6f6c206164647265737320697320696e76616c69640000000000000000006044820152606490fd5b5080603754168314611b73565b50603d5482163314611b57565b503461027e57602036600319011261027e576001600160a01b03611db3816102a7613d64565b6001600160601b0360a01b603954161760395580f35b503461027e578060031936011261027e57603d54611df1336001600160a01b03831614613fb9565b6001600160a01b031916603d5580f35b503461027e5761016036600319011261027e57611e1c613d64565b6024356001600160a01b0381169003610d0e576044356001600160a01b0381168103610d0e576064356001600160a01b0381169003610d0e576084356001600160a01b0381169003610d0e5760a435916001600160a01b0383168303610d0e5760c435926001600160a01b0384168403610d0e5760e4356001600160a01b0381168103610d0e5761010435906001600160a01b0382168203610d0e5761012435906001600160a01b0382168203610d0e5787549660ff8860081c1697881598896121f4575b80156121e9575b1561218d578861217c575b506001600160a01b038616151580612168575b80612156575b80612142575b8061212e575b8061211c575b8061210a575b806120f8575b806120e6575b611f3990613f5d565b603a80546001600160a01b03199081166001600160a01b03988916908117909255603b80548216602435808b169182179092556036805484169b8b169b8c1790556037805484166064358c169081179091556035805485166084358d169081179091556038805486169b8d169b8c179055604080548616909b178b55604180548616978d1697909717909655603f805462010000600160b01b03191660109490941b62010000600160b01b031693909317909255603c80548416968b1696909617909555603480548316968a1696909617909555603d8054909116959097169490941790955561014435603e81905588805260446020818152868b206103e8908190556045808352888d20683635c9adc5dea000009081905560018e52848452898e20839055818452898e2081905560028e52848452898e20839055818452898e2081905560038e52938352888d20919091558152868b209190915585519384528301959095529281019390935290917fe169423c07ce9b87a95dccb6d81a081d6723646bf70cce1afbb8ae66b5674f069080606081010390a46120da5780f35b805461ff001916815580f35b506001600160a01b0383161515611f30565b506001600160a01b0384161515611f2a565b506001600160a01b0381161515611f24565b506001600160a01b0382161515611f1e565b506084356001600160a01b03161515611f18565b506064356001600160a01b03161515611f12565b506001600160a01b0387161515611f0c565b506024356001600160a01b03161515611f06565b61ffff191661010117895538611ef3565b60405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608490fd5b5060ff811615611ee8565b50303b15611ee1565b503461027e578060031936011261027e576039546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e576020603e54604051908152f35b503461027e578060031936011261027e57603c546040516001600160a01b039091168152602090f35b503461027e578060031936011261027e576020604654604051908152f35b503461027e57602036600319011261027e5760209060ff906040906001600160a01b036122b6613d64565b168152604284522054166040519015158152f35b503461027e578060031936011261027e576122f060018060a01b03603d54163314613fb9565b603f5460ff80821615169060ff191617603f5580f35b503461027e57602036600319011261027e576040906001600160a01b0361232b613d64565b168152604360205220805461234260018301613e79565b91600360ff60028301541691015461236c6040519485948552608060208601526080850190613f1d565b91604084015260608301520390f35b503461027e5761238a36613da0565b61239c60ff603f9493945416156142aa565b604154604080516305f12e7760e11b80825233600483015293926001600160a01b03169181602481855afa8015611952576123e2918891610d83575051603e5490614326565b4310159283612d1f575b50506110546123fa92614333565b612402614465565b603654604051630240bc6b60e21b815290606090829060049082906001600160a01b03165afa8015610cd9576110c784916124549387908892612cfc575b506001600160701b038091169116856144db565b604154604051631819c17b60e11b815290602090829060049082906001600160a01b03165afa908115610cd9578491612cca575b50600160005260456020527fcf23cc7089fed28926e3cca2bfa1d6811ea4ce7e8c64119a740cf101b353080f548311612a87575b604754806127bb575b50604755603b546036546124e99184916001600160a01b03908116913391166141af565b60365483906001600160a01b0316803b15610709578180916064604051809481936336cd320560e11b83528160048401528860248401523060448401525af180156106e7576127a7575b506034546001600160a01b0316803b1561070957818091602460405180948193632e1a7d4d60e01b83528860048401525af180156106e757612793575b505061257c81336146b1565b603f546040516318160ddd60e01b815284916020908290600490829060101c6001600160a01b03165afa9081156106e757829161275e575b50603554604051630b027ff760e21b81529260209184916004918391906001600160a01b03165af1908115611947578591612728575b6125f4925061464c565b600a820410806126b2575b612653575b604080518381526020810192909252600a9092049181019190915242606082015233907f20ccf8cc9564af3d889d78358a32540ec3ee0b12e7b9f7b848deb91a1cb47d7290806080810161068f565b603f54839060101c6001600160a01b0316803b1561070957818091602460405180948193632703a31160e01b8352600a8a0460048401525af180156106e75761269e575b5050612604565b6126a790613df4565b610740578238612697565b50604154604051631945f38960e31b815290602090829060049082906001600160a01b03165afa908115610cd95784916126ee575b50156125ff565b90506020813d602011612720575b8161270960209383613e58565b810103126112f25761271a906141a2565b386126e7565b3d91506126fc565b90506020823d602011612756575b8161274360209383613e58565b81010312610d0e576125f49151906125ea565b3d9150612736565b9150506020813d60201161278b575b8161277a60209383613e58565b81010312610d0e57839051386125b4565b3d915061276d565b61279c90613df4565b610740578238612570565b6127b090613df4565b610740578238612533565b808210612a77576127cc818361464c565b905b61271091828102928184041490151715610a53576127eb916144bb565b600160005260446020527fcdad79d33f4de49584ed9b39ca3d8a53cc10e49c033c5359244d3129cc2efd3d548111156124c5573360005260426020526040600020600160ff1982541617905560405161284381613e07565b42815260405161285281613e22565b6018815260008051602061477b83398151915260208201526020820152600160408201528160608201523360005260436020526040600020908051825560208101518051906001600160401b038211610a3d576128b26001850154613dba565b601f8111612a42575b50602090601f83116001146129bd57926129038360039460609460008051602061479b83398151915299989760009261096d5750508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526018608082015260008051602061477b83398151915260a08201526001602082015281604082015242606082015260008051602061475b83398151915260c03392a260406129766145d8565b9161298b825193606085526060850190613f1d565b906e283934b1b2902232bb34b0ba34b7b760891b6020858403938482880152600f81520152828401520190a1386124c5565b906001850160005260206000209160005b601f1985168110612a2a57508360609360008051602061479b83398151915298979693600193600397601f19811610612a12575b505050811b016001850155612909565b015160001983881b60f8161c19169055388080612a02565b919260206001819286850151815501940192016129ce565b612a7190600186016000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b386128bb565b612a81828261464c565b906127ce565b3360005260426020526040600020600160ff19825416179055604051612aac81613e07565b42815260405190612abc82613e22565b6019825260008051602061473b8339815191526020830152602081019182526001604082015284606082015233600052604360205260406000209181518355518051906001600160401b038211610a3d57612b1a6001850154613dba565b601f8111612c95575b50602090601f8311600114612c21578260609360039593612b5a9360009261096d5750508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526019608082015260008051602061473b83398151915260a08201526001602082015283604082015242606082015260008051602061475b83398151915260c03392a260008051602061479b833981519152612bda6145d8565b6040612bf0815192606084526060840190613f1d565b6e159bdb1d5b5948115e18d959591959608a1b6020848303928382870152600f8152015286828401520190a16124bc565b906001850160005260206000209160005b601f1985168110612c7d5750926003949260019260609583601f19811610612c65575b505050811b016001850155612b60565b015160001983881b60f8161c19169055388080612c55565b91926020600181928685015181550194019201612c32565b612cc490600186016000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b38612b23565b90506020813d602011612cf4575b81612ce560209383613e58565b81010312610d0e575138612488565b3d9150612cd8565b9050612d17915060603d606011610cd257610cc28183613e58565b509038612440565b6040919350602482518095819382523360048301525afa8015611947576020611054916123fa948891612d58575b5001511515926123ec565b612d71915060403d604011610d7c57610d6e8183613e58565b38612d4d565b503461027e57602036600319011261027e576001600160a01b03612d9d816102a7613d64565b6001600160601b0360a01b603654161760365580f35b503461027e57604036600319011261027e57612dcd613d64565b612ddb4260243510156140da565b6036546001600160a01b039182169190811682148015612ec5575b8015612eb8575b15612e8457829060405416803b1561070957818091604460405180948193631f96188760e01b83528860048401523360248401525af180156106e757612e70575b5050604051904282527f41d212f098fd63f0e078924c5e829f71e906a7706701264f03b45c4cf6431a2460203393a380f35b612e7990613df4565b610709578138612e3e565b60405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081c1bdbdb60a21b6044820152606490fd5b5080603554168214612dfd565b5080603754168214612df6565b503461027e578060031936011261027e57612ef860018060a01b03603d54163314613fb9565b603f5461ff0060ff8260081c161560081b169061ff00191617603f5580f35b503461027e578060031936011261027e576020604954604051908152f35b50604036600319011261027e57612f4a613d64565b612f584260243510156140da565b6036546001600160a01b0382811692918116831480156131f1575b80156131e4575b1561319f578391612f9360ff603f5460081c16156142aa565b8160345416803b156112f2578360049160405192838092630d0e30db60e41b825234905af1908115610cd957849161318b575b5060345460405163a9059cbb60e01b81526001600160a01b039390931660048401523460248401526020918391604491839187165af1801561074c578390613151575b6130139150613f9c565b603554811683036130a85760405416803b1561070957604051630cf8438960e31b81523360048201523460248201529082908290604490829084905af180156106e757613094575b50505b604051903482524260208301527f658a302ab407d4aecbe64aba60a3dd4f5cfa27da49fc6743d454a575ada3bbb960403393a380f35b61309d90613df4565b61070957813861305b565b603654811683036131025760405416803b1561070957818091602460405180948193630472e8c560e01b83523360048401525af180156106e7576130ee575b505061305e565b6130f790613df4565b6107095781386130e7565b8060375416831461311457505061305e565b60405416803b1561070957818091602460405180948193631da8fae360e21b83523360048401525af180156106e757156130e7576130f790613df4565b506020813d8211613183575b8161316a60209383613e58565b810103126107405761317e613013916141a2565b613009565b3d915061315d565b61319490613df4565b610740578238612fc6565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c2061646472657373206973206e6f742076616c6964000000000000006044820152606490fd5b5080603554168314612f7a565b5080603754168314612f73565b5061320836613d8a565b61321760ff603f5416156142aa565b604154604080516305f12e7760e11b80825233600483015293926001600160a01b03169181602481855afa8015610da25761325d918791610d83575051603e5490614326565b43101592836139fe575b505061048561327592614333565b61327d614465565b603754604051630240bc6b60e21b815290606090829060049082906001600160a01b03165afa801561074c5761053583916132ce9386908792610ca657506001600160701b038091169116346144db565b60415460405163f195a3ab60e01b815290602090829060049082906001600160a01b03165afa90811561074c5783916139cc575b50600260005260456020527f2d3d1c9680bbdec853995b6859c48c938bd9c76a8e98a938491cbf18b6665bed543411613789575b604854806134be575b5060485560345482906001600160a01b0316803b15610709578160049160405192838092630d0e30db60e41b825234905af180156106e7576134aa575b5060345460375460405163a9059cbb60e01b81526001600160a01b03918216600482015234602482015292602092849260449284929091165af1801561074c57839061346f575b6133cd9150613f9c565b60375482906001600160a01b0316803b15610709578180916064604051809481936336cd320560e11b83528860048401528160248401523360448401525af180156106e75761345b575b5050604080513481526020810192909252429082015233907f16f00ff251fd87e0d72ad7507749a14021b624e5529947135f0c4c3608ad3c7090806060810161068f565b61346490613df4565b610709578138613417565b506020813d6020116134a2575b8161348960209383613e58565b810103126107405761349d6133cd916141a2565b6133c3565b3d915061347c565b6134b390613df4565b61070957813861337c565b808210613779576134cf818361464c565b905b61271091828102928184041490151715610a53576134ee916144bb565b600260005260446020527f698f965f71a6f5c9afb45442df7ff01640d7295288618bfa1177b6c22c0c05db5481111561333f573360005260426020526040600020600160ff1982541617905560405161354681613e07565b4281526040519061355682613e22565b6018825260008051602061477b8339815191526020830152602081019182526002604082015282606082015233600052604360205260406000209181518355518051906001600160401b038211610a3d576135b46001850154613dba565b601f8111613744575b50602090601f83116001146136bf57926136058360039460609460008051602061479b83398151915299989760009261096d5750508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526018608082015260008051602061477b83398151915260a08201526002602082015281604082015242606082015260008051602061475b83398151915260c03392a260406136786145b0565b9161368d825193606085526060850190613f1d565b906e283934b1b2902232bb34b0ba34b7b760891b6020858403938482880152600f81520152828401520190a13861333f565b906001850160005260206000209160005b601f198516811061372c57508360609360008051602061479b83398151915298979693600193600397601f19811610613714575b505050811b01600185015561360b565b015160001983881b60f8161c19169055388080613704565b919260206001819286850151815501940192016136d0565b61377390600186016000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b386135bd565b613783828261464c565b906134d1565b3360005260426020526040600020600160ff198254161790556040516137ae81613e07565b428152604051906137be82613e22565b6019825260008051602061473b8339815191526020830152602081019182526002604082015234606082015233600052604360205260406000209181518355518051906001600160401b038211610a3d5761381c6001850154613dba565b601f8111613997575b50602090601f831160011461392357826060936003959361385c9360009261096d5750508160011b916000199060031b1c19161790565b60018501555b6002840160ff60408301511660ff198254161790550151910155604051608081526019608082015260008051602061473b83398151915260a08201526002602082015234604082015242606082015260008051602061475b83398151915260c03392a260008051602061479b8339815191526138dc6145b0565b60406138f2815192606084526060840190613f1d565b6e159bdb1d5b5948115e18d959591959608a1b6020848303928382870152600f8152015234828401520190a1613336565b906001850160005260206000209160005b601f198516811061397f5750926003949260019260609583601f19811610613967575b505050811b016001850155613862565b015160001983881b60f8161c19169055388080613957565b91926020600181928685015181550194019201613934565b6139c690600186016000526020600020601f850160051c81019160208610610a3357601f0160051c019061403b565b38613825565b90506020813d6020116139f6575b816139e760209383613e58565b81010312610d0e575138613302565b3d91506139da565b6040919350602482518095819382523360048301525afa8015610cd957602061048591613275948791613a37575b500151151592613267565b613a50915060403d604011610d7c57610d6e8183613e58565b38613a2c565b503461027e578060031936011261027e57603b546040516001600160a01b039091168152602090f35b503461027e57602036600319011261027e57604060209160ff613aa0613d7a565b613ab560018060a01b03603d54163314613fb9565b16613ac36003821115613ff8565b8152604583522054604051908152f35b503461027e57602036600319011261027e576001600160a01b03613af9816102a7613d64565b6001600160601b0360a01b603554161760355580f35b503461027e57606036600319011261027e57613b29613d64565b60243590613b3b4260443510156140da565b603c546001600160a01b039190821633148015613cd5575b613b5c90613fb9565b81603b54169180821692831491828015613cc8575b15613c8357848693613b84821515614117565b15613c1457613b9a9183603654169033906141af565b60405416803b1561070957818091600460405180948193632db3f04960e11b83525af180156106e757613c00575b50505b6040519182524260208301527fcd7ce2a9f878df7d75181e9a0146adc980ed0144388cfc0aa4affb228ee53f6860403393a380f35b613c0990613df4565b610740578238613bc8565b82603a54168514613c29575b50505050613bcb565b613c3a9183603754169033906141af565b60405416803b1561070957819060046040518094819363e09d3c3f60e01b83525af18015610cd957613c70575b80849184613c20565b613c7c90939193613df4565b9138613c67565b60405162461bcd60e51b815260206004820152601860248201527f746f6b656e206164647265737320697320696e76616c696400000000000000006044820152606490fd5b5081603a54168414613b71565b50603d5482163314613b53565b503461027e57602036600319011261027e576001600160a01b03613d08816102a7613d64565b6001600160601b0360a01b81816038541617603855604054161760405580f35b503461027e57602036600319011261027e576001600160a01b03613d4e816102a7613d64565b6001600160601b0360a01b603b541617603b5580f35b600435906001600160a01b0382168203610d0e57565b6004359060ff82168203610d0e57565b6040906003190112610d0e576004359060243590565b6060906003190112610d0e57600435906024359060443590565b90600182811c92168015613dea575b6020831014613dd457565b634e487b7160e01b600052602260045260246000fd5b91607f1691613dc9565b6001600160401b038111610a3d57604052565b608081019081106001600160401b03821117610a3d57604052565b604081019081106001600160401b03821117610a3d57604052565b602081019081106001600160401b03821117610a3d57604052565b90601f801991011681019081106001600160401b03821117610a3d57604052565b90604051918260008254613e8c81613dba565b908184526020946001918281169081600014613efb5750600114613ebc575b505050613eba92500383613e58565b565b600090815285812095935091905b818310613ee3575050613eba9350820101388080613eab565b85548884018501529485019487945091830191613eca565b92505050613eba94925060ff191682840152151560051b820101388080613eab565b919082519283825260005b848110613f49575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613f28565b15613f6457565b60405162461bcd60e51b815260206004820152601060248201526f524f555445523a5a45524f434845434b60801b6044820152606490fd5b15613fa357565b634e487b7160e01b600052600160045260246000fd5b15613fc057565b60405162461bcd60e51b815260206004820152601060248201526f2927aaaa22a91d2327a92124a22222a760811b6044820152606490fd5b15613fff57565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420627265616b6572207479706560601b6044820152606490fd5b818110614046575050565b6000815560010161403b565b6001600160a01b031660009081526042602052604081205460ff166140885780918160405161408081613e3d565b818152918190565b6040906043602052206040519061409e82613e07565b805482526140ae60018201613e79565b91826020820152600360ff60028401541692836040840152015490816060820152519360019493929190565b156140e157565b60405162461bcd60e51b815260206004820152600e60248201526d1493d55511548e9156141254915160921b6044820152606490fd5b1561411e57565b60405162461bcd60e51b815260206004820152601b60248201527f506c6561736520656e74657220612076616c696420616d6f756e7400000000006044820152606490fd5b3d1561419d573d906001600160401b038211610a3d5760405191614191601f8201601f191660200184613e58565b82523d6000602084013e565b606090565b51908115158203610d0e57565b6040516323b872dd60e01b602082019081526001600160a01b0393841660248301529390921660448301526064808301949094529281526000928392909183906141fa608482613e58565b51925af1614206614163565b81614273575b501561421457565b60405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b6064820152608490fd5b8051801592508215614288575b50503861420c565b8192509060209181010312610d0e5760206142a391016141a2565b3880614280565b156142b157565b60405162461bcd60e51b815260206004820152600d60248201526c1493d55511548e94105554d151609a1b6044820152606490fd5b90816040910312610d0e5760405190604082018281106001600160401b03821117610a3d576040528051825261431e906020016141a2565b602082015290565b91908201809211610a5357565b1561433a57565b60405162461bcd60e51b8152602060048201526011602482015270524f555445523a424c4f434b44454c415960781b6044820152606490fd5b1561437a57565b60405162461bcd60e51b815260206004820152601d60248201527f41646472657373206973207065726d616e656e746c792062616e6e65640000006044820152606490fd5b51906001600160701b0382168203610d0e57565b90816060910312610d0e576143e7816143bf565b9160406143f6602084016143bf565b92015163ffffffff81168103610d0e5790565b1561441057565b60405162461bcd60e51b815260206004820152602760248201527f42616e6b58526f757465723a20494e53554646494349454e545f4f555450555460448201526617d05353d5539560ca1b6064820152608490fd5b600260335414614476576002603355565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b81156144c5570490565b634e487b7160e01b600052601260045260246000fd5b9182156145615781151580614558575b156145075780830292830403610a5357614504916144bb565b90565b60405162461bcd60e51b8152602060048201526024808201527f42616e6b584c6962726172793a20494e53554646494349454e545f4c495155496044820152634449545960e01b6064820152608490fd5b508015156144eb565b60405162461bcd60e51b815260206004820152602160248201527f42616e6b584c6962726172793a20494e53554646494349454e545f414d4f554e6044820152601560fa1b6064820152608490fd5b6040516145bc81613e22565b600c81526b08aa89040e8de4084c2dcd6b60a31b602082015290565b6040516145e481613e22565b600a8152690b0a68840e8de408aa8960b31b602082015290565b60405161460a81613e22565b600c81526b084c2dcd6b040e8de408aa8960a31b602082015290565b60405161463281613e22565b600a815269115512081d1bc81614d160b21b602082015290565b91908203918211610a5357565b1561466057565b60405162461bcd60e51b815260206004820152602360248201527f42616e6b58526f757465723a204558434553534956455f494e5055545f414d4f60448201526215539560ea1b6064820152608490fd5b60008080938193826040516146c581613e3d565b525af16146d0614163565b50156146d857565b60405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608490fdfe566f6c756d65207468726573686f6c642065786365656465640000000000000066e6b2c106b92520102716ff3baca2e3d8437a0a57220b78cde6a792f692f01a507269636520646576696174696f6e20657863656564656400000000000000003a5cdc4053089aeb192fb2d849c888bb95ba2354201209201d491ec1f33a3302a26469706673582212208f2edbc4fbb4a03e79a53e35e404e02dada0c6e51686fa92ad38f1342dbd795164736f6c63430008150033