20M+ users trust MoonPay worldwide. Checkout with your preferred payment method.
Ready to onboard to Ethereum? With MetaMask Portfolio, you're in control.
Get up to 0.5% cashback per purchase and receive daily interest.
Ready to simplify your web3 experience? Try the all-in-one web3 app trusted by millions worldwide.
Purchase 100+ cryptocurrencies instantly, with Visa/Mastercard, Google/Apple Pay, and a variety of other funding methods.
Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
9 years old Licensed Crypto Casino, Instant Withdraw 24/7, 6000+ Slots available, Paypal Deposit, Instant Live Support 24/7, 30% Rakeback.
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Play 100s of games anonymously with all major cryptos. Join CryptoWins & start winning!
Anonymous play on awesome games - sign up now for 25 free jackpot spins - worth $100s!
Overview
ETH Balance
Eth Value
$15,573.16 (@ $2,364.49/ETH)Token Holdings
Could not find any matches!
- ERC-20 Tokens (27)1.307 HEXHEX (HEX)$0.00@0.00159,477,682.1953719 L2Leverj Gluon (L2)$31,766.82@0.00341 MREPMIGRATE REP (MREP)2.02020202 STTScatter.cx (STT)$0.00@0.008,954.35597316 DAIDai Stableco... (DAI)$8,948.67@0.9994745.4946 USDCUSDC (USDC)$745.04@0.99940.0859 WBTCWrapped BTC (WBTC)$4,988.73@58,076.0048,000 Earn $TUSD airdrops at https://www.tenorusd.org$ tenorusd.o... (Earn $...)4.75ERC20 ***1,000,000 AfroXAfroDex$0.01@0.0088,888 BEBbetbeb (BEB)3 cUSDcUSD Currency888,888 KICKKickToken73,901.79130001 LEVLeverj77.2017 FEELeverj FEE T... (FEE)32,000 MNEMinereum32,000 MNEMinereum2,357.29438943 PERLPerlin99,999ERC20 ***177,776 betbeb.com启动公链 (betbeb...)1.2 TokenERC-20 TOKEN*[Suspicious]1.7 TokenERC-20 TOKEN*[Suspicious]0.7 TokenERC-20 TOKEN*[Suspicious]9,000 TokenERC-20 TOKEN*[Suspicious]441 TokenERC-20 TOKEN*[Unsafe]16,888 TokenERC-20 TOKEN*[Spam]856,420,144,564 TokenERC-20 TOKEN*[Spam]NFT Tokens (16)claim rewards on apyusd.netapyusd.netERC-1155nft-dai.comDAI Mysterybox NFTERC-1155ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]
More Info
Private Name Tags
ContractCreator
- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 2,864 transactions
Transaction Hash MethodBlockFromToWithdraw 20542069 2024-08-16 15:24:23 27 days ago 1723821863 IN 0 ETH$0.00 0.00022368 2.22279719 Withdraw 19814062 2024-05-06 22:36:23 129 days ago 1715034983 IN 0 ETH$0.00 0.00062205 4.67261243 Withdraw 19814060 2024-05-06 22:35:59 129 days ago 1715034959 IN 0 ETH$0.00 0.00044968 4.46445278 Withdraw 19814057 2024-05-06 22:35:23 129 days ago 1715034923 IN 0 ETH$0.00 0.00059435 4.73535839 Withdraw 19814054 2024-05-06 22:34:47 129 days ago 1715034887 IN 0 ETH$0.00 0.00048776 4.29331486 Withdraw 19705771 2024-04-21 19:08:59 144 days ago 1713726539 IN 0 ETH$0.00 0.00083164 6.47890783 Withdraw 19442770 2024-03-15 20:37:11 181 days ago 1710535031 IN 0 ETH$0.00 0.01039555 32.42522096 Withdraw 19178309 2024-02-07 19:10:11 218 days ago 1707333011 IN 0 ETH$0.00 0.00783075 58.50876636 Withdraw 18839969 2023-12-22 7:42:23 266 days ago 1703230943 IN 0 ETH$0.00 0.00523347 52.01695466 Deposit Ether 18835509 2023-12-21 16:43:47 266 days ago 1703177027 IN 0.04 ETH$94.58 0.0053645 66.93002415 Withdraw 18769315 2023-12-12 9:48:59 276 days ago 1702374539 IN 0 ETH$0.00 0.00264717 23.543393 Withdraw 18768683 2023-12-12 7:41:23 276 days ago 1702366883 IN 0 ETH$0.00 0.00355212 30.52391893 Withdraw 18054660 2023-09-03 8:04:23 376 days ago 1693728263 IN 0 ETH$0.00 0.00192814 19.15864295 Deposit Token 17874120 2023-08-09 1:38:35 401 days ago 1691545115 IN 0 ETH$0.00 0.00091481 27.70389752 Deposit Token 17874117 2023-08-09 1:37:59 401 days ago 1691545079 IN 0 ETH$0.00 0.00296703 27.70389752 Withdraw 17811715 2023-07-31 8:11:47 410 days ago 1690791107 IN 0 ETH$0.00 0.00283421 24.29656328 Deposit Token 17811565 2023-07-31 7:41:47 410 days ago 1690789307 IN 0 ETH$0.00 0.00234053 21.85659825 Withdraw 17702913 2023-07-16 2:31:11 425 days ago 1689474671 IN 0 ETH$0.00 0.00225839 22.42936903 Deposit Ether 17702675 2023-07-16 1:42:47 425 days ago 1689471767 IN 0.003 ETH$7.09 0.00101824 12.70402339 Deposit Ether 17636964 2023-07-06 19:45:47 434 days ago 1688672747 IN 0.75 ETH$1,773.37 0.0021092 26.31545095 Withdraw 17533203 2023-06-22 5:51:35 449 days ago 1687413095 IN 0 ETH$0.00 0.00243393 20.87043139 Transfer 17532189 2023-06-22 2:26:47 449 days ago 1687400807 IN 0 ETH$0.00 0.00346446 22.35788719 Deposit Token 17531410 2023-06-21 23:49:23 449 days ago 1687391363 IN 0 ETH$0.00 0.00216449 20.5647274 Withdraw 17531390 2023-06-21 23:45:23 449 days ago 1687391123 IN 0 ETH$0.00 0.00216102 21.47429477 Deposit Ether 17530432 2023-06-21 20:31:35 449 days ago 1687379495 IN 0.7 ETH$1,655.14 0.00187363 23.37629377 Latest 25 internal transactions (View All)
Advanced mode:Parent Transaction Hash Block From To 20542069 2024-08-16 15:24:23 27 days ago 1723821863 0.0199 ETH$47.05 19814060 2024-05-06 22:35:59 129 days ago 1715034959 0.0177 ETH$41.85 18839969 2023-12-22 7:42:23 266 days ago 1703230943 0.04 ETH$94.58 18054660 2023-09-03 8:04:23 376 days ago 1693728263 0.01 ETH$23.64 17702913 2023-07-16 2:31:11 425 days ago 1689474671 0.001 ETH$2.36 17531390 2023-06-21 23:45:23 449 days ago 1687391123 0.7 ETH$1,655.14 16182618 2022-12-14 11:24:47 639 days ago 1671017087 0.01 ETH$23.64 15447267 2022-08-31 15:02:40 743 days ago 1661958160 0.09 ETH$212.80 15318955 2022-08-11 5:45:48 764 days ago 1660196748 0.02 ETH$47.29 14777673 2022-05-15 3:41:00 852 days ago 1652586060 0.0492 ETH$116.33 14347121 2022-03-08 16:04:15 919 days ago 1646755455 0.05 ETH$118.22 14279481 2022-02-26 4:10:41 930 days ago 1645848641 0.0968 ETH$228.88 12805520 2021-07-11 10:36:47 1160 days ago 1625999807 0.02 ETH$47.29 12730514 2021-06-29 18:22:32 1171 days ago 1624990952 0.243 ETH$574.57 12723746 2021-06-28 17:08:39 1172 days ago 1624900119 0.01 ETH$23.64 12698617 2021-06-24 19:08:57 1176 days ago 1624561737 0.01 ETH$23.64 12575619 2021-06-05 16:52:17 1195 days ago 1622911937 0.0742 ETH$175.45 12442927 2021-05-16 2:51:03 1216 days ago 1621133463 1.0254 ETH$2,424.55 12358664 2021-05-03 2:55:54 1229 days ago 1620010554 0.058 ETH$137.14 12356535 2021-05-02 19:09:14 1229 days ago 1619982554 0.1451 ETH$343.09 12348297 2021-05-01 12:29:33 1230 days ago 1619872173 0.025 ETH$59.11 12328491 2021-04-28 10:44:30 1234 days ago 1619606670 356.5252 ETH$843,000.04 12299463 2021-04-23 23:33:02 1238 days ago 1619220782 5.85 ETH$13,832.26 12299117 2021-04-23 22:08:51 1238 days ago 1619215731 0.08 ETH$189.16 12296799 2021-04-23 13:51:00 1238 days ago 1619185860 4.145 ETH$9,800.81 Loading...LoadingContract Name:Gluon
Compiler Versionv0.5.12+commit.7709ece9
Contract Source Code (Solidity)
- interface Validating
- contract Versioned
- library SafeMath
- - function min(uint x, uint y)
- - function max(uint x, uint y)
- - function plus(uint x, uint y)
- - function minus(uint x, uint y)
- - function times(uint x, uint y)
- - function mod(uint x, uint y)
- - function div(uint a, uint b)
- contract Token
- - function totalSupply()
- - function by the compiler.
- - function balanceOf(address _owner)
- - function transfer(address _to, uint _ ...
- - function transferFrom(address _from, ...
- - function approve(address _spender, ui ...
- - function allowance(address _owner, ad ...
- interface AppGovernance
- - function approve(uint32 id)
- - function disapprove(uint32 id)
- - function activate(uint32 id)
- interface AppLogic
- - function upgrade()
- - function credit(address account, addr ...
- - function debit(address account, bytes ...
- interface GluonView
- - function app(uint32 id)
- - function current(uint32 id)
- - function history(uint32 id)
- - function getBalance(uint32 id, addres ...
- - function isAnyLogic(uint32 id, addres ...
- - function isAppOwner(uint32 id, addres ...
- - function proposals(address logic)
- - function totalAppsCount()
- interface GluonWallet
- - function depositEther(uint32 id)
- - function depositToken(uint32 id, addr ...
- - function withdraw(uint32 id, bytes ca ...
- - function transfer(uint32 from, uint32 ...
- interface Governing
- - function deleteVoteTally(address prop ...
- - function activationInterval()
- contract HasOwners is Validating
- - function getOwners()
- - function addOwner(address owner)
- - function addOwner_(address owner)
- - function removeOwner(address owner)
- contract HasAppOwners is HasOwners
- - function isAppOwner(uint32 appId, add ...
- - function getAppOwners(uint32 appId)
- - function addAppOwners(uint32 appId, a ...
- - function addAppOwners_(uint32 appId, ...
- - function removeAppOwners(uint32 appId ...
- contract Gluon is Validating, Vers ... *
- - function registerApp(uint32 appId, ad ...
- - function registerApp_(uint32 appId, a ...
- - function provisionApp(uint32 appId, a ...
- - function addProposal(uint32 appId, ad ...
- - function removeProposal(uint32 appId)
- - function deleteProposal(App storage a ...
- - function approve(uint32 appId)
- - function disapprove(uint32 appId)
- - function activate(uint32 appId)
- - function depositEther(uint32 appId)
- - function depositToken(uint32 appId, a ...
- - function transferTokensToGluonSecurel ...
- - function withdraw(uint32 appId, bytes ...
- - function transferTokensToAccountSecur ...
- - function transfer(uint32 from, uint32 ...
- - function app(uint32 appId)
- - function current(uint32 appId)
- - function history(uint32 appId)
- - function isAnyLogic(uint32 appId, add ...
- - function getBalance(uint32 appId, add ...
/** *Submitted for verification at Etherscan.io on 2019-11-14 */ /** *Submitted for verification at Etherscan.io on 2019-11-13 */ // File: contracts/common/Validating.sol pragma solidity 0.5.12; interface Validating { modifier notZero(uint number) { require(number > 0, "invalid 0 value"); _; } modifier notEmpty(string memory text) { require(bytes(text).length > 0, "invalid empty string"); _; } modifier validAddress(address value) { require(value != address(0x0), "invalid address"); _; } } // File: contracts/common/Versioned.sol pragma solidity 0.5.12; contract Versioned { string public version; constructor(string memory version_) public { version = version_; } } // File: contracts/external/SafeMath.sol pragma solidity 0.5.12; /** * @title Math provides arithmetic functions for uint type pairs. * You can safely `plus`, `minus`, `times`, and `divide` uint numbers without fear of integer overflow. * You can also find the `min` and `max` of two numbers. */ library SafeMath { function min(uint x, uint y) internal pure returns (uint) { return x <= y ? x : y; } function max(uint x, uint y) internal pure returns (uint) { return x >= y ? x : y; } /** @dev adds two numbers, reverts on overflow */ function plus(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, "bad addition"); } /** @dev subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend) */ function minus(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, "bad subtraction"); } /** @dev multiplies two numbers, reverts on overflow */ function times(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "bad multiplication"); } /** @dev divides two numbers and returns the remainder (unsigned integer modulo), reverts when dividing by zero */ function mod(uint x, uint y) internal pure returns (uint z) { require(y != 0, "bad modulo; using 0 as divisor"); z = x % y; } /** @dev Integer division of two numbers truncating the quotient, reverts on division by zero */ function div(uint a, uint b) internal pure returns (uint c) { // assert(b > 0); // Solidity automatically throws when dividing by 0 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold } } // File: contracts/external/Token.sol pragma solidity 0.5.12; /* * Abstract contract for the full ERC 20 Token standard * https://github.com/ethereum/EIPs/issues/20 */ contract Token { /** This is a slight change to the ERC20 base standard. function totalSupply() view returns (uint supply); is replaced map: uint public totalSupply; This automatically creates a getter function for the totalSupply. This is moved to the base contract since public getter functions are not currently recognised as an implementation of the matching abstract function by the compiler. */ /// total amount of tokens uint public totalSupply; /// @param _owner The address from which the balance will be retrieved /// @return The balance function balanceOf(address _owner) public view returns (uint balance); /// @notice send `_value` token to `_to` from `msg.sender` /// @param _to The address of the recipient /// @param _value The amount of token to be transferred /// @return Whether the transfer was successful or not function transfer(address _to, uint _value) public returns (bool success); /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from` /// @param _from The address of the sender /// @param _to The address of the recipient /// @param _value The amount of token to be transferred /// @return Whether the transfer was successful or not function transferFrom(address _from, address _to, uint _value) public returns (bool success); /// @notice `msg.sender` approves `_spender` to spend `_value` tokens /// @param _spender The address of the account able to transfer the tokens /// @param _value The amount of tokens to be approved for transfer /// @return Whether the approval was successful or not function approve(address _spender, uint _value) public returns (bool success); /// @param _owner The address of the account owning tokens /// @param _spender The address of the account able to transfer the tokens /// @return Amount of remaining tokens allowed to spent function allowance(address _owner, address _spender) public view returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } // File: contracts/gluon/AppGovernance.sol pragma solidity 0.5.12; interface AppGovernance { function approve(uint32 id) external; function disapprove(uint32 id) external; function activate(uint32 id) external; } // File: contracts/gluon/AppLogic.sol pragma solidity 0.5.12; interface AppLogic { function upgrade() external; function credit(address account, address asset, uint quantity) external; function debit(address account, bytes calldata parameters) external returns (address asset, uint quantity); } // File: contracts/gluon/GluonView.sol pragma solidity 0.5.12; interface GluonView { function app(uint32 id) external view returns (address current, address proposal, uint activationBlock); function current(uint32 id) external view returns (address); function history(uint32 id) external view returns (address[] memory); function getBalance(uint32 id, address asset) external view returns (uint); function isAnyLogic(uint32 id, address logic) external view returns (bool); function isAppOwner(uint32 id, address appOwner) external view returns (bool); function proposals(address logic) external view returns (bool); function totalAppsCount() external view returns(uint32); } // File: contracts/gluon/GluonWallet.sol pragma solidity 0.5.12; interface GluonWallet { function depositEther(uint32 id) external payable; function depositToken(uint32 id, address token, uint quantity) external; function withdraw(uint32 id, bytes calldata parameters) external; function transfer(uint32 from, uint32 to, bytes calldata parameters) external; } // File: contracts/gluon/Governing.sol pragma solidity 0.5.12; interface Governing { function deleteVoteTally(address proposal) external; function activationInterval() external view returns (uint); } // File: contracts/common/HasOwners.sol pragma solidity 0.5.12; contract HasOwners is Validating { address[] public owners; mapping(address => bool) public isOwner; event OwnerAdded(address indexed owner); event OwnerRemoved(address indexed owner); constructor(address[] memory owners_) public { for (uint i = 0; i < owners_.length; i++) addOwner_(owners_[i]); } modifier onlyOwner { require(isOwner[msg.sender], "invalid sender; must be owner"); _; } function getOwners() public view returns (address[] memory) { return owners; } function addOwner(address owner) external onlyOwner { addOwner_(owner); } function addOwner_(address owner) private validAddress(owner) { if (!isOwner[owner]) { isOwner[owner] = true; owners.push(owner); emit OwnerAdded(owner); } } function removeOwner(address owner) external onlyOwner { require(isOwner[owner], 'only owners can be removed'); require(owners.length > 1, 'can not remove last owner'); isOwner[owner] = false; for (uint i = 0; i < owners.length; i++) { if (owners[i] == owner) { owners[i] = owners[owners.length - 1]; owners.pop(); emit OwnerRemoved(owner); break; } } } } // File: contracts/gluon/HasAppOwners.sol pragma solidity 0.5.12; contract HasAppOwners is HasOwners { mapping(uint32 => address[]) public appOwners; event AppOwnerAdded (uint32 appId, address appOwner); event AppOwnerRemoved (uint32 appId, address appOwner); constructor(address[] memory owners) HasOwners(owners) public { } modifier onlyAppOwner(uint32 appId) { require(isAppOwner(appId, msg.sender), "invalid sender; must be app owner"); _; } function isAppOwner(uint32 appId, address appOwner) public view returns (bool) { address[] memory currentOwners = appOwners[appId]; for (uint i = 0; i < currentOwners.length; i++) { if (currentOwners[i] == appOwner) return true; } return false; } function getAppOwners(uint32 appId) public view returns (address[] memory) { return appOwners[appId]; } function addAppOwners(uint32 appId, address[] calldata toBeAdded) external onlyAppOwner(appId) { addAppOwners_(appId, toBeAdded); } function addAppOwners_(uint32 appId, address[] memory toBeAdded) internal { for (uint i = 0; i < toBeAdded.length; i++) { if (!isAppOwner(appId, toBeAdded[i])) { appOwners[appId].push(toBeAdded[i]); emit AppOwnerAdded(appId, toBeAdded[i]); } } } function removeAppOwners(uint32 appId, address[] calldata toBeRemoved) external onlyAppOwner(appId) { address[] storage currentOwners = appOwners[appId]; require(currentOwners.length > toBeRemoved.length, "can not remove last owner"); for (uint i = 0; i < toBeRemoved.length; i++) { for (uint j = 0; j < currentOwners.length; j++) { if (currentOwners[j] == toBeRemoved[i]) { currentOwners[j] = currentOwners[currentOwners.length - 1]; currentOwners.pop(); emit AppOwnerRemoved(appId, toBeRemoved[i]); break; } } } } } // File: contracts/gluon/Gluon.sol pragma solidity 0.5.12; contract Gluon is Validating, Versioned, AppGovernance, GluonView, GluonWallet, HasAppOwners { using SafeMath for uint; struct App { address[] history; address proposal; uint activationBlock; mapping(address => uint) balances; } address private constant ETH = address(0x0); uint32 private constant REGISTRY_INDEX = 0; uint32 private constant STAKE_INDEX = 1; mapping(uint32 => App) public apps; mapping(address => bool) public proposals; uint32 public totalAppsCount = 0; event AppRegistered (uint32 appId); event AppProvisioned(uint32 indexed appId, uint8 version, address logic); event ProposalAdded(uint32 indexed appId, uint8 version, address logic, uint activationBlock); event ProposalRemoved(uint32 indexed appId, uint8 version, address logic); event Activated(uint32 indexed appId, uint8 version, address logic); constructor(address[] memory owners, string memory version) Versioned(version) public HasAppOwners(owners) { registerApp_(REGISTRY_INDEX, owners); registerApp_(STAKE_INDEX, owners); } modifier onlyCurrentLogic(uint32 appId) { require(msg.sender == current(appId), "invalid sender; must be latest logic contract"); _; } modifier provisioned(uint32 appId) { require(apps[appId].history.length > 0, "App is not yet provisioned"); _; } function registerApp(uint32 appId, address[] calldata appOwners_) external onlyOwner { registerApp_(appId, appOwners_); } function registerApp_(uint32 appId, address[] memory appOwners_) private { require(appOwners[appId].length == 0, "App already has app owner"); require(totalAppsCount == appId, "app ids are incremented by 1"); totalAppsCount++; emit AppRegistered(appId); addAppOwners_(appId, appOwners_); } function provisionApp(uint32 appId, address logic) external onlyAppOwner(appId) validAddress(logic) { App storage app = apps[appId]; require(app.history.length == 0, "App is already provisioned"); app.history.push(logic); emit AppProvisioned(appId, uint8(app.history.length - 1), logic); } function addProposal(uint32 appId, address logic) external onlyAppOwner(appId) provisioned(appId) validAddress(logic) { App storage app = apps[appId]; require(app.proposal == address(0), "Proposal already exists. remove proposal before adding new one"); app.proposal = logic; app.activationBlock = block.number + Governing(current(STAKE_INDEX)).activationInterval(); proposals[logic] = true; emit ProposalAdded(appId, uint8(app.history.length - 1), app.proposal, app.activationBlock); } function removeProposal(uint32 appId) external onlyAppOwner(appId) provisioned(appId) { App storage app = apps[appId]; emit ProposalRemoved(appId, uint8(app.history.length - 1), app.proposal); deleteProposal(app); } function deleteProposal(App storage app) private { Governing(current(STAKE_INDEX)).deleteVoteTally(app.proposal); delete proposals[app.proposal]; delete app.proposal; app.activationBlock = 0; } /************************************************* AppGovernance ************************************************/ function approve(uint32 appId) external onlyCurrentLogic(STAKE_INDEX) { apps[appId].activationBlock = block.number; } function disapprove(uint32 appId) external onlyCurrentLogic(STAKE_INDEX) { App storage app = apps[appId]; emit ProposalRemoved(appId, uint8(app.history.length - 1), app.proposal); deleteProposal(app); } function activate(uint32 appId) external onlyCurrentLogic(appId) provisioned(appId) { App storage app = apps[appId]; require(app.activationBlock > 0, "nothing to activate"); require(app.activationBlock < block.number, "new app can not be activated before activation block"); app.history.push(app.proposal); // now make it the current deleteProposal(app); emit Activated(appId, uint8(app.history.length - 1), current(appId)); } /**************************************************** GluonWallet ****************************************************/ function depositEther(uint32 appId) external payable provisioned(appId) { App storage app = apps[appId]; app.balances[ETH] = app.balances[ETH].plus(msg.value); AppLogic(current(appId)).credit(msg.sender, ETH, msg.value); } /// @notice an account must call token.approve(logic, quantity) beforehand function depositToken(uint32 appId, address token, uint quantity) external provisioned(appId) { transferTokensToGluonSecurely(appId, Token(token), quantity); AppLogic(current(appId)).credit(msg.sender, token, quantity); } function transferTokensToGluonSecurely(uint32 appId, Token token, uint quantity) private { uint balanceBefore = token.balanceOf(address(this)); require(token.transferFrom(msg.sender, address(this), quantity), "failure to transfer quantity from token"); uint balanceAfter = token.balanceOf(address(this)); require(balanceAfter.minus(balanceBefore) == quantity, "bad Token; transferFrom erroneously reported of successful transfer"); App storage app = apps[appId]; app.balances[address(token)] = app.balances[address(token)].plus(quantity); } function withdraw(uint32 appId, bytes calldata parameters) external provisioned(appId) { (address asset, uint quantity) = AppLogic(current(appId)).debit(msg.sender, parameters); if (quantity > 0) { App storage app = apps[appId]; require(app.balances[asset] >= quantity, "not enough funds to transfer"); app.balances[asset] = apps[appId].balances[asset].minus(quantity); asset == ETH ? require(address(uint160(msg.sender)).send(quantity), "failed to transfer ether") : // explicit casting to `address payable` transferTokensToAccountSecurely(Token(asset), quantity, msg.sender); } } function transferTokensToAccountSecurely(Token token, uint quantity, address to) private { uint balanceBefore = token.balanceOf(to); require(token.transfer(to, quantity), "failure to transfer quantity from token"); uint balanceAfter = token.balanceOf(to); require(balanceAfter.minus(balanceBefore) == quantity, "bad Token; transferFrom erroneously reported of successful transfer"); } function transfer(uint32 from, uint32 to, bytes calldata parameters) external provisioned(from) provisioned(to) { (address asset, uint quantity) = AppLogic(current(from)).debit(msg.sender, parameters); if (quantity > 0) { if (from != to) { require(apps[from].balances[asset] >= quantity, "not enough balance in logic to transfer"); apps[from].balances[asset] = apps[from].balances[asset].minus(quantity); apps[to].balances[asset] = apps[to].balances[asset].plus(quantity); } AppLogic(current(to)).credit(msg.sender, asset, quantity); } } /**************************************************** GluonView ****************************************************/ function app(uint32 appId) external view returns (address current, address proposal, uint activationBlock) { App memory app_ = apps[appId]; current = app_.history[app_.history.length - 1]; proposal = app_.proposal; activationBlock = app_.activationBlock; } function current(uint32 appId) public view returns (address) { return apps[appId].history[apps[appId].history.length - 1]; } function history(uint32 appId) external view returns (address[] memory) { return apps[appId].history; } function isAnyLogic(uint32 appId, address logic) public view returns (bool) { address[] memory history_ = apps[appId].history; for (uint i = history_.length; i > 0; i--) { if (history_[i - 1] == logic) return true; } return false; } function getBalance(uint32 appId, address asset) external view returns (uint) { return apps[appId].balances[asset]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"string","name":"version","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"appId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"},{"indexed":false,"internalType":"address","name":"logic","type":"address"}],"name":"Activated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"appId","type":"uint32"},{"indexed":false,"internalType":"address","name":"appOwner","type":"address"}],"name":"AppOwnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"appId","type":"uint32"},{"indexed":false,"internalType":"address","name":"appOwner","type":"address"}],"name":"AppOwnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"appId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"},{"indexed":false,"internalType":"address","name":"logic","type":"address"}],"name":"AppProvisioned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"appId","type":"uint32"}],"name":"AppRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"appId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"},{"indexed":false,"internalType":"address","name":"logic","type":"address"},{"indexed":false,"internalType":"uint256","name":"activationBlock","type":"uint256"}],"name":"ProposalAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"appId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"},{"indexed":false,"internalType":"address","name":"logic","type":"address"}],"name":"ProposalRemoved","type":"event"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address[]","name":"toBeAdded","type":"address[]"}],"name":"addAppOwners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address","name":"logic","type":"address"}],"name":"addProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"app","outputs":[{"internalType":"address","name":"current","type":"address"},{"internalType":"address","name":"proposal","type":"address"},{"internalType":"uint256","name":"activationBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"appOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"apps","outputs":[{"internalType":"address","name":"proposal","type":"address"},{"internalType":"uint256","name":"activationBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"current","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"depositEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"disapprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"getAppOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address","name":"asset","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"history","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address","name":"logic","type":"address"}],"name":"isAnyLogic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address","name":"appOwner","type":"address"}],"name":"isAppOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proposals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address","name":"logic","type":"address"}],"name":"provisionApp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address[]","name":"appOwners_","type":"address[]"}],"name":"registerApp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"address[]","name":"toBeRemoved","type":"address[]"}],"name":"removeAppOwners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"}],"name":"removeProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalAppsCount","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"from","type":"uint32"},{"internalType":"uint32","name":"to","type":"uint32"},{"internalType":"bytes","name":"parameters","type":"bytes"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"appId","type":"uint32"},{"internalType":"bytes","name":"parameters","type":"bytes"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526006805463ffffffff191690553480156200001e57600080fd5b50604051620037eb380380620037eb833981810160405260408110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82518660208202830111640100000000821117156200009957600080fd5b82525081516020918201928201910280838360005b83811015620000c8578181015183820152602001620000ae565b5050505090500160405260200180516040519392919084640100000000821115620000f257600080fd5b9083019060208201858111156200010857600080fd5b82516401000000008111828201881017156200012357600080fd5b82525081516020918201929091019080838360005b838110156200015257818101518382015260200162000138565b50505050905090810190601f168015620001805780820380516001836020036101000a031916815260200191505b506040525050508180828060009080519060200190620001a292919062000686565b50600090505b8151811015620001e057620001d7828281518110620001c357fe5b60200260200101516200021460201b60201c565b600101620001a8565b505050620001f66000836200033960201b60201c565b6200020c6001836001600160e01b036200033916565b50506200072b565b806001600160a01b0381166200028b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090205460ff1662000335576001600160a01b038216600081815260026020526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191684179055517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a25b5050565b63ffffffff821660009081526003602052604090205415620003bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41707020616c72656164792068617320617070206f776e657200000000000000604482015290519081900360640190fd5b60065463ffffffff8381169116146200043657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f617070206964732061726520696e6372656d656e746564206279203100000000604482015290519081900360640190fd5b6006805463ffffffff198116600163ffffffff92831601821617909155604080519184168252517fb0b9faff9396f136cbe65dd6c9bb23a764dcaacd0b87031b56c9b37888ac50ca916020908290030190a16200033582826001600160e01b036200049d16565b60005b8151811015620005b357620004d083838381518110620004bc57fe5b6020026020010151620005b860201b60201c565b620005aa5763ffffffff831660009081526003602052604090208251839083908110620004f957fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905581517fd0aede363d027a6b258f61b4e6d50943b24e9db9e832960604a9d0ca021159839084908490849081106200056757fe5b6020026020010151604051808363ffffffff1663ffffffff168152602001826001600160a01b03166001600160a01b031681526020019250505060405180910390a15b600101620004a0565b505050565b63ffffffff8216600090815260036020908152604080832080548251818502810185019093528083526060938301828280156200061f57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000600575b50939450600093505050505b81518110156200067957836001600160a01b03168282815181106200064c57fe5b60200260200101516001600160a01b03161415620006705760019250505062000680565b6001016200062b565b5060009150505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006c957805160ff1916838001178555620006f9565b82800160010185558215620006f9579182015b82811115620006f9578251825591602001919060010190620006dc565b50620007079291506200070b565b5090565b6200072891905b8082111562000707576000815560010162000712565b90565b6130b0806200073b6000396000f3fe6080604052600436106101cd5760003560e01c80633f25de58116100f75780637065cb4811610095578063c2ab471f11610064578063c2ab471f14610983578063c7aa37d0146109c2578063e8b6c22e146109f8578063fe0f4ff414610a80576101cd565b80637065cb48146108cc5780639164ac43146108ff578063a0e67e2b1461092f578063b197919714610944576101cd565b80635441c2b6116100d15780635441c2b61461072157806354fd4d501461077257806356df0ee2146107fc57806364c6dcfe1461083b576101cd565b80633f25de58146106545780634e7c1d3a14610682578063525af047146106c7576101cd565b806320f49ddb1161016f5780632fe43cce1161013e5780632fe43cce146104f65780633341b445146105195780633a997c7d1461054c5780633b845232146105cc576101cd565b806320f49ddb14610410578063275c18ab146104405780632d7edc9f146104705780632f54bf6e146104af576101cd565b806314794b8e116101ab57806314794b8e146102f5578063173825d9146103255780631a93ec95146103585780631d98eb8c14610388576101cd565b8063025e7c27146101d2578063039672c41461021857806313665359146102a2575b600080fd5b3480156101de57600080fd5b506101fc600480360360208110156101f557600080fd5b5035610ab0565b604080516001600160a01b039092168252519081900360200190f35b34801561022457600080fd5b506102a06004803603604081101561023b57600080fd5b63ffffffff8235169190810190604081016020820135600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460018302840111600160201b8311171561029557600080fd5b509092509050610ad7565b005b3480156102ae57600080fd5b506102d2600480360360208110156102c557600080fd5b503563ffffffff16610d5c565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561030157600080fd5b506102a06004803603602081101561031857600080fd5b503563ffffffff16610d84565b34801561033157600080fd5b506102a06004803603602081101561034857600080fd5b50356001600160a01b0316610e56565b34801561036457600080fd5b506102a06004803603602081101561037b57600080fd5b503563ffffffff166110ae565b34801561039457600080fd5b506102a0600480360360408110156103ab57600080fd5b63ffffffff8235169190810190604081016020820135600160201b8111156103d257600080fd5b8201836020820111156103e457600080fd5b803590602001918460208302840111600160201b8311171561040557600080fd5b5090925090506112a3565b34801561041c57600080fd5b506101fc6004803603602081101561043357600080fd5b503563ffffffff16611344565b34801561044c57600080fd5b506102a06004803603602081101561046357600080fd5b503563ffffffff16611384565b34801561047c57600080fd5b506102a06004803603604081101561049357600080fd5b50803563ffffffff1690602001356001600160a01b031661149a565b3480156104bb57600080fd5b506104e2600480360360208110156104d257600080fd5b50356001600160a01b0316611704565b604080519115158252519081900360200190f35b6102a06004803603602081101561050c57600080fd5b503563ffffffff16611719565b34801561052557600080fd5b506104e26004803603602081101561053c57600080fd5b50356001600160a01b031661182a565b34801561055857600080fd5b5061057c6004803603602081101561056f57600080fd5b503563ffffffff1661183f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105b85781810151838201526020016105a0565b505050509050019250505060405180910390f35b3480156105d857600080fd5b506102a0600480360360408110156105ef57600080fd5b63ffffffff8235169190810190604081016020820135600160201b81111561061657600080fd5b82018360208201111561062857600080fd5b803590602001918460208302840111600160201b8311171561064957600080fd5b5090925090506118b2565b34801561066057600080fd5b50610669611acb565b6040805163ffffffff9092168252519081900360200190f35b34801561068e57600080fd5b506102a0600480360360608110156106a557600080fd5b5063ffffffff813516906001600160a01b036020820135169060400135611ad7565b3480156106d357600080fd5b506106f7600480360360208110156106ea57600080fd5b503563ffffffff16611bb9565b604080516001600160a01b0394851681529290931660208301528183015290519081900360600190f35b34801561072d57600080fd5b506107606004803603604081101561074457600080fd5b50803563ffffffff1690602001356001600160a01b0316611c94565b60408051918252519081900360200190f35b34801561077e57600080fd5b50610787611cc8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107c15781810151838201526020016107a9565b50505050905090810190601f1680156107ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561080857600080fd5b506104e26004803603604081101561081f57600080fd5b50803563ffffffff1690602001356001600160a01b0316611d56565b34801561084757600080fd5b506102a06004803603606081101561085e57600080fd5b63ffffffff8235811692602081013590911691810190606081016040820135600160201b81111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111600160201b831117156108c157600080fd5b509092509050611e1b565b3480156108d857600080fd5b506102a0600480360360208110156108ef57600080fd5b50356001600160a01b0316612153565b34801561090b57600080fd5b5061057c6004803603602081101561092257600080fd5b503563ffffffff166121c3565b34801561093b57600080fd5b5061057c612234565b34801561095057600080fd5b506104e26004803603604081101561096757600080fd5b50803563ffffffff1690602001356001600160a01b0316612296565b34801561098f57600080fd5b506102a0600480360360408110156109a657600080fd5b50803563ffffffff1690602001356001600160a01b0316612350565b3480156109ce57600080fd5b506101fc600480360360408110156109e557600080fd5b5063ffffffff81351690602001356124d0565b348015610a0457600080fd5b506102a060048036036040811015610a1b57600080fd5b63ffffffff8235169190810190604081016020820135600160201b811115610a4257600080fd5b820183602082011115610a5457600080fd5b803590602001918460208302840111600160201b83111715610a7557600080fd5b509092509050612505565b348015610a8c57600080fd5b506102a060048036036020811015610aa357600080fd5b503563ffffffff16612588565b60018181548110610abd57fe5b6000918252602090912001546001600160a01b0316905081565b63ffffffff83166000908152600460205260409020548390610b2e576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b600080610b3a86611344565b60408051630853a73360e41b8152336004820181815260248301938452604483018990526001600160a01b03949094169363853a73309391928a928a9291606401848480828437600081840152601f19601f8201169050808301925050509450505050506040805180830381600087803b158015610bb757600080fd5b505af1158015610bcb573d6000803e3d6000fd5b505050506040513d6040811015610be157600080fd5b50805160209091015190925090508015610d545763ffffffff861660009081526004602090815260408083206001600160a01b03861684526003810190925290912054821115610c78576040805162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320746f207472616e7366657200000000604482015290519081900360640190fd5b63ffffffff80881660009081526004602090815260408083206001600160a01b0388168452600301909152902054610cb291849061260016565b6001600160a01b038416600081815260038401602052604090209190915515610ce557610ce083833361264a565b610d52565b604051339083156108fc029084906000818181858888f19350505050610d52576040805162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e736665722065746865720000000000000000604482015290519081900360640190fd5b505b505050505050565b600460205260009081526040902060018101546002909101546001600160a01b039091169082565b6001610d8f81611344565b6001600160a01b0316336001600160a01b031614610dde5760405162461bcd60e51b815260040180806020018281038252602d815260200180612f9e602d913960400191505060405180910390fd5b63ffffffff821660008181526004602090815260409182902080546001820154845160001990920160ff1682526001600160a01b03169281019290925282519093927ffddf6910a1ecd6d2f433683d973a194c4ff8c1d85a8fb6cb068ca80e02cb53df928290030190a2610e5181612865565b505050565b3360009081526002602052604090205460ff16610eba576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073656e6465723b206d757374206265206f776e6572000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff16610f27576040805162461bcd60e51b815260206004820152601a60248201527f6f6e6c79206f776e6572732063616e2062652072656d6f766564000000000000604482015290519081900360640190fd5b6001805411610f79576040805162461bcd60e51b815260206004820152601960248201527831b0b7103737ba103932b6b7bb32903630b9ba1037bbb732b960391b604482015290519081900360640190fd5b6001600160a01b0381166000908152600260205260408120805460ff191690555b6001548110156110aa57816001600160a01b031660018281548110610fbb57fe5b6000918252602090912001546001600160a01b031614156110a257600180546000198101908110610fe857fe5b600091825260209091200154600180546001600160a01b03909216918390811061100e57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061104757fe5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da91a26110aa565b600101610f9a565b5050565b806110b881611344565b6001600160a01b0316336001600160a01b0316146111075760405162461bcd60e51b815260040180806020018281038252602d815260200180612f9e602d913960400191505060405180910390fd5b63ffffffff8216600090815260046020526040902054829061115e576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff8316600090815260046020526040902060028101546111bf576040805162461bcd60e51b81526020600482015260136024820152726e6f7468696e6720746f20616374697661746560681b604482015290519081900360640190fd5b438160020154106112015760405162461bcd60e51b8152600401808060200182810382526034815260200180612f6a6034913960400191505060405180910390fd5b6001808201548254918201835560008381526020902090910180546001600160a01b0319166001600160a01b0390921691909117905561124081612865565b805463ffffffff8516907fd24b737b844b64bfa84ef4f21928ae8a3364d243efa66d76b8b3fe10eaad0d0b906000190161127987611344565b6040805160ff90931683526001600160a01b0390911660208301528051918290030190a250505050565b3360009081526002602052604090205460ff16611307576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073656e6465723b206d757374206265206f776e6572000000604482015290519081900360640190fd5b610e518383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061291492505050565b63ffffffff811660009081526004602052604081208054600019810190811061136957fe5b6000918252602090912001546001600160a01b031692915050565b8061138f8133612296565b6113ca5760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b63ffffffff82166000908152600460205260409020548290611421576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff831660008181526004602090815260409182902080546001820154845160001990920160ff1682526001600160a01b03169281019290925282519093927ffddf6910a1ecd6d2f433683d973a194c4ff8c1d85a8fb6cb068ca80e02cb53df928290030190a261149481612865565b50505050565b816114a58133612296565b6114e05760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b63ffffffff83166000908152600460205260409020548390611537576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b826001600160a01b038116611585576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b63ffffffff8516600090815260046020526040902060018101546001600160a01b0316156115e45760405162461bcd60e51b815260040180806020018281038252603e815260200180612f2c603e913960400191505060405180910390fd5b600181810180546001600160a01b0319166001600160a01b03881617905561160b90611344565b6001600160a01b031663499c80ca6040518163ffffffff1660e01b815260040160206040518083038186803b15801561164357600080fd5b505afa158015611657573d6000803e3d6000fd5b505050506040513d602081101561166d57600080fd5b50514301600282019081556001600160a01b03808716600090815260056020908152604091829020805460ff191660019081179091558554908601549454835160001990920160ff168252949093169083015281810192909252905163ffffffff8816917f69dd3b21da8dd427580e6ceafdbf997f87f5911ea3d2970aefdc88a47322ffe1919081900360600190a2505050505050565b60026020526000908152604090205460ff1681565b63ffffffff81166000908152600460205260409020548190611770576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff8083166000908152600460209081526040808320838052600381019092529091205490916117a691903490612a3716565b60008080526003830160205260409020556117c083611344565b60408051637de182c560e01b815233600482015260006024820181905234604483015291516001600160a01b039390931692637de182c59260648084019391929182900301818387803b15801561181657600080fd5b505af1158015610d52573d6000803e3d6000fd5b60056020526000908152604090205460ff1681565b63ffffffff81166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156118a657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611888575b50505050509050919050565b826118bd8133612296565b6118f85760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b63ffffffff841660009081526003602052604090208054831061195e576040805162461bcd60e51b815260206004820152601960248201527831b0b7103737ba103932b6b7bb32903630b9ba1037bbb732b960391b604482015290519081900360640190fd5b60005b83811015610d545760005b8254811015611ac25785858381811061198157fe5b905060200201356001600160a01b03166001600160a01b03168382815481106119a657fe5b6000918252602090912001546001600160a01b03161415611aba578254839060001981019081106119d357fe5b9060005260206000200160009054906101000a90046001600160a01b03168382815481106119fd57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480611a3557fe5b600082815260209020810160001990810180546001600160a01b03191690550190557f512efc312e8df52a97f6abc5812c5a34ccd1ac0986ccc2c6247b452d67de333187878785818110611a8557fe5b6040805163ffffffff959095168552602091820293909301356001600160a01b031690840152508051918290030190a1611ac2565b60010161196c565b50600101611961565b60065463ffffffff1681565b63ffffffff83166000908152600460205260409020548390611b2e576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b611b39848484612a7e565b611b4284611344565b60408051637de182c560e01b81523360048201526001600160a01b0386811660248301526044820186905291519290911691637de182c59160648082019260009290919082900301818387803b158015611b9b57600080fd5b505af1158015611baf573d6000803e3d6000fd5b5050505050505050565b6000806000611bc6612ee0565b63ffffffff851660009081526004602090815260409182902082518154608093810282018401909452606081018481529093919284928491840182828015611c3757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c19575b505050918352505060018201546001600160a01b0316602082015260029091015460409091015280518051919250906000198101908110611c7457fe5b602002602001015193508060200151925080604001519150509193909250565b63ffffffff821660009081526004602090815260408083206001600160a01b03851684526003019091529020545b92915050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611d4e5780601f10611d2357610100808354040283529160200191611d4e565b820191906000526020600020905b815481529060010190602001808311611d3157829003601f168201915b505050505081565b63ffffffff821660009081526004602090815260408083208054825181850281018501909352808352606093830182828015611dbb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d9d575b505083519394505050505b8015611e1057836001600160a01b0316826001830381518110611de557fe5b60200260200101516001600160a01b03161415611e0757600192505050611cc2565b60001901611dc6565b506000949350505050565b63ffffffff84166000908152600460205260409020548490611e72576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff84166000908152600460205260409020548490611ec9576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b600080611ed588611344565b60408051630853a73360e41b8152336004820181815260248301938452604483018a90526001600160a01b03949094169363853a73309391928b928b9291606401848480828437600081840152601f19601f8201169050808301925050509450505050506040805180830381600087803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b505050506040513d6040811015611f7c57600080fd5b50805160209091015190925090508015611baf578663ffffffff168863ffffffff16146120cf5763ffffffff881660009081526004602090815260408083206001600160a01b038616845260030190915290205481111561200e5760405162461bcd60e51b81526004018080602001828103825260278152602001806130356027913960400191505060405180910390fd5b63ffffffff80891660009081526004602090815260408083206001600160a01b038716845260030190915290205461204891839061260016565b63ffffffff808a1660009081526004602081815260408084206001600160a01b03891680865260039182018452828620979097558d8616855292825280842095845294909101905291909120546120a1918390612a3716565b63ffffffff881660009081526004602090815260408083206001600160a01b03871684526003019091529020555b6120d887611344565b60408051637de182c560e01b81523360048201526001600160a01b0385811660248301526044820185905291519290911691637de182c59160648082019260009290919082900301818387803b15801561213157600080fd5b505af1158015612145573d6000803e3d6000fd5b505050505050505050505050565b3360009081526002602052604090205460ff166121b7576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073656e6465723b206d757374206265206f776e6572000000604482015290519081900360640190fd5b6121c081612cde565b50565b63ffffffff81166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156118a6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118885750505050509050919050565b6060600180548060200260200160405190810160405280929190818152602001828054801561228c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161226e575b5050505050905090565b63ffffffff8216600090815260036020908152604080832080548251818502810185019093528083526060938301828280156122fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122dd575b50939450600093505050505b8151811015611e1057836001600160a01b031682828151811061232657fe5b60200260200101516001600160a01b0316141561234857600192505050611cc2565b600101612307565b8161235b8133612296565b6123965760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b816001600160a01b0381166123e4576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b63ffffffff8416600090815260046020526040902080541561244d576040805162461bcd60e51b815260206004820152601a60248201527f41707020697320616c72656164792070726f766973696f6e6564000000000000604482015290519081900360640190fd5b8054600181018255600082815260209081902090910180546001600160a01b0319166001600160a01b03871690811790915582546040805160001990920160ff16825292810191909152815163ffffffff8816927f017bc769595aad0be6e222715334e0328919ec7353c74b70b90e038b3024dcd0928290030190a25050505050565b600360205281600052604060002081815481106124e957fe5b6000918252602090912001546001600160a01b03169150829050565b826125108133612296565b61254b5760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b61149484848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612dd892505050565b600161259381611344565b6001600160a01b0316336001600160a01b0316146125e25760405162461bcd60e51b815260040180806020018281038252602d815260200180612f9e602d913960400191505060405180910390fd5b5063ffffffff16600090815260046020526040902043600290910155565b80820382811115611cc2576040805162461bcd60e51b815260206004820152600f60248201526e3130b21039bab13a3930b1ba34b7b760891b604482015290519081900360640190fd5b6000836001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156126a257600080fd5b505afa1580156126b6573d6000803e3d6000fd5b505050506040513d60208110156126cc57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820187905291519293509086169163a9059cbb916044808201926020929091908290030181600087803b15801561272457600080fd5b505af1158015612738573d6000803e3d6000fd5b505050506040513d602081101561274e57600080fd5b505161278b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612fcb6027913960400191505060405180910390fd5b6000846001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156127e357600080fd5b505afa1580156127f7573d6000803e3d6000fd5b505050506040513d602081101561280d57600080fd5b5051905083612822828463ffffffff61260016565b1461285e5760405162461bcd60e51b8152600401808060200182810382526043815260200180612ff26043913960600191505060405180910390fd5b5050505050565b61286f6001611344565b600182015460408051631ce635bd60e11b81526001600160a01b039283166004820152905192909116916339cc6b7a9160248082019260009290919082900301818387803b1580156128c057600080fd5b505af11580156128d4573d6000803e3d6000fd5b505050506001810180546001600160a01b03166000908152600560205260408120805460ff1916905581546001600160a01b031916909155600290910155565b63ffffffff82166000908152600360205260409020541561297c576040805162461bcd60e51b815260206004820152601960248201527f41707020616c72656164792068617320617070206f776e657200000000000000604482015290519081900360640190fd5b60065463ffffffff8381169116146129db576040805162461bcd60e51b815260206004820152601c60248201527f617070206964732061726520696e6372656d656e746564206279203100000000604482015290519081900360640190fd5b6006805463ffffffff198116600163ffffffff92831601821617909155604080519184168252517fb0b9faff9396f136cbe65dd6c9bb23a764dcaacd0b87031b56c9b37888ac50ca916020908290030190a16110aa8282612dd8565b80820182811015611cc2576040805162461bcd60e51b815260206004820152600c60248201526b3130b21030b23234ba34b7b760a11b604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015612ac857600080fd5b505afa158015612adc573d6000803e3d6000fd5b505050506040513d6020811015612af257600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290519192506001600160a01b038516916323b872dd916064808201926020929091908290030181600087803b158015612b4d57600080fd5b505af1158015612b61573d6000803e3d6000fd5b505050506040513d6020811015612b7757600080fd5b5051612bb45760405162461bcd60e51b8152600401808060200182810382526027815260200180612fcb6027913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b158015612bfe57600080fd5b505afa158015612c12573d6000803e3d6000fd5b505050506040513d6020811015612c2857600080fd5b5051905082612c3d828463ffffffff61260016565b14612c795760405162461bcd60e51b8152600401808060200182810382526043815260200180612ff26043913960600191505060405180910390fd5b63ffffffff80861660009081526004602090815260408083206001600160a01b038916845260038101909252909120549091612cb891908690612a3716565b6001600160a01b0390951660009081526003909101602052604090209390935550505050565b806001600160a01b038116612d2c576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090205460ff166110aa576001600160a01b038216600081815260026020526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191684179055517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a25050565b60005b8151811015610e5157612e0183838381518110612df457fe5b6020026020010151612296565b612ed85763ffffffff831660009081526003602052604090208251839083908110612e2857fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905581517fd0aede363d027a6b258f61b4e6d50943b24e9db9e832960604a9d0ca02115983908490849084908110612e9557fe5b6020026020010151604051808363ffffffff1663ffffffff168152602001826001600160a01b03166001600160a01b031681526020019250505060405180910390a15b600101612ddb565b60405180606001604052806060815260200160006001600160a01b0316815260200160008152509056fe696e76616c69642073656e6465723b206d75737420626520617070206f776e657250726f706f73616c20616c7265616479206578697374732e2072656d6f76652070726f706f73616c206265666f726520616464696e67206e6577206f6e656e6577206170702063616e206e6f7420626520616374697661746564206265666f72652061637469766174696f6e20626c6f636b696e76616c69642073656e6465723b206d757374206265206c6174657374206c6f67696320636f6e74726163746661696c75726520746f207472616e73666572207175616e746974792066726f6d20746f6b656e62616420546f6b656e3b207472616e7366657246726f6d206572726f6e656f75736c79207265706f72746564206f66207375636365737366756c207472616e736665726e6f7420656e6f7567682062616c616e636520696e206c6f67696320746f207472616e73666572417070206973206e6f74207965742070726f766973696f6e6564000000000000a265627a7a72315820b938ada3bc32828138c90daad9eb4f4f3adb36884397a1e83f125cc02a74ccef64736f6c634300050c0032000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004d2130d9d20428dc249a1e938a0bcea4b5b9ac1a000000000000000000000000ac01f01f51f0bdd012c1838bd5cef330e6c7ffca0000000000000000000000005ccaaae7bea14e8e04fb0fc7ed16df49d5678eb80000000000000000000000000000000000000000000000000000000000000005312e312e30000000000000000000000000000000000000000000000000000000Deployed Bytecode
0x6080604052600436106101cd5760003560e01c80633f25de58116100f75780637065cb4811610095578063c2ab471f11610064578063c2ab471f14610983578063c7aa37d0146109c2578063e8b6c22e146109f8578063fe0f4ff414610a80576101cd565b80637065cb48146108cc5780639164ac43146108ff578063a0e67e2b1461092f578063b197919714610944576101cd565b80635441c2b6116100d15780635441c2b61461072157806354fd4d501461077257806356df0ee2146107fc57806364c6dcfe1461083b576101cd565b80633f25de58146106545780634e7c1d3a14610682578063525af047146106c7576101cd565b806320f49ddb1161016f5780632fe43cce1161013e5780632fe43cce146104f65780633341b445146105195780633a997c7d1461054c5780633b845232146105cc576101cd565b806320f49ddb14610410578063275c18ab146104405780632d7edc9f146104705780632f54bf6e146104af576101cd565b806314794b8e116101ab57806314794b8e146102f5578063173825d9146103255780631a93ec95146103585780631d98eb8c14610388576101cd565b8063025e7c27146101d2578063039672c41461021857806313665359146102a2575b600080fd5b3480156101de57600080fd5b506101fc600480360360208110156101f557600080fd5b5035610ab0565b604080516001600160a01b039092168252519081900360200190f35b34801561022457600080fd5b506102a06004803603604081101561023b57600080fd5b63ffffffff8235169190810190604081016020820135600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460018302840111600160201b8311171561029557600080fd5b509092509050610ad7565b005b3480156102ae57600080fd5b506102d2600480360360208110156102c557600080fd5b503563ffffffff16610d5c565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561030157600080fd5b506102a06004803603602081101561031857600080fd5b503563ffffffff16610d84565b34801561033157600080fd5b506102a06004803603602081101561034857600080fd5b50356001600160a01b0316610e56565b34801561036457600080fd5b506102a06004803603602081101561037b57600080fd5b503563ffffffff166110ae565b34801561039457600080fd5b506102a0600480360360408110156103ab57600080fd5b63ffffffff8235169190810190604081016020820135600160201b8111156103d257600080fd5b8201836020820111156103e457600080fd5b803590602001918460208302840111600160201b8311171561040557600080fd5b5090925090506112a3565b34801561041c57600080fd5b506101fc6004803603602081101561043357600080fd5b503563ffffffff16611344565b34801561044c57600080fd5b506102a06004803603602081101561046357600080fd5b503563ffffffff16611384565b34801561047c57600080fd5b506102a06004803603604081101561049357600080fd5b50803563ffffffff1690602001356001600160a01b031661149a565b3480156104bb57600080fd5b506104e2600480360360208110156104d257600080fd5b50356001600160a01b0316611704565b604080519115158252519081900360200190f35b6102a06004803603602081101561050c57600080fd5b503563ffffffff16611719565b34801561052557600080fd5b506104e26004803603602081101561053c57600080fd5b50356001600160a01b031661182a565b34801561055857600080fd5b5061057c6004803603602081101561056f57600080fd5b503563ffffffff1661183f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105b85781810151838201526020016105a0565b505050509050019250505060405180910390f35b3480156105d857600080fd5b506102a0600480360360408110156105ef57600080fd5b63ffffffff8235169190810190604081016020820135600160201b81111561061657600080fd5b82018360208201111561062857600080fd5b803590602001918460208302840111600160201b8311171561064957600080fd5b5090925090506118b2565b34801561066057600080fd5b50610669611acb565b6040805163ffffffff9092168252519081900360200190f35b34801561068e57600080fd5b506102a0600480360360608110156106a557600080fd5b5063ffffffff813516906001600160a01b036020820135169060400135611ad7565b3480156106d357600080fd5b506106f7600480360360208110156106ea57600080fd5b503563ffffffff16611bb9565b604080516001600160a01b0394851681529290931660208301528183015290519081900360600190f35b34801561072d57600080fd5b506107606004803603604081101561074457600080fd5b50803563ffffffff1690602001356001600160a01b0316611c94565b60408051918252519081900360200190f35b34801561077e57600080fd5b50610787611cc8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107c15781810151838201526020016107a9565b50505050905090810190601f1680156107ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561080857600080fd5b506104e26004803603604081101561081f57600080fd5b50803563ffffffff1690602001356001600160a01b0316611d56565b34801561084757600080fd5b506102a06004803603606081101561085e57600080fd5b63ffffffff8235811692602081013590911691810190606081016040820135600160201b81111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111600160201b831117156108c157600080fd5b509092509050611e1b565b3480156108d857600080fd5b506102a0600480360360208110156108ef57600080fd5b50356001600160a01b0316612153565b34801561090b57600080fd5b5061057c6004803603602081101561092257600080fd5b503563ffffffff166121c3565b34801561093b57600080fd5b5061057c612234565b34801561095057600080fd5b506104e26004803603604081101561096757600080fd5b50803563ffffffff1690602001356001600160a01b0316612296565b34801561098f57600080fd5b506102a0600480360360408110156109a657600080fd5b50803563ffffffff1690602001356001600160a01b0316612350565b3480156109ce57600080fd5b506101fc600480360360408110156109e557600080fd5b5063ffffffff81351690602001356124d0565b348015610a0457600080fd5b506102a060048036036040811015610a1b57600080fd5b63ffffffff8235169190810190604081016020820135600160201b811115610a4257600080fd5b820183602082011115610a5457600080fd5b803590602001918460208302840111600160201b83111715610a7557600080fd5b509092509050612505565b348015610a8c57600080fd5b506102a060048036036020811015610aa357600080fd5b503563ffffffff16612588565b60018181548110610abd57fe5b6000918252602090912001546001600160a01b0316905081565b63ffffffff83166000908152600460205260409020548390610b2e576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b600080610b3a86611344565b60408051630853a73360e41b8152336004820181815260248301938452604483018990526001600160a01b03949094169363853a73309391928a928a9291606401848480828437600081840152601f19601f8201169050808301925050509450505050506040805180830381600087803b158015610bb757600080fd5b505af1158015610bcb573d6000803e3d6000fd5b505050506040513d6040811015610be157600080fd5b50805160209091015190925090508015610d545763ffffffff861660009081526004602090815260408083206001600160a01b03861684526003810190925290912054821115610c78576040805162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320746f207472616e7366657200000000604482015290519081900360640190fd5b63ffffffff80881660009081526004602090815260408083206001600160a01b0388168452600301909152902054610cb291849061260016565b6001600160a01b038416600081815260038401602052604090209190915515610ce557610ce083833361264a565b610d52565b604051339083156108fc029084906000818181858888f19350505050610d52576040805162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e736665722065746865720000000000000000604482015290519081900360640190fd5b505b505050505050565b600460205260009081526040902060018101546002909101546001600160a01b039091169082565b6001610d8f81611344565b6001600160a01b0316336001600160a01b031614610dde5760405162461bcd60e51b815260040180806020018281038252602d815260200180612f9e602d913960400191505060405180910390fd5b63ffffffff821660008181526004602090815260409182902080546001820154845160001990920160ff1682526001600160a01b03169281019290925282519093927ffddf6910a1ecd6d2f433683d973a194c4ff8c1d85a8fb6cb068ca80e02cb53df928290030190a2610e5181612865565b505050565b3360009081526002602052604090205460ff16610eba576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073656e6465723b206d757374206265206f776e6572000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff16610f27576040805162461bcd60e51b815260206004820152601a60248201527f6f6e6c79206f776e6572732063616e2062652072656d6f766564000000000000604482015290519081900360640190fd5b6001805411610f79576040805162461bcd60e51b815260206004820152601960248201527831b0b7103737ba103932b6b7bb32903630b9ba1037bbb732b960391b604482015290519081900360640190fd5b6001600160a01b0381166000908152600260205260408120805460ff191690555b6001548110156110aa57816001600160a01b031660018281548110610fbb57fe5b6000918252602090912001546001600160a01b031614156110a257600180546000198101908110610fe857fe5b600091825260209091200154600180546001600160a01b03909216918390811061100e57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061104757fe5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da91a26110aa565b600101610f9a565b5050565b806110b881611344565b6001600160a01b0316336001600160a01b0316146111075760405162461bcd60e51b815260040180806020018281038252602d815260200180612f9e602d913960400191505060405180910390fd5b63ffffffff8216600090815260046020526040902054829061115e576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff8316600090815260046020526040902060028101546111bf576040805162461bcd60e51b81526020600482015260136024820152726e6f7468696e6720746f20616374697661746560681b604482015290519081900360640190fd5b438160020154106112015760405162461bcd60e51b8152600401808060200182810382526034815260200180612f6a6034913960400191505060405180910390fd5b6001808201548254918201835560008381526020902090910180546001600160a01b0319166001600160a01b0390921691909117905561124081612865565b805463ffffffff8516907fd24b737b844b64bfa84ef4f21928ae8a3364d243efa66d76b8b3fe10eaad0d0b906000190161127987611344565b6040805160ff90931683526001600160a01b0390911660208301528051918290030190a250505050565b3360009081526002602052604090205460ff16611307576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073656e6465723b206d757374206265206f776e6572000000604482015290519081900360640190fd5b610e518383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061291492505050565b63ffffffff811660009081526004602052604081208054600019810190811061136957fe5b6000918252602090912001546001600160a01b031692915050565b8061138f8133612296565b6113ca5760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b63ffffffff82166000908152600460205260409020548290611421576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff831660008181526004602090815260409182902080546001820154845160001990920160ff1682526001600160a01b03169281019290925282519093927ffddf6910a1ecd6d2f433683d973a194c4ff8c1d85a8fb6cb068ca80e02cb53df928290030190a261149481612865565b50505050565b816114a58133612296565b6114e05760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b63ffffffff83166000908152600460205260409020548390611537576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b826001600160a01b038116611585576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b63ffffffff8516600090815260046020526040902060018101546001600160a01b0316156115e45760405162461bcd60e51b815260040180806020018281038252603e815260200180612f2c603e913960400191505060405180910390fd5b600181810180546001600160a01b0319166001600160a01b03881617905561160b90611344565b6001600160a01b031663499c80ca6040518163ffffffff1660e01b815260040160206040518083038186803b15801561164357600080fd5b505afa158015611657573d6000803e3d6000fd5b505050506040513d602081101561166d57600080fd5b50514301600282019081556001600160a01b03808716600090815260056020908152604091829020805460ff191660019081179091558554908601549454835160001990920160ff168252949093169083015281810192909252905163ffffffff8816917f69dd3b21da8dd427580e6ceafdbf997f87f5911ea3d2970aefdc88a47322ffe1919081900360600190a2505050505050565b60026020526000908152604090205460ff1681565b63ffffffff81166000908152600460205260409020548190611770576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff8083166000908152600460209081526040808320838052600381019092529091205490916117a691903490612a3716565b60008080526003830160205260409020556117c083611344565b60408051637de182c560e01b815233600482015260006024820181905234604483015291516001600160a01b039390931692637de182c59260648084019391929182900301818387803b15801561181657600080fd5b505af1158015610d52573d6000803e3d6000fd5b60056020526000908152604090205460ff1681565b63ffffffff81166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156118a657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611888575b50505050509050919050565b826118bd8133612296565b6118f85760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b63ffffffff841660009081526003602052604090208054831061195e576040805162461bcd60e51b815260206004820152601960248201527831b0b7103737ba103932b6b7bb32903630b9ba1037bbb732b960391b604482015290519081900360640190fd5b60005b83811015610d545760005b8254811015611ac25785858381811061198157fe5b905060200201356001600160a01b03166001600160a01b03168382815481106119a657fe5b6000918252602090912001546001600160a01b03161415611aba578254839060001981019081106119d357fe5b9060005260206000200160009054906101000a90046001600160a01b03168382815481106119fd57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480611a3557fe5b600082815260209020810160001990810180546001600160a01b03191690550190557f512efc312e8df52a97f6abc5812c5a34ccd1ac0986ccc2c6247b452d67de333187878785818110611a8557fe5b6040805163ffffffff959095168552602091820293909301356001600160a01b031690840152508051918290030190a1611ac2565b60010161196c565b50600101611961565b60065463ffffffff1681565b63ffffffff83166000908152600460205260409020548390611b2e576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b611b39848484612a7e565b611b4284611344565b60408051637de182c560e01b81523360048201526001600160a01b0386811660248301526044820186905291519290911691637de182c59160648082019260009290919082900301818387803b158015611b9b57600080fd5b505af1158015611baf573d6000803e3d6000fd5b5050505050505050565b6000806000611bc6612ee0565b63ffffffff851660009081526004602090815260409182902082518154608093810282018401909452606081018481529093919284928491840182828015611c3757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c19575b505050918352505060018201546001600160a01b0316602082015260029091015460409091015280518051919250906000198101908110611c7457fe5b602002602001015193508060200151925080604001519150509193909250565b63ffffffff821660009081526004602090815260408083206001600160a01b03851684526003019091529020545b92915050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611d4e5780601f10611d2357610100808354040283529160200191611d4e565b820191906000526020600020905b815481529060010190602001808311611d3157829003601f168201915b505050505081565b63ffffffff821660009081526004602090815260408083208054825181850281018501909352808352606093830182828015611dbb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d9d575b505083519394505050505b8015611e1057836001600160a01b0316826001830381518110611de557fe5b60200260200101516001600160a01b03161415611e0757600192505050611cc2565b60001901611dc6565b506000949350505050565b63ffffffff84166000908152600460205260409020548490611e72576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b63ffffffff84166000908152600460205260409020548490611ec9576040805162461bcd60e51b815260206004820152601a602482015260008051602061305c833981519152604482015290519081900360640190fd5b600080611ed588611344565b60408051630853a73360e41b8152336004820181815260248301938452604483018a90526001600160a01b03949094169363853a73309391928b928b9291606401848480828437600081840152601f19601f8201169050808301925050509450505050506040805180830381600087803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b505050506040513d6040811015611f7c57600080fd5b50805160209091015190925090508015611baf578663ffffffff168863ffffffff16146120cf5763ffffffff881660009081526004602090815260408083206001600160a01b038616845260030190915290205481111561200e5760405162461bcd60e51b81526004018080602001828103825260278152602001806130356027913960400191505060405180910390fd5b63ffffffff80891660009081526004602090815260408083206001600160a01b038716845260030190915290205461204891839061260016565b63ffffffff808a1660009081526004602081815260408084206001600160a01b03891680865260039182018452828620979097558d8616855292825280842095845294909101905291909120546120a1918390612a3716565b63ffffffff881660009081526004602090815260408083206001600160a01b03871684526003019091529020555b6120d887611344565b60408051637de182c560e01b81523360048201526001600160a01b0385811660248301526044820185905291519290911691637de182c59160648082019260009290919082900301818387803b15801561213157600080fd5b505af1158015612145573d6000803e3d6000fd5b505050505050505050505050565b3360009081526002602052604090205460ff166121b7576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073656e6465723b206d757374206265206f776e6572000000604482015290519081900360640190fd5b6121c081612cde565b50565b63ffffffff81166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156118a6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118885750505050509050919050565b6060600180548060200260200160405190810160405280929190818152602001828054801561228c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161226e575b5050505050905090565b63ffffffff8216600090815260036020908152604080832080548251818502810185019093528083526060938301828280156122fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122dd575b50939450600093505050505b8151811015611e1057836001600160a01b031682828151811061232657fe5b60200260200101516001600160a01b0316141561234857600192505050611cc2565b600101612307565b8161235b8133612296565b6123965760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b816001600160a01b0381166123e4576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b63ffffffff8416600090815260046020526040902080541561244d576040805162461bcd60e51b815260206004820152601a60248201527f41707020697320616c72656164792070726f766973696f6e6564000000000000604482015290519081900360640190fd5b8054600181018255600082815260209081902090910180546001600160a01b0319166001600160a01b03871690811790915582546040805160001990920160ff16825292810191909152815163ffffffff8816927f017bc769595aad0be6e222715334e0328919ec7353c74b70b90e038b3024dcd0928290030190a25050505050565b600360205281600052604060002081815481106124e957fe5b6000918252602090912001546001600160a01b03169150829050565b826125108133612296565b61254b5760405162461bcd60e51b8152600401808060200182810382526021815260200180612f0b6021913960400191505060405180910390fd5b61149484848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612dd892505050565b600161259381611344565b6001600160a01b0316336001600160a01b0316146125e25760405162461bcd60e51b815260040180806020018281038252602d815260200180612f9e602d913960400191505060405180910390fd5b5063ffffffff16600090815260046020526040902043600290910155565b80820382811115611cc2576040805162461bcd60e51b815260206004820152600f60248201526e3130b21039bab13a3930b1ba34b7b760891b604482015290519081900360640190fd5b6000836001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156126a257600080fd5b505afa1580156126b6573d6000803e3d6000fd5b505050506040513d60208110156126cc57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820187905291519293509086169163a9059cbb916044808201926020929091908290030181600087803b15801561272457600080fd5b505af1158015612738573d6000803e3d6000fd5b505050506040513d602081101561274e57600080fd5b505161278b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612fcb6027913960400191505060405180910390fd5b6000846001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156127e357600080fd5b505afa1580156127f7573d6000803e3d6000fd5b505050506040513d602081101561280d57600080fd5b5051905083612822828463ffffffff61260016565b1461285e5760405162461bcd60e51b8152600401808060200182810382526043815260200180612ff26043913960600191505060405180910390fd5b5050505050565b61286f6001611344565b600182015460408051631ce635bd60e11b81526001600160a01b039283166004820152905192909116916339cc6b7a9160248082019260009290919082900301818387803b1580156128c057600080fd5b505af11580156128d4573d6000803e3d6000fd5b505050506001810180546001600160a01b03166000908152600560205260408120805460ff1916905581546001600160a01b031916909155600290910155565b63ffffffff82166000908152600360205260409020541561297c576040805162461bcd60e51b815260206004820152601960248201527f41707020616c72656164792068617320617070206f776e657200000000000000604482015290519081900360640190fd5b60065463ffffffff8381169116146129db576040805162461bcd60e51b815260206004820152601c60248201527f617070206964732061726520696e6372656d656e746564206279203100000000604482015290519081900360640190fd5b6006805463ffffffff198116600163ffffffff92831601821617909155604080519184168252517fb0b9faff9396f136cbe65dd6c9bb23a764dcaacd0b87031b56c9b37888ac50ca916020908290030190a16110aa8282612dd8565b80820182811015611cc2576040805162461bcd60e51b815260206004820152600c60248201526b3130b21030b23234ba34b7b760a11b604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015612ac857600080fd5b505afa158015612adc573d6000803e3d6000fd5b505050506040513d6020811015612af257600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290519192506001600160a01b038516916323b872dd916064808201926020929091908290030181600087803b158015612b4d57600080fd5b505af1158015612b61573d6000803e3d6000fd5b505050506040513d6020811015612b7757600080fd5b5051612bb45760405162461bcd60e51b8152600401808060200182810382526027815260200180612fcb6027913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b158015612bfe57600080fd5b505afa158015612c12573d6000803e3d6000fd5b505050506040513d6020811015612c2857600080fd5b5051905082612c3d828463ffffffff61260016565b14612c795760405162461bcd60e51b8152600401808060200182810382526043815260200180612ff26043913960600191505060405180910390fd5b63ffffffff80861660009081526004602090815260408083206001600160a01b038916845260038101909252909120549091612cb891908690612a3716565b6001600160a01b0390951660009081526003909101602052604090209390935550505050565b806001600160a01b038116612d2c576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090205460ff166110aa576001600160a01b038216600081815260026020526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191684179055517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a25050565b60005b8151811015610e5157612e0183838381518110612df457fe5b6020026020010151612296565b612ed85763ffffffff831660009081526003602052604090208251839083908110612e2857fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905581517fd0aede363d027a6b258f61b4e6d50943b24e9db9e832960604a9d0ca02115983908490849084908110612e9557fe5b6020026020010151604051808363ffffffff1663ffffffff168152602001826001600160a01b03166001600160a01b031681526020019250505060405180910390a15b600101612ddb565b60405180606001604052806060815260200160006001600160a01b0316815260200160008152509056fe696e76616c69642073656e6465723b206d75737420626520617070206f776e657250726f706f73616c20616c7265616479206578697374732e2072656d6f76652070726f706f73616c206265666f726520616464696e67206e6577206f6e656e6577206170702063616e206e6f7420626520616374697661746564206265666f72652061637469766174696f6e20626c6f636b696e76616c69642073656e6465723b206d757374206265206c6174657374206c6f67696320636f6e74726163746661696c75726520746f207472616e73666572207175616e746974792066726f6d20746f6b656e62616420546f6b656e3b207472616e7366657246726f6d206572726f6e656f75736c79207265706f72746564206f66207375636365737366756c207472616e736665726e6f7420656e6f7567682062616c616e636520696e206c6f67696320746f207472616e73666572417070206973206e6f74207965742070726f766973696f6e6564000000000000a265627a7a72315820b938ada3bc32828138c90daad9eb4f4f3adb36884397a1e83f125cc02a74ccef64736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004d2130d9d20428dc249a1e938a0bcea4b5b9ac1a000000000000000000000000ac01f01f51f0bdd012c1838bd5cef330e6c7ffca0000000000000000000000005ccaaae7bea14e8e04fb0fc7ed16df49d5678eb80000000000000000000000000000000000000000000000000000000000000005312e312e30000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : owners (address[]): 0x4D2130d9D20428Dc249a1e938A0bcEA4b5B9ac1A,0xaC01F01f51F0bdd012C1838Bd5ceF330E6c7FFCa,0x5CcAAAE7Bea14E8e04FB0FC7ED16DF49d5678Eb8
Arg [1] : version (string): 1.1.0
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 0000000000000000000000004d2130d9d20428dc249a1e938a0bcea4b5b9ac1a
Arg [4] : 000000000000000000000000ac01f01f51f0bdd012c1838bd5cef330e6c7ffca
Arg [5] : 0000000000000000000000005ccaaae7bea14e8e04fb0fc7ed16df49d5678eb8
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 312e312e30000000000000000000000000000000000000000000000000000000Deployed Bytecode Sourcemap
9943:8029:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6728:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6728:23:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6728:23:0;;:::i;:::-;;;;-1:-1:-1;;;;;6728:23:0;;;;;;;;;;;;;;15261:645;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15261:645:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15261:645:0;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15261:645:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15261:645:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;15261:645:0;;-1:-1:-1;15261:645:0;-1:-1:-1;15261:645:0;:::i;:::-;;10349:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10349:34:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10349:34:0;;;;:::i;:::-;;;;-1:-1:-1;;;;;10349:34:0;;;;;;;;;;;;;;;;;;;;;13302:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13302:220:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13302:220:0;;;;:::i;7475:431::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7475:431:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7475:431:0;-1:-1:-1;;;;;7475:431:0;;:::i;13528:459::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13528:459:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13528:459:0;;;;:::i;11297:121::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11297:121:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11297:121:0;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11297:121:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11297:121:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;11297:121:0;;-1:-1:-1;11297:121:0;-1:-1:-1;11297:121:0;:::i;17343:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17343:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17343:124:0;;;;:::i;12590:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12590:233:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12590:233:0;;;;:::i;12065:519::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12065:519:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12065:519:0;;;;;;;;-1:-1:-1;;;;;12065:519:0;;:::i;6756:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6756:39:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6756:39:0;-1:-1:-1;;;;;6756:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;14118:240;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14118:240:0;;;;:::i;10388:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10388:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10388:41:0;-1:-1:-1;;;;;10388:41:0;;:::i;8681:103::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8681:103:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8681:103:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8681:103:0;;;;;;;;;;;;;;;;;9233:614;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9233:614:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9233:614:0;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9233:614:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9233:614:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9233:614:0;;-1:-1:-1;9233:614:0;-1:-1:-1;9233:614:0;:::i;10434:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10434:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14442:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14442:234:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14442:234:0;;;;;-1:-1:-1;;;;;14442:234:0;;;;;;;;;;:::i;17058:279::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17058:279:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17058:279:0;;;;:::i;:::-;;;;-1:-1:-1;;;;;17058:279:0;;;;;;;;;;;;;;;;;;;;;;;;;;;17850:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17850:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17850:117:0;;;;;;;;-1:-1:-1;;;;;17850:117:0;;:::i;:::-;;;;;;;;;;;;;;;;554:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;554:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;554:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17582:262;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17582:262:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17582:262:0;;;;;;;;-1:-1:-1;;;;;17582:262:0;;:::i;16325:603::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16325:603:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16325:603:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16325:603:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16325:603:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;16325:603:0;;-1:-1:-1;16325:603:0;-1:-1:-1;16325:603:0;:::i;7199:73::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7199:73:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7199:73:0;-1:-1:-1;;;;;7199:73:0;;:::i;17473:103::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17473:103:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17473:103:0;;;;:::i;7115:78::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7115:78:0;;;:::i;8399:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8399:276:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8399:276:0;;;;;;;;-1:-1:-1;;;;;8399:276:0;;:::i;11747:312::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11747:312:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11747:312:0;;;;;;;;-1:-1:-1;;;;;11747:312:0;;:::i;8033:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8033:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8033:45:0;;;;;;;;;:::i;8790:139::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8790:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8790:139:0;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8790:139:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8790:139:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8790:139:0;;-1:-1:-1;8790:139:0;-1:-1:-1;8790:139:0;:::i;13171:125::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13171:125:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13171:125:0;;;;:::i;6728:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6728:23:0;;-1:-1:-1;6728:23:0;:::o;15261:645::-;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;15341:5;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;15356:13;15371;15397:14;15405:5;15397:7;:14::i;:::-;15388:54;;;-1:-1:-1;;;15388:54:0;;15419:10;15388:54;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15388:30:0;;;;;;;15419:10;;15431;;;;15388:54;;;15431:10;;;;15388:54;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15388:54:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15388:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15388:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15388:54:0;;;;;;;;;-1:-1:-1;15388:54:0;-1:-1:-1;15453:12:0;;15449:452;;15494:11;;;15476:15;15494:11;;;:4;:11;;;;;;;;-1:-1:-1;;;;;15522:19:0;;;;:12;;;:19;;;;;;;:31;-1:-1:-1;15522:31:0;15514:72;;;;;-1:-1:-1;;;15514:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15617:11;;;;;;;;:4;:11;;;;;;;;-1:-1:-1;;;;;15617:27:0;;;;:20;;:27;;;;;;:43;;15651:8;;15617:33;:43;:::i;:::-;-1:-1:-1;;;;;15595:19:0;;;;;;:12;;;:19;;;;;:65;;;;15669:12;:224;;15826:67;15864:5;15872:8;15882:10;15826:31;:67::i;:::-;15669:224;;;15701:43;;15717:10;;15701:43;;;;;15735:8;;15701:43;;;;15735:8;15717:10;15701:43;;;;;;;15693:80;;;;;-1:-1:-1;;;15693:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15449:452;;11287:1;;15261:645;;;;:::o;10349:34::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10349:34:0;;;;;:::o;13302:220::-;10341:1;11105:14;11113:5;11105:7;:14::i;:::-;-1:-1:-1;;;;;11091:28:0;:10;-1:-1:-1;;;;;11091:28:0;;11083:86;;;;-1:-1:-1;;;11083:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13400:11;;;13382:15;13400:11;;;:4;:11;;;;;;;;;13452:18;;13473:1;13477:12;;;13423:67;;-1:-1:-1;;13452:22:0;;;13423:67;;;;-1:-1:-1;;;;;13477:12:0;13423:67;;;;;;;;;13400:11;;;13423:67;;;;;;;;13497:19;13512:3;13497:14;:19::i;:::-;11171:1;13302:220;;:::o;7475:431::-;7058:10;7050:19;;;;:7;:19;;;;;;;;7042:61;;;;;-1:-1:-1;;;7042:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7545:14:0;;;;;;:7;:14;;;;;;;;7537:53;;;;;-1:-1:-1;;;7537:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7621:1;7605:13;;:17;7597:55;;;;;-1:-1:-1;;;7597:55:0;;;;;;;;;;;;-1:-1:-1;;;7597:55:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7659:14:0;;7676:5;7659:14;;;:7;:14;;;;;:22;;-1:-1:-1;;7659:22:0;;;7688:213;7709:6;:13;7705:17;;7688:213;;;7755:5;-1:-1:-1;;;;;7742:18:0;:6;7749:1;7742:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7742:9:0;:18;7738:156;;;7785:6;7792:13;;-1:-1:-1;;7792:17:0;;;7785:25;;;;;;;;;;;;;;;;;7773:9;;-1:-1:-1;;;;;7785:25:0;;;;7780:1;;7773:9;;;;;;;;;;;;;;:37;;;;;-1:-1:-1;;;;;7773:37:0;;;;;-1:-1:-1;;;;;7773:37:0;;;;;;7821:6;:12;;;;;;;;;;;;;;;;-1:-1:-1;;7821:12:0;;;;;-1:-1:-1;;;;;;7821:12:0;;;;;;;;;7849:19;;-1:-1:-1;;;;;7849:19:0;;;;;;7879:5;;7738:156;7724:3;;7688:213;;;;7475:431;:::o;13528:459::-;13586:5;11105:14;11113:5;11105:7;:14::i;:::-;-1:-1:-1;;;;;11091:28:0;:10;-1:-1:-1;;;;;11091:28:0;;11083:86;;;;-1:-1:-1;;;11083:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;13605:5;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;13637:11;;;13619:15;13637:11;;;:4;:11;;;;;13663:19;;;;13655:55;;;;;-1:-1:-1;;;13655:55:0;;;;;;;;;;;;-1:-1:-1;;;13655:55:0;;;;;;;;;;;;;;;13747:12;13725:3;:19;;;:34;13717:99;;;;-1:-1:-1;;;13717:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13840:12;;;;;27:10:-1;;23:18;;;45:23;;13823:11:0;:30;;;;;;;;;;;-1:-1:-1;;;;;;13823:30:0;-1:-1:-1;;;;;13840:12:0;;;13823:30;;;;;;13887:19;13823:3;13887:14;:19::i;:::-;13941:18;;13918:63;;;;;;-1:-1:-1;;13941:22:0;13966:14;13928:5;13966:7;:14::i;:::-;13918:63;;;;;;;;;-1:-1:-1;;;;;13918:63:0;;;;;;;;;;;;;;;;11287:1;11171;13528:459;;:::o;11297:121::-;7058:10;7050:19;;;;:7;:19;;;;;;;;7042:61;;;;;-1:-1:-1;;;7042:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11384:31;11397:5;11404:10;;11384:31;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11384:12:0;;-1:-1:-1;;;11384:31:0:i;17343:124::-;17413:11;;;17395:7;17413:11;;;:4;:11;;;;;17433:26;;-1:-1:-1;;17433:30:0;;;17413:51;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17413:51:0;;17343:124;-1:-1:-1;;17343:124:0:o;12590:233::-;12650:5;8320:29;8331:5;8338:10;8320;:29::i;:::-;8312:75;;;;-1:-1:-1;;;8312:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;12669:5;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;12701:11;;;12683:15;12701:11;;;:4;:11;;;;;;;;;12753:18;;12774:1;12778:12;;;12724:67;;-1:-1:-1;;12753:22:0;;;12724:67;;;;-1:-1:-1;;;;;12778:12:0;12724:67;;;;;;;;;12701:11;;;12724:67;;;;;;;;12798:19;12813:3;12798:14;:19::i;:::-;11287:1;8389;12590:233;;:::o;12065:519::-;12137:5;8320:29;8331:5;8338:10;8320;:29::i;:::-;8312:75;;;;-1:-1:-1;;;8312:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;12156:5;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;12176:5;-1:-1:-1;;;;;402:21:0;;394:49;;;;;-1:-1:-1;;;394:49:0;;;;;;;;;;;;-1:-1:-1;;;394:49:0;;;;;;;;;;;;;;;12208:11;;;12190:15;12208:11;;;:4;:11;;;;;12234:12;;;;-1:-1:-1;;;;;12234:12:0;:26;12226:101;;;;-1:-1:-1;;;12226:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12334:12;;;;:20;;-1:-1:-1;;;;;;12334:20:0;-1:-1:-1;;;;;12334:20:0;;;;;12408;;:7;:20::i;:::-;-1:-1:-1;;;;;12398:50:0;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12398:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12398:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12398:52:0;12383:12;:67;12361:19;;;:89;;;-1:-1:-1;;;;;12457:16:0;;;;;;;:9;12398:52;12457:16;;;;;;;;:23;;-1:-1:-1;;12457:23:0;12476:4;12457:23;;;;;;12519:18;;12544:12;;;;12558:19;;12492:86;;-1:-1:-1;;12519:22:0;;;12457:23;12492:86;;;12544:12;;;;12492:86;;;;;;;;;;;;;;;;;;;;;;;;;;;445:1;11287;8389;12065:519;;;:::o;6756:39::-;;;;;;;;;;;;;;;:::o;14118:240::-;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;14183:5;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;14215:11;;;;14197:15;14215:11;;;:4;:11;;;;;;;;14253:17;;;:12;;;:17;;;;;;;14215:11;;14253:33;;:17;14276:9;;14253:22;:33;:::i;:::-;14233:17;;;;:12;;;:17;;;;;:53;14302:14;14310:5;14302:7;:14::i;:::-;14293:59;;;-1:-1:-1;;;14293:59:0;;14325:10;14293:59;;;;10247:3;14293:59;;;;;;14342:9;14293:59;;;;;;-1:-1:-1;;;;;14293:31:0;;;;;;;:59;;;;;10247:3;;14293:59;;;;;;10247:3;14293:31;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;14293:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;10388:41:0;;;;;;;;;;;;;;;:::o;8681:103::-;8765:16;;;;;;;:9;:16;;;;;;;;;8758:23;;;;;;;;;;;;;;;;;8738:16;;8758:23;;;8765:16;8758:23;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8758:23:0;;;;;;;;;;;;;;;;;;;;;;;8681:103;;;:::o;9233:614::-;9326:5;8320:29;8331:5;8338:10;8320;:29::i;:::-;8312:75;;;;-1:-1:-1;;;8312:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9374:16;;;9340:31;9374:16;;;:9;:16;;;;;9405:20;;:41;-1:-1:-1;9397:79:0;;;;;-1:-1:-1;;;9397:79:0;;;;;;;;;;;;-1:-1:-1;;;9397:79:0;;;;;;;;;;;;;;;9488:6;9483:359;9500:22;;;9483:359;;;9543:6;9538:297;9559:20;;9555:24;;9538:297;;;9621:11;;9633:1;9621:14;;;;;;;;;;;;;-1:-1:-1;;;;;9621:14:0;-1:-1:-1;;;;;9601:34:0;:13;9615:1;9601:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9601:16:0;:34;9597:229;;;9683:20;;9669:13;;-1:-1:-1;;9683:24:0;;;9669:39;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9669:39:0;9650:13;9664:1;9650:16;;;;;;;;;;;;;;;;:58;;;;;-1:-1:-1;;;;;9650:58:0;;;;;-1:-1:-1;;;;;9650:58:0;;;;;;9721:13;:19;;;;;;;;;;;;;;;;-1:-1:-1;;9721:19:0;;;;;-1:-1:-1;;;;;;9721:19:0;;;;;;9758:38;9774:5;9781:11;;9793:1;9781:14;;;;;;;9758:38;;;;;;;;;;9781:14;;;;;;;;;-1:-1:-1;;;;;9781:14:0;9758:38;;;;-1:-1:-1;9758:38:0;;;;;;;;;9809:5;;9597:229;9581:3;;9538:297;;;-1:-1:-1;9524:3:0;;9483:359;;10434:32;;;;;;:::o;14442:234::-;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;14529:5;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;14543:60;14573:5;14586;14594:8;14543:29;:60::i;:::-;14619:14;14627:5;14619:7;:14::i;:::-;14610:60;;;-1:-1:-1;;;14610:60:0;;14642:10;14610:60;;;;-1:-1:-1;;;;;14610:60:0;;;;;;;;;;;;;;;:31;;;;;;;:60;;;;;-1:-1:-1;;14610:60:0;;;;;;;;-1:-1:-1;14610:31:0;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;14610:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14610:60:0;;;;14442:234;;;;:::o;17058:279::-;17108:15;17125:16;17143:20;17172:15;;:::i;:::-;17190:11;;;;;;;:4;:11;;;;;;;;;17172:29;;;;;;;;;;;;;;;;;;;;;;;17190:11;;17172:29;;17190:11;;17172:29;;17190:11;17172:29;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17172:29:0;;;;;;;;;;;;;;;;-1:-1:-1;;;17172:29:0;;;-1:-1:-1;;17172:29:0;;;;-1:-1:-1;;;;;17172:29:0;;;;;;;;;;;;;;;17218:12;;17231:19;;17172:29;;-1:-1:-1;17218:12:0;-1:-1:-1;;17231:23:0;;;17218:37;;;;;;;;;;;;17208:47;;17273:4;:13;;;17262:24;;17311:4;:20;;;17293:38;;17058:279;;;;;;:::o;17850:117::-;17937:11;;;17922:4;17937:11;;;:4;:11;;;;;;;;-1:-1:-1;;;;;17937:27:0;;;;:20;;:27;;;;;;17850:117;;;;;:::o;554:21::-;;;;;;;;;;;;;;;-1:-1:-1;;554:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17582:262::-;17693:11;;;17652:4;17693:11;;;:4;:11;;;;;;;;17665:47;;;;;;;;;;;;;;;;;:25;;:47;;17693:11;17665:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17665:47:0;;;;;;;;;;;;;;;;-1:-1:-1;;17733:15:0;;17665:47;;-1:-1:-1;;;;17719:101:0;17750:5;;17719:101;;17794:5;-1:-1:-1;;;;;17775:24:0;:8;17788:1;17784;:5;17775:15;;;;;;;;;;;;;;-1:-1:-1;;;;;17775:24:0;;17771:41;;;17808:4;17801:11;;;;;;17771:41;-1:-1:-1;;17757:3:0;17719:101;;;-1:-1:-1;17833:5:0;;17582:262;-1:-1:-1;;;;17582:262:0:o;16325:603::-;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;16415:4;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;11224:11;;;11253:1;11224:11;;;:4;:11;;;;;:26;16433:2;;11216:69;;;;;-1:-1:-1;;;11216:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11216:69:0;;;;;;;;;;;;;;;16445:13;16460;16486;16494:4;16486:7;:13::i;:::-;16477:53;;;-1:-1:-1;;;16477:53:0;;16507:10;16477:53;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16477:29:0;;;;;;;16507:10;;16519;;;;16477:53;;;16519:10;;;;16477:53;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16477:53:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16477:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16477:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16477:53:0;;;;;;;;;-1:-1:-1;16477:53:0;-1:-1:-1;16541:12:0;;16537:386;;16576:2;16568:10;;:4;:10;;;16564:286;;16599:10;;;;;;;:4;:10;;;;;;;;-1:-1:-1;;;;;16599:26:0;;;;:19;;:26;;;;;;:38;-1:-1:-1;16599:38:0;16591:90;;;;-1:-1:-1;;;16591:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16721:10;;;;;;;;:4;:10;;;;;;;;-1:-1:-1;;;;;16721:26:0;;;;:19;;:26;;;;;;:42;;16754:8;;16721:32;:42;:::i;:::-;16692:10;;;;;;;;:4;:10;;;;;;;;-1:-1:-1;;;;;16692:26:0;;;;;:19;;;;:26;;;;;:71;;;;16801:8;;;;;;;;;;;:24;;;:17;;;;:24;;;;;;;:39;;16831:8;;16801:29;:39;:::i;:::-;16774:8;;;;;;;:4;:8;;;;;;;;-1:-1:-1;;;;;16774:24:0;;;;:17;;:24;;;;;:66;16564:286;16867:11;16875:2;16867:7;:11::i;:::-;16858:57;;;-1:-1:-1;;;16858:57:0;;16887:10;16858:57;;;;-1:-1:-1;;;;;16858:57:0;;;;;;;;;;;;;;;:28;;;;;;;:57;;;;;-1:-1:-1;;16858:57:0;;;;;;;;-1:-1:-1;16858:28:0;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;16858:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16858:57:0;;;;11287:1;;;16325:603;;;;;:::o;7199:73::-;7058:10;7050:19;;;;:7;:19;;;;;;;;7042:61;;;;;-1:-1:-1;;;7042:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7253:16;7263:5;7253:9;:16::i;:::-;7199:73;:::o;17473:103::-;17554:11;;;;;;;:4;:11;;;;;;;;;17547:26;;;;;;;;;;;;;;;;;17527:16;;17547:26;;;17554:11;17547:26;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17547:26:0;;;;;;;;;;;;;;;;;;;;;;17473:103;;;:::o;7115:78::-;7157:16;7184:6;7177:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7177:13:0;;;;;;;;;;;;;;;;;;;;;;;7115:78;:::o;8399:276::-;8518:16;;;8472:4;8518:16;;;:9;:16;;;;;;;;8485:49;;;;;;;;;;;;;;;;;:30;;:49;;8518:16;8485:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8485:49:0;;;;;;;;;;;;;;;;-1:-1:-1;8485:49:0;;-1:-1:-1;8546:6:0;;-1:-1:-1;;;;8541:110:0;8562:13;:20;8558:1;:24;8541:110;;;8622:8;-1:-1:-1;;;;;8602:28:0;:13;8616:1;8602:16;;;;;;;;;;;;;;-1:-1:-1;;;;;8602:28:0;;8598:45;;;8639:4;8632:11;;;;;;8598:45;8584:3;;8541:110;;11747:312;11820:5;8320:29;8331:5;8338:10;8320;:29::i;:::-;8312:75;;;;-1:-1:-1;;;8312:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11840:5;-1:-1:-1;;;;;402:21:0;;394:49;;;;;-1:-1:-1;;;394:49:0;;;;;;;;;;;;-1:-1:-1;;;394:49:0;;;;;;;;;;;;;;;11872:11;;;11854:15;11872:11;;;:4;:11;;;;;11898:18;;:23;11890:62;;;;;-1:-1:-1;;;11890:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;11959:23:0;;;;;;;;;;;;;-1:-1:-1;;;;;;11959:23:0;-1:-1:-1;;;;;11959:23:0;;;;;;;;12022:18;;11994:59;;;-1:-1:-1;;12022:22:0;;;11994:59;;;;;;;;;;;;;;;;;;;;;;;;;445:1;8389;11747:312;;;:::o;8033:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8033:45:0;;-1:-1:-1;8033:45:0;;-1:-1:-1;8033:45:0:o;8790:139::-;8878:5;8320:29;8331:5;8338:10;8320;:29::i;:::-;8312:75;;;;-1:-1:-1;;;8312:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8892:31;8906:5;8913:9;;8892:31;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8892:13:0;;-1:-1:-1;;;8892:31:0:i;13171:125::-;10341:1;11105:14;11113:5;11105:7;:14::i;:::-;-1:-1:-1;;;;;11091:28:0;:10;-1:-1:-1;;;;;11091:28:0;;11083:86;;;;-1:-1:-1;;;11083:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13248:11:0;;;;;;:4;:11;;;;;13278:12;13248:27;;;;:42;13171:125::o;1443:111::-;1520:5;;;1515:16;;;;1507:44;;;;;-1:-1:-1;;;1507:44:0;;;;;;;;;;;;-1:-1:-1;;;1507:44:0;;;;;;;;;;;;;;15912:407;16008:18;16029:5;-1:-1:-1;;;;;16029:15:0;;16045:2;16029:19;;;;;;;;;;;;;-1:-1:-1;;;;;16029:19:0;-1:-1:-1;;;;;16029:19:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16029:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16029:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16029:19:0;16063:28;;;-1:-1:-1;;;16063:28:0;;-1:-1:-1;;;;;16063:28:0;;;;;;;;;;;;;;;16029:19;;-1:-1:-1;16063:14:0;;;;;;:28;;;;;16029:19;;16063:28;;;;;;;;-1:-1:-1;16063:14:0;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;16063:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16063:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16063:28:0;16055:80;;;;-1:-1:-1;;;16055:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16142:17;16162:5;-1:-1:-1;;;;;16162:15:0;;16178:2;16162:19;;;;;;;;;;;;;-1:-1:-1;;;;;16162:19:0;-1:-1:-1;;;;;16162:19:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16162:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16162:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16162:19:0;;-1:-1:-1;16233:8:0;16196:33;16162:19;16215:13;16196:33;:18;:33;:::i;:::-;:45;16188:125;;;;-1:-1:-1;;;16188:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15912:407;;;;;:::o;12829:216::-;12895:20;10341:1;12895:7;:20::i;:::-;12933:12;;;;12885:61;;;-1:-1:-1;;;12885:61:0;;-1:-1:-1;;;;;12933:12:0;;;12885:61;;;;;;:47;;;;;;;:61;;;;;12933:12;;12885:61;;;;;;;;12933:12;12885:47;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;12885:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;12970:12:0;;;;;-1:-1:-1;;;;;12970:12:0;12960:23;;;;:9;:23;;;;;12953:30;;-1:-1:-1;;12953:30:0;;;12990:19;;-1:-1:-1;;;;;;12990:19:0;;;;13016;;;;:23;12829:216::o;11424:317::-;11512:16;;;;;;;:9;:16;;;;;:23;:28;11504:66;;;;;-1:-1:-1;;;11504:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11585:14;;:23;;;;:14;;:23;11577:64;;;;;-1:-1:-1;;;11577:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11648:14;:16;;-1:-1:-1;;11648:16:0;;;;;;;;;;;;;;11676:20;;;;;;;;;;;;;;;;;;;11703:32;11717:5;11724:10;11703:13;:32::i;1227:107::-;1303:5;;;1298:16;;;;1290:41;;;;;-1:-1:-1;;;1290:41:0;;;;;;;;;;;;-1:-1:-1;;;1290:41:0;;;;;;;;;;;;;;14682:573;14799:30;;;-1:-1:-1;;;14799:30:0;;14823:4;14799:30;;;;;;14778:18;;-1:-1:-1;;;;;14799:15:0;;;;;:30;;;;;;;;;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;14799:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14799:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14799:30:0;14844:55;;;-1:-1:-1;;;14844:55:0;;14863:10;14844:55;;;;14883:4;14844:55;;;;;;;;;;;;14799:30;;-1:-1:-1;;;;;;14844:18:0;;;;;:55;;;;;14799:30;;14844:55;;;;;;;;-1:-1:-1;14844:18:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;14844:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14844:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14844:55:0;14836:107;;;;-1:-1:-1;;;14836:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14970:30;;;-1:-1:-1;;;14970:30:0;;14994:4;14970:30;;;;;;14950:17;;-1:-1:-1;;;;;14970:15:0;;;;;:30;;;;;;;;;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;14970:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14970:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14970:30:0;;-1:-1:-1;15052:8:0;15015:33;14970:30;15034:13;15015:33;:18;:33;:::i;:::-;:45;15007:125;;;;-1:-1:-1;;;15007:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15157:11;;;;15139:15;15157:11;;;:4;:11;;;;;;;;-1:-1:-1;;;;;15206:28:0;;;;:12;;;:28;;;;;;;15157:11;;15206:43;;:28;15240:8;;15206:33;:43;:::i;:::-;-1:-1:-1;;;;;15175:28:0;;;;;;;:12;;;;:28;;;;;:74;;;;-1:-1:-1;;;;14682:573:0:o;7278:191::-;7333:5;-1:-1:-1;;;;;402:21:0;;394:49;;;;;-1:-1:-1;;;394:49:0;;;;;;;;;;;;-1:-1:-1;;;394:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7352:14:0;;;;;;:7;:14;;;;;;;;7347:117;;-1:-1:-1;;;;;7377:14:0;;;;;;:7;:14;;;;;;:21;;-1:-1:-1;;7377:21:0;7394:4;7377:21;;;;;;27:10:-1;;23:18;;;45:23;;7407:18:0;;;;;;;-1:-1:-1;;;;;;7407:18:0;;;;;7439:17;;;7377:14;7439:17;7278:191;;:::o;8935:290::-;9021:6;9016:204;9037:9;:16;9033:1;:20;9016:204;;;9074:31;9085:5;9092:9;9102:1;9092:12;;;;;;;;;;;;;;9074:10;:31::i;:::-;9069:144;;9118:16;;;;;;;:9;:16;;;;;9140:12;;:9;;9150:1;;9140:12;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9118:35:0;;;;;;;;;;-1:-1:-1;;;;;;9118:35:0;-1:-1:-1;;;;;9118:35:0;;;;;;;;;9190:12;;9169:34;;9183:5;;9190:12;;9200:1;;9190:12;;;;;;;;;;;;9169:34;;;;;;;;;;;;;-1:-1:-1;;;;;9169:34:0;-1:-1:-1;;;;;9169:34:0;;;;;;;;;;;;;;;;9069:144;9055:3;;9016:204;;9943:8029;;;;;;;;;;;;;;;-1:-1:-1;;;;;9943:8029:0;;;;;;;;;;:::o
Swarm Source
bzzr://b938ada3bc32828138c90daad9eb4f4f3adb36884397a1e83f125cc02a74ccef
Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...Loading[ Download: CSV Export ][ Download: CSV Export ]A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to AbiReencodingHeadOverflowWithStaticArrayCleanup (medium-severity), DirtyBytesArrayToStorage (low-severity), NestedCalldataArrayAbiReencodingSizeValidation (very low-severity), ABIDecodeTwoDimensionalArrayMemory (very low-severity), KeccakCaching (medium-severity), EmptyByteArrayCopy (medium-severity), DynamicArrayCleanup (medium-severity), ImplicitConstructorCallvalueCheck (very low-severity), TupleAssignmentMultiStackSlotComponents (very low-severity), MemoryArrayCreationOverflow (low-severity), privateCanBeOverridden (low-severity), YulOptimizerRedundantAssignmentBreakContinue0.5 (low-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Address Cards
To use this feature, please login to your Etherscan account and return to this page.Before You Copy
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.