Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Farming
Overview
Max Total Supply
48,490,000 PLAAS
Holders
3,742 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
100 PLAASValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PLAAS_FARMERS_TOKEN
Compiler Version
v0.5.13+commit.5b0b510c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-04 */ pragma solidity 0.5.13; /* ___________________________________________________________________ _ _ ______ | | / / / --|-/|-/-----__---/----__----__---_--_----__-------/-------__------ |/ |/ /___) / / ' / ) / / ) /___) / / ) __/__|____(___ _/___(___ _(___/_/_/__/_(___ _____/______(___/__o_o_ _____ _ _____ ______ _____ __ __ ______ _____ _____ _______ ____ _ ________ _ _ | __ \| | /\ /\ / ____| | ____/\ | __ \| \/ | ____| __ \ / ____| |__ __/ __ \| |/ / ____| \ | | | |__) | | / \ / \ | (___ | |__ / \ | |__) | \ / | |__ | |__) | (___ | | | | | | ' /| |__ | \| | | ___/| | / /\ \ / /\ \ \___ \ | __/ /\ \ | _ /| |\/| | __| | _ / \___ \ | | | | | | < | __| | . ` | | | | |____ / ____ \ / ____ \ ____) | | | / ____ \| | \ \| | | | |____| | \ \ ____) | | | | |__| | . \| |____| |\ | |_| |______/_/ \_\/_/ \_\_____/ |_|/_/ \_\_| \_\_| |_|______|_| \_\_____/ |_| \____/|_|\_\______|_| \_| === 'PLAAS' Token contract with following features === => ERC20 Compliance => ERC777 Compliance => Higher degree of control by owner - safeguard functionality => SafeMath implementation => Burnable and minting => user whitelisting ======================= Quick Stats =================== => Name : PLAAS FARMERS TOKEN => Symbol : PLAAS => Total supply: 50,000,000 (50 Million) => Decimals : 18 ------------------------------------------------------------------- Copyright (c) 2019 onwards PLAAS Inc. ( https://plaas.io ) Contract designed with ❤ by EtherAuthority ( https://EtherAuthority.io ) ------------------------------------------------------------------- */ //*******************************************************************// //------------------------ SafeMath Library -------------------------// //*******************************************************************// library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } //*******************************************************************// //------------------------ ERC777 Interfaces -------------------------// //*******************************************************************// interface IERC1820Registry { /** * @dev Sets the `implementer` contract as `account`'s implementer for * `interfaceHash`. * * `account` being the zero address is an alias for the caller's address. * The zero address can also be used in `implementer` to remove an old one. * * See {interfaceHash} to learn how these are created. * * Emits an {InterfaceImplementerSet} event. * * Requirements: * * - the caller must be the current manager for `account`. * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not * end in 28 zeroes). * - `implementer` must implement {IERC1820Implementer} and return true when * queried for support, unless `implementer` is the caller. See * {IERC1820Implementer-canImplementInterfaceForAddress}. */ function setInterfaceImplementer(address account, bytes32 interfaceHash, address implementer) external; /** * @dev Returns the implementer of `interfaceHash` for `account`. If no such * implementer is registered, returns the zero address. * * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28 * zeroes), `account` will be queried for support of it. * * `account` being the zero address is an alias for the caller's address. */ function getInterfaceImplementer(address account, bytes32 interfaceHash) external view returns (address); } interface IERC777Sender { /** * @dev Called by an {IERC777} token contract whenever a registered holder's * (`from`) tokens are about to be moved or destroyed. The type of operation * is conveyed by `to` being the zero address or not. * * This call occurs _before_ the token contract's state is updated, so * {IERC777-balanceOf}, etc., can be used to query the pre-operation state. * * This function may revert to prevent the operation from being executed. */ function tokensToSend( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; } interface IERC777Recipient { /** * @dev Called by an {IERC777} token contract whenever tokens are being * moved or created into a registered account (`to`). The type of operation * is conveyed by `from` being the zero address or not. * * This call occurs _after_ the token contract's state is updated, so * {IERC777-balanceOf}, etc., can be used to query the post-operation state. * * This function may revert to prevent the operation from being executed. */ function tokensReceived( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } //*******************************************************************// //------------------ Contract to Manage Ownership -------------------// //*******************************************************************// contract owned { address payable public owner; address payable internal newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address payable _newOwner) external onlyOwner { newOwner = _newOwner; } //this flow is to prevent transferring ownership to wrong wallet by mistake function acceptOwnership() external { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } //****************************************************************************// //--------------------- MAIN CODE STARTS HERE ---------------------// //****************************************************************************// /** * @dev Implementation of the {IERC777} 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}. * * Support for ERC20 is included in this contract, as specified by the EIP: both * the ERC777 and ERC20 interfaces can be safely used when interacting with it. * Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token * movements. * * Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there * are no special restrictions in the amount of tokens that created, moved, or * destroyed. This makes integration with ERC20 applications seamless. */ contract PLAAS_FARMERS_TOKEN is owned, Context { using SafeMath for uint256; bool public safeguard; //putting safeguard on will halt all non-owner functions //--- Token variables ---------------// string public constant name = "PLAAS FARMERS TOKEN"; string public constant symbol = "PLAAS"; uint256 public constant decimals = 18; // for erc777, this MUST be 18 uint256 public constant maxSupply = 50000000 * (10**decimals); // this is constant and will never change; uint256 public totalSupply = maxSupply; // this can change as people burn their tokens //--- EVENTS -----------------------// event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Sent(address indexed operator, address indexed from, address indexed to, uint256 amount, bytes data, bytes operatorData ); event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData); event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData); event AuthorizedOperator(address indexed operator, address indexed tokenHolder); event RevokedOperator(address indexed operator, address indexed tokenHolder); event FrozenAccounts(address target, bool frozen); IERC1820Registry constant private ERC1820_REGISTRY = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24); mapping(address => uint256) private _balances; // We inline the result of the following hashes because Solidity doesn't resolve them at compile time. // See https://github.com/ethereum/solidity/issues/4024. // keccak256("ERC777TokensSender") bytes32 constant private TOKENS_SENDER_INTERFACE_HASH = 0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895; // keccak256("ERC777TokensRecipient") bytes32 constant private TOKENS_RECIPIENT_INTERFACE_HASH = 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b; // This isn't ever read from - it's only used to respond to the defaultOperators query. address[] private _defaultOperatorsArray; // Immutable, but accounts may revoke them (tracked in __revokedDefaultOperators). mapping(address => bool) private _defaultOperators; // For each account, a mapping of its operators and revoked default operators. mapping(address => mapping(address => bool)) private _operators; mapping(address => mapping(address => bool)) private _revokedDefaultOperators; // ERC20-allowances mapping (address => mapping (address => uint256)) private _allowances; //User wallet freezing/blacklisting mapping (address => bool) public frozenAccount; /** * @dev `defaultOperators` may be an empty array. */ constructor( ) public { //default operators is contract creator _defaultOperatorsArray.push (msg.sender); _defaultOperators[msg.sender] = true; //issuing initial supply _balances[msg.sender] = maxSupply; emit Transfer(address(0), msg.sender, maxSupply); // register interfaces ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256("ERC777Token"), address(this)); ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256("ERC20Token"), address(this)); } /** * @dev See {IERC777-granularity}. * * This implementation always returns `1`. */ function granularity() external pure returns (uint256) { return 1; } /** * @dev Returns the amount of tokens owned by an account (`tokenHolder`). */ function balanceOf(address tokenHolder) external view returns (uint256) { return _balances[tokenHolder]; } /** * @dev See {IERC777-send}. * * Also emits a {IERC20-Transfer} event for ERC20 compatibility. */ function send(address recipient, uint256 amount, bytes calldata data) external { _send(_msgSender(), _msgSender(), recipient, amount, data, "", true); } /** * @dev See {IERC20-transfer}. * * Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient} * interface if it is a contract. * * Also emits a {Sent} event. */ function transfer(address recipient, uint256 amount) external returns (bool) { require(recipient != address(0), "ERC777: transfer to the zero address"); address from = _msgSender(); _callTokensToSend(from, from, recipient, amount, "", ""); _move(from, from, recipient, amount, "", ""); _callTokensReceived(from, from, recipient, amount, "", "", false); return true; } /** * @dev See {IERC777-burn}. * * Also emits a {IERC20-Transfer} event for ERC20 compatibility. */ function burn(uint256 amount, bytes calldata data) external { _burn(_msgSender(), _msgSender(), amount, data, ""); } /** * @dev See {IERC777-isOperatorFor}. */ function isOperatorFor( address operator, address tokenHolder ) public view returns (bool) { return operator == tokenHolder || (_defaultOperators[operator] && !_revokedDefaultOperators[tokenHolder][operator]) || _operators[tokenHolder][operator]; } /** * @dev See {IERC777-authorizeOperator}. */ function authorizeOperator(address operator) external { require(_msgSender() != operator, "ERC777: authorizing self as operator"); if (_defaultOperators[operator]) { delete _revokedDefaultOperators[_msgSender()][operator]; } else { _operators[_msgSender()][operator] = true; } emit AuthorizedOperator(operator, _msgSender()); } /** * @dev See {IERC777-revokeOperator}. */ function revokeOperator(address operator) external { require(operator != _msgSender(), "ERC777: revoking self as operator"); if (_defaultOperators[operator]) { _revokedDefaultOperators[_msgSender()][operator] = true; } else { delete _operators[_msgSender()][operator]; } emit RevokedOperator(operator, _msgSender()); } /** * @dev See {IERC777-defaultOperators}. */ function defaultOperators() external view returns (address[] memory) { return _defaultOperatorsArray; } /** * @dev See {IERC777-operatorSend}. * * Emits {Sent} and {IERC20-Transfer} events. */ function operatorSend( address sender, address recipient, uint256 amount, bytes calldata data, bytes calldata operatorData ) external { require(isOperatorFor(_msgSender(), sender), "ERC777: caller is not an operator for holder"); _send(_msgSender(), sender, recipient, amount, data, operatorData, true); } /** * @dev See {IERC777-operatorBurn}. * * Emits {Burned} and {IERC20-Transfer} events. */ function operatorBurn(address account, uint256 amount, bytes calldata data, bytes calldata operatorData) external { require(isOperatorFor(_msgSender(), account), "ERC777: caller is not an operator for holder"); _burn(_msgSender(), account, amount, data, operatorData); } /** * @dev See {IERC20-allowance}. * * Note that operator and allowance concepts are orthogonal: operators may * not have allowance, and accounts with allowance may not be operators * themselves. */ function allowance(address holder, address spender) external view returns (uint256) { return _allowances[holder][spender]; } /** * @dev See {IERC20-approve}. * * Note that accounts cannot have allowance issued by their operators. */ function approve(address spender, uint256 value) external returns (bool) { address holder = _msgSender(); _approve(holder, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Note that operator and allowance concepts are orthogonal: operators cannot * call `transferFrom` (unless they have allowance), and accounts with * allowance cannot call `operatorSend` (unless they are operators). * * Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events. */ function transferFrom(address holder, address recipient, uint256 amount) external returns (bool) { require(recipient != address(0), "ERC777: transfer to the zero address"); require(holder != address(0), "ERC777: transfer from the zero address"); address spender = _msgSender(); _callTokensToSend(spender, holder, recipient, amount, "", ""); _move(spender, holder, recipient, amount, "", ""); _approve(holder, spender, _allowances[holder][spender].sub(amount, "ERC777: transfer amount exceeds allowance")); _callTokensReceived(spender, holder, recipient, amount, "", "", false); return true; } /** * @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * If a send hook is registered for `account`, the corresponding function * will be called with `operator`, `data` and `operatorData`. * * See {IERC777Sender} and {IERC777Recipient}. * * Emits {Minted} and {IERC20-Transfer} events. * * Requirements * * - `account` cannot be the zero address. * - if `account` is a contract, it must implement the {IERC777Recipient} * interface. */ function _mint( address operator, address account, uint256 amount, bytes memory userData, bytes memory operatorData ) internal { require(account != address(0), "ERC777: mint to the zero address"); require(totalSupply.add(amount) <= maxSupply, 'Exceeds maxSupply'); // Update state variables totalSupply = totalSupply.add(amount); _balances[account] = _balances[account].add(amount); _callTokensReceived(operator, address(0), account, amount, userData, operatorData, true); emit Minted(operator, account, amount, userData, operatorData); emit Transfer(address(0), account, amount); } /** * @dev Send tokens * @param operator address operator requesting the transfer * @param from address token holder address * @param to address recipient address * @param amount uint256 amount of tokens to transfer * @param userData bytes extra information provided by the token holder (if any) * @param operatorData bytes extra information provided by the operator (if any) * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient */ function _send( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData, bool requireReceptionAck ) private { require(from != address(0), "ERC777: send from the zero address"); require(to != address(0), "ERC777: send to the zero address"); _callTokensToSend(operator, from, to, amount, userData, operatorData); _move(operator, from, to, amount, userData, operatorData); _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck); } /** * @dev Burn tokens * @param operator address operator requesting the operation * @param from address token holder address * @param amount uint256 amount of tokens to burn * @param data bytes extra information provided by the token holder * @param operatorData bytes extra information provided by the operator (if any) */ function _burn( address operator, address from, uint256 amount, bytes memory data, bytes memory operatorData ) internal { require(from != address(0), "ERC777: burn from the zero address"); require(!frozenAccount[from], 'blacklisted account'); // Check if sender is frozen require(!safeguard, 'SafeGuard is on'); // SafeGuard checking _callTokensToSend(operator, from, address(0), amount, data, operatorData); // Update state variables _balances[from] = _balances[from].sub(amount, "ERC777: burn amount exceeds balance"); totalSupply = totalSupply.sub(amount); emit Burned(operator, from, amount, data, operatorData); emit Transfer(from, address(0), amount); } function _move( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData ) private { require(!frozenAccount[from], 'blacklisted account'); // Check if sender is frozen require(!frozenAccount[to], 'blacklisted account'); // Check if recipient is frozen require(!safeguard, 'SafeGuard is on'); // SafeGuard checking _balances[from] = _balances[from].sub(amount, "ERC777: transfer amount exceeds balance"); _balances[to] = _balances[to].add(amount); emit Sent(operator, from, to, amount, userData, operatorData); emit Transfer(from, to, amount); } function _approve(address holder, address spender, uint256 value) private { // TODO: restore this require statement if this function becomes internal, or is called at a new callsite. It is // currently unnecessary. //require(holder != address(0), "ERC777: approve from the zero address"); require(spender != address(0), "ERC777: approve to the zero address"); require(!safeguard, 'SafeGuard is on'); // SafeGuard checking _allowances[holder][spender] = value; emit Approval(holder, spender, value); } /** * @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens * @param target Address to be frozen * @param freeze either to freeze it or not */ function freezeAccount(address target, bool freeze) onlyOwner external { frozenAccount[target] = freeze; emit FrozenAccounts(target, freeze); } /** * Change safeguard status on or off * * When safeguard is true, then all the non-owner functions will stop working. * When safeguard is false, then all the functions will resume working back again! */ function changeSafeguardStatus() onlyOwner external{ if (safeguard == false){ safeguard = true; } else{ safeguard = false; } } /** * @dev Call from.tokensToSend() if the interface is registered * @param operator address operator requesting the transfer * @param from address token holder address * @param to address recipient address * @param amount uint256 amount of tokens to transfer * @param userData bytes extra information provided by the token holder (if any) * @param operatorData bytes extra information provided by the operator (if any) */ function _callTokensToSend( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData ) private { address implementer = ERC1820_REGISTRY.getInterfaceImplementer(from, TOKENS_SENDER_INTERFACE_HASH); if (implementer != address(0)) { IERC777Sender(implementer).tokensToSend(operator, from, to, amount, userData, operatorData); } } /** * @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but * tokensReceived() was not registered for the recipient * @param operator address operator requesting the transfer * @param from address token holder address * @param to address recipient address * @param amount uint256 amount of tokens to transfer * @param userData bytes extra information provided by the token holder (if any) * @param operatorData bytes extra information provided by the operator (if any) * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient */ function _callTokensReceived( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData, bool requireReceptionAck ) private { address implementer = ERC1820_REGISTRY.getInterfaceImplementer(to, TOKENS_RECIPIENT_INTERFACE_HASH); if (implementer != address(0)) { IERC777Recipient(implementer).tokensReceived(operator, from, to, amount, userData, operatorData); } else if (requireReceptionAck) { require(msg.sender == tx.origin, "ERC777: token recipient contract has no implementer for ERC777TokensRecipient"); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"frozen","type":"bool"}],"name":"FrozenAccounts","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","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"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"changeSafeguardStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"safeguard","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526012600a0a6302faf080026002553480156200001f57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060043390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506012600a0a6302faf08002600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a0a6302faf080026040518082815260200191505060405180910390a3731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e000000000000000000000000000000000000000000815250600b0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015620002e157600080fd5b505af1158015620002f6573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f4552433230546f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015620003ff57600080fd5b505af115801562000414573d6000803e3d6000fd5b505050506135f980620004286000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806395d89b41116100de578063d95b637111610097578063f2fde38b11610071578063f2fde38b14610939578063fad8b32a1461097d578063fc673c4f146109c1578063fe9d930314610ab95761018e565b8063d95b6371146107f5578063dd62ed3e14610871578063e724529c146108e95761018e565b806395d89b41146105cd5780639bd9bbc614610650578063a9059cbb146106f3578063b414d4b614610759578063b57dbdc6146107b5578063d5abeb01146107d75761018e565b80634bec83351161014b57806370a082311161012557806370a08231146104dd57806379ba5097146105355780638da5cb5b1461053f578063959b8c3f146105895761018e565b80634bec83351461039d578063556f0dc7146103a757806362ad1b83146103c55761018e565b806306e485381461019357806306fdde03146101f2578063095ea7b31461027557806318160ddd146102db57806323b872dd146102f9578063313ce5671461037f575b600080fd5b61019b610b3c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101de5780820151818401526020810190506101c3565b505050509050019250505060405180910390f35b6101fa610bca565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023a57808201518184015260208101905061021f565b50505050905090810190601f1680156102675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c16004803603604081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c03565b604051808215151515815260200191505060405180910390f35b6102e3610c26565b6040518082815260200191505060405180910390f35b6103656004803603606081101561030f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2c565b604051808215151515815260200191505060405180910390f35b610387610e8a565b6040518082815260200191505060405180910390f35b6103a5610e8f565b005b6103af610f41565b6040518082815260200191505060405180910390f35b6104db600480360360a08110156103db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561044257600080fd5b82018360208201111561045457600080fd5b8035906020019184600183028401116401000000008311171561047657600080fd5b90919293919293908035906020019064010000000081111561049757600080fd5b8201836020820111156104a957600080fd5b803590602001918460018302840111640100000000831117156104cb57600080fd5b9091929391929390505050610f4a565b005b61051f600480360360208110156104f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b6040518082815260200191505060405180910390f35b61053d6110a1565b005b61054761123e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105cb6004803603602081101561059f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611263565b005b6105d56114da565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106155780820151818401526020810190506105fa565b50505050905090810190601f1680156106425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106f16004803603606081101561066657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b9091929391929390505050611513565b005b61073f6004803603604081101561070957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061158a565b604051808215151515815260200191505060405180910390f35b61079b6004803603602081101561076f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ae565b604051808215151515815260200191505060405180910390f35b6107bd6116ce565b604051808215151515815260200191505060405180910390f35b6107df6116e1565b6040518082815260200191505060405180910390f35b6108576004803603604081101561080b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ef565b604051808215151515815260200191505060405180910390f35b6108d36004803603604081101561088757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a0565b6040518082815260200191505060405180910390f35b610937600480360360408110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611927565b005b61097b6004803603602081101561094f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a4a565b005b6109bf6004803603602081101561099357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ae7565b005b610ab7600480360360808110156109d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a1e57600080fd5b820183602082011115610a3057600080fd5b80359060200191846001830284011164010000000083111715610a5257600080fd5b909192939192939080359060200190640100000000811115610a7357600080fd5b820183602082011115610a8557600080fd5b80359060200191846001830284011164010000000083111715610aa757600080fd5b9091929391929390505050611d5e565b005b610b3a60048036036040811015610acf57600080fd5b810190808035906020019092919080359060200190640100000000811115610af657600080fd5b820183602082011115610b0857600080fd5b80359060200191846001830284011164010000000083111715610b2a57600080fd5b9091929391929390505050611e68565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b76575b5050505050905090565b6040518060400160405280601381526020017f504c414153204641524d45525320544f4b454e0000000000000000000000000081525081565b600080610c0e611edb565b9050610c1b818585611ee3565b600191505092915050565b60025481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134e06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806135596026913960400191505060405180910390fd5b6000610d43611edb565b9050610d718186868660405180602001604052806000815250604051806020016040528060008152506120d7565b610d9d8186868660405180602001604052806000815250604051806020016040528060008152506123f1565b610e508582610e4b8660405180606001604052806029815260200161353060299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fb9092919063ffffffff16565b611ee3565b610e7e81868686604051806020016040528060008152506040518060200160405280600081525060006129bb565b60019150509392505050565b601281565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee857600080fd5b60001515600160149054906101000a900460ff1615151415610f235760018060146101000a81548160ff021916908315150217905550610f3f565b6000600160146101000a81548160ff0219169083151502179055505b565b60006001905090565b610f5b610f55611edb565b886116ef565b610fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613504602c913960400191505060405180910390fd5b61104f610fbb611edb565b88888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001612d65565b50505050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110fb57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8073ffffffffffffffffffffffffffffffffffffffff16611282611edb565b73ffffffffffffffffffffffffffffffffffffffff1614156112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061344e6024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113d9576007600061134d611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055611476565b6001600660006113e7611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61147e611edb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b6040518060400160405280600581526020017f504c41415300000000000000000000000000000000000000000000000000000081525081565b61158461151e611edb565b611526611edb565b868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050604051806020016040528060008152506001612d65565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611611576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134e06024913960400191505060405180910390fd5b600061161b611edb565b90506116498182868660405180602001604052806000815250604051806020016040528060008152506120d7565b6116758182868660405180602001604052806000815250604051806020016040528060008152506123f1565b6116a381828686604051806020016040528060008152506040518060200160405280600081525060006129bb565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600160149054906101000a900460ff1681565b6012600a0a6302faf0800281565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806118075750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156118065750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806118985750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461198057600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0a5b43af0ef09ecb703ee244f015ac762879d4da4b736850137608ea10ecc2a48282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aa357600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611aef611edb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134726021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c6657600160076000611bd3611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611cfa565b60066000611c72611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b611d02611edb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b611d6f611d69611edb565b876116ef565b611dc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613504602c913960400191505060405180910390fd5b611e60611dcf611edb565b878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612ec2565b505050505050565b611ed6611e73611edb565b611e7b611edb565b8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060405180602001604052806000815250612ec2565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806135a26023913960400191505060405180910390fd5b600160149054906101000a900460ff1615611fec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536166654775617264206973206f6e000000000000000000000000000000000081525060200191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561219557600080fd5b505afa1580156121a9573d6000803e3d6000fd5b505050506040513d60208110156121bf57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123e8578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156123175780820151818401526020810190506122fc565b50505050905090810190601f1680156123445780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561237d578082015181840152602081019050612362565b50505050905090810190601f1680156123aa5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156123cf57600080fd5b505af11580156123e3573d6000803e3d6000fd5b505050505b50505050505050565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626c61636b6c6973746564206163636f756e740000000000000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626c61636b6c6973746564206163636f756e740000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156125f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536166654775617264206973206f6e000000000000000000000000000000000081525060200191505060405180910390fd5b6126608360405180606001604052806027815260200161340560279139600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fb9092919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126f583600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461331090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156127eb5780820151818401526020810190506127d0565b50505050905090810190601f1680156128185780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612851578082015181840152602081019050612836565b50505050905090810190601f16801561287e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906129a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561296d578082015181840152602081019050612952565b50505050905090810190601f16801561299a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612a7957600080fd5b505afa158015612a8d573d6000803e3d6000fd5b505050506040513d6020811015612aa357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612ccf578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612bfa578082015181840152602081019050612bdf565b50505050905090810190601f168015612c275780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c60578082015181840152602081019050612c45565b50505050905090810190601f168015612c8d5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612cb257600080fd5b505af1158015612cc6573d6000803e3d6000fd5b50505050612d5b565b8115612d5a573273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180613493604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133e36022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612e9c8787878787876120d7565b612eaa8787878787876123f1565b612eb9878787878787876129bb565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061342c6022913960400191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626c61636b6c6973746564206163636f756e740000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff161561308b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536166654775617264206973206f6e000000000000000000000000000000000081525060200191505060405180910390fd5b61309a858560008686866120d7565b6131068360405180606001604052806023815260200161357f60239139600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fb9092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061315e8360025461339890919063ffffffff16565b6002819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156132005780820151818401526020810190506131e5565b50505050905090810190601f16801561322d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561326657808201518184015260208101905061324b565b50505050905090810190601f1680156132935780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60008082840190508381101561338e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006133da83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128fb565b90509291505056fe4552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a723158201a0d0108a42a4bb901151fd2eb53967e75d0eaf1288f068052d20a130c3178f664736f6c634300050d0032
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806395d89b41116100de578063d95b637111610097578063f2fde38b11610071578063f2fde38b14610939578063fad8b32a1461097d578063fc673c4f146109c1578063fe9d930314610ab95761018e565b8063d95b6371146107f5578063dd62ed3e14610871578063e724529c146108e95761018e565b806395d89b41146105cd5780639bd9bbc614610650578063a9059cbb146106f3578063b414d4b614610759578063b57dbdc6146107b5578063d5abeb01146107d75761018e565b80634bec83351161014b57806370a082311161012557806370a08231146104dd57806379ba5097146105355780638da5cb5b1461053f578063959b8c3f146105895761018e565b80634bec83351461039d578063556f0dc7146103a757806362ad1b83146103c55761018e565b806306e485381461019357806306fdde03146101f2578063095ea7b31461027557806318160ddd146102db57806323b872dd146102f9578063313ce5671461037f575b600080fd5b61019b610b3c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101de5780820151818401526020810190506101c3565b505050509050019250505060405180910390f35b6101fa610bca565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023a57808201518184015260208101905061021f565b50505050905090810190601f1680156102675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c16004803603604081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c03565b604051808215151515815260200191505060405180910390f35b6102e3610c26565b6040518082815260200191505060405180910390f35b6103656004803603606081101561030f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2c565b604051808215151515815260200191505060405180910390f35b610387610e8a565b6040518082815260200191505060405180910390f35b6103a5610e8f565b005b6103af610f41565b6040518082815260200191505060405180910390f35b6104db600480360360a08110156103db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561044257600080fd5b82018360208201111561045457600080fd5b8035906020019184600183028401116401000000008311171561047657600080fd5b90919293919293908035906020019064010000000081111561049757600080fd5b8201836020820111156104a957600080fd5b803590602001918460018302840111640100000000831117156104cb57600080fd5b9091929391929390505050610f4a565b005b61051f600480360360208110156104f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b6040518082815260200191505060405180910390f35b61053d6110a1565b005b61054761123e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105cb6004803603602081101561059f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611263565b005b6105d56114da565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106155780820151818401526020810190506105fa565b50505050905090810190601f1680156106425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106f16004803603606081101561066657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b9091929391929390505050611513565b005b61073f6004803603604081101561070957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061158a565b604051808215151515815260200191505060405180910390f35b61079b6004803603602081101561076f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ae565b604051808215151515815260200191505060405180910390f35b6107bd6116ce565b604051808215151515815260200191505060405180910390f35b6107df6116e1565b6040518082815260200191505060405180910390f35b6108576004803603604081101561080b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ef565b604051808215151515815260200191505060405180910390f35b6108d36004803603604081101561088757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a0565b6040518082815260200191505060405180910390f35b610937600480360360408110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611927565b005b61097b6004803603602081101561094f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a4a565b005b6109bf6004803603602081101561099357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ae7565b005b610ab7600480360360808110156109d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a1e57600080fd5b820183602082011115610a3057600080fd5b80359060200191846001830284011164010000000083111715610a5257600080fd5b909192939192939080359060200190640100000000811115610a7357600080fd5b820183602082011115610a8557600080fd5b80359060200191846001830284011164010000000083111715610aa757600080fd5b9091929391929390505050611d5e565b005b610b3a60048036036040811015610acf57600080fd5b810190808035906020019092919080359060200190640100000000811115610af657600080fd5b820183602082011115610b0857600080fd5b80359060200191846001830284011164010000000083111715610b2a57600080fd5b9091929391929390505050611e68565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b76575b5050505050905090565b6040518060400160405280601381526020017f504c414153204641524d45525320544f4b454e0000000000000000000000000081525081565b600080610c0e611edb565b9050610c1b818585611ee3565b600191505092915050565b60025481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134e06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806135596026913960400191505060405180910390fd5b6000610d43611edb565b9050610d718186868660405180602001604052806000815250604051806020016040528060008152506120d7565b610d9d8186868660405180602001604052806000815250604051806020016040528060008152506123f1565b610e508582610e4b8660405180606001604052806029815260200161353060299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fb9092919063ffffffff16565b611ee3565b610e7e81868686604051806020016040528060008152506040518060200160405280600081525060006129bb565b60019150509392505050565b601281565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee857600080fd5b60001515600160149054906101000a900460ff1615151415610f235760018060146101000a81548160ff021916908315150217905550610f3f565b6000600160146101000a81548160ff0219169083151502179055505b565b60006001905090565b610f5b610f55611edb565b886116ef565b610fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613504602c913960400191505060405180910390fd5b61104f610fbb611edb565b88888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001612d65565b50505050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110fb57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8073ffffffffffffffffffffffffffffffffffffffff16611282611edb565b73ffffffffffffffffffffffffffffffffffffffff1614156112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061344e6024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113d9576007600061134d611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055611476565b6001600660006113e7611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61147e611edb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b6040518060400160405280600581526020017f504c41415300000000000000000000000000000000000000000000000000000081525081565b61158461151e611edb565b611526611edb565b868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050604051806020016040528060008152506001612d65565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611611576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134e06024913960400191505060405180910390fd5b600061161b611edb565b90506116498182868660405180602001604052806000815250604051806020016040528060008152506120d7565b6116758182868660405180602001604052806000815250604051806020016040528060008152506123f1565b6116a381828686604051806020016040528060008152506040518060200160405280600081525060006129bb565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600160149054906101000a900460ff1681565b6012600a0a6302faf0800281565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806118075750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156118065750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806118985750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461198057600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0a5b43af0ef09ecb703ee244f015ac762879d4da4b736850137608ea10ecc2a48282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aa357600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611aef611edb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134726021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c6657600160076000611bd3611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611cfa565b60066000611c72611edb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b611d02611edb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b611d6f611d69611edb565b876116ef565b611dc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613504602c913960400191505060405180910390fd5b611e60611dcf611edb565b878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612ec2565b505050505050565b611ed6611e73611edb565b611e7b611edb565b8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060405180602001604052806000815250612ec2565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806135a26023913960400191505060405180910390fd5b600160149054906101000a900460ff1615611fec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536166654775617264206973206f6e000000000000000000000000000000000081525060200191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561219557600080fd5b505afa1580156121a9573d6000803e3d6000fd5b505050506040513d60208110156121bf57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123e8578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156123175780820151818401526020810190506122fc565b50505050905090810190601f1680156123445780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561237d578082015181840152602081019050612362565b50505050905090810190601f1680156123aa5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156123cf57600080fd5b505af11580156123e3573d6000803e3d6000fd5b505050505b50505050505050565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626c61636b6c6973746564206163636f756e740000000000000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626c61636b6c6973746564206163636f756e740000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156125f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536166654775617264206973206f6e000000000000000000000000000000000081525060200191505060405180910390fd5b6126608360405180606001604052806027815260200161340560279139600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fb9092919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126f583600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461331090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156127eb5780820151818401526020810190506127d0565b50505050905090810190601f1680156128185780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612851578082015181840152602081019050612836565b50505050905090810190601f16801561287e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906129a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561296d578082015181840152602081019050612952565b50505050905090810190601f16801561299a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612a7957600080fd5b505afa158015612a8d573d6000803e3d6000fd5b505050506040513d6020811015612aa357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612ccf578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612bfa578082015181840152602081019050612bdf565b50505050905090810190601f168015612c275780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c60578082015181840152602081019050612c45565b50505050905090810190601f168015612c8d5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612cb257600080fd5b505af1158015612cc6573d6000803e3d6000fd5b50505050612d5b565b8115612d5a573273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180613493604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133e36022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612e9c8787878787876120d7565b612eaa8787878787876123f1565b612eb9878787878787876129bb565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061342c6022913960400191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626c61636b6c6973746564206163636f756e740000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff161561308b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536166654775617264206973206f6e000000000000000000000000000000000081525060200191505060405180910390fd5b61309a858560008686866120d7565b6131068360405180606001604052806023815260200161357f60239139600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fb9092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061315e8360025461339890919063ffffffff16565b6002819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156132005780820151818401526020810190506131e5565b50505050905090810190601f16801561322d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561326657808201518184015260208101905061324b565b50505050905090810190601f1680156132935780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60008082840190508381101561338e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006133da83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128fb565b90509291505056fe4552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a723158201a0d0108a42a4bb901151fd2eb53967e75d0eaf1288f068052d20a130c3178f664736f6c634300050d0032
Deployed Bytecode Sourcemap
13623:17938:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13623:17938:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20356:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;20356:117:0;;;;;;;;;;;;;;;;;13859:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13859:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21939:186;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21939:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14175:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22501:679;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22501:679:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13963:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28957:197;;;:::i;:::-;;17402:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20599:388;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20599:388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20599:388:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20599:388:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20599:388:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20599:388:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20599:388:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20599:388:0;;;;;;;;;;;;:::i;:::-;;17593:120;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17593:120:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12427:198;;;:::i;:::-;;11918:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19411:407;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19411:407:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13917:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13917:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17850:166;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17850:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17850:166:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17850:166:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17850:166:0;;;;;;;;;;;;:::i;:::-;;18257:436;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18257:436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16538:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16538:46:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13716:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14063:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19028:311;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19028:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21656:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21656:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28523:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28523:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12226:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12226:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;19887:398;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19887:398:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;21115:293;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;21115:293:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;21115:293:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21115:293:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21115:293:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;21115:293:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21115:293:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21115:293:0;;;;;;;;;;;;:::i;:::-;;18830:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18830:130:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;18830:130:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18830:130:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18830:130:0;;;;;;;;;;;;:::i;:::-;;20356:117;20407:16;20443:22;20436:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20356:117;:::o;13859:51::-;;;;;;;;;;;;;;;;;;;:::o;21939:186::-;22006:4;22023:14;22040:12;:10;:12::i;:::-;22023:29;;22063:32;22072:6;22080:7;22089:5;22063:8;:32::i;:::-;22113:4;22106:11;;;21939:186;;;;:::o;14175:38::-;;;;:::o;22501:679::-;22592:4;22638:1;22617:23;;:9;:23;;;;22609:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22718:1;22700:20;;:6;:20;;;;22692:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22776:15;22794:12;:10;:12::i;:::-;22776:30;;22819:61;22837:7;22846:6;22854:9;22865:6;22819:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;22893:49;22899:7;22908:6;22916:9;22927:6;22893:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;22953:112;22962:6;22970:7;22979:85;23012:6;22979:85;;;;;;;;;;;;;;;;;:11;:19;22991:6;22979:19;;;;;;;;;;;;;;;:28;22999:7;22979:28;;;;;;;;;;;;;;;;:32;;:85;;;;;:::i;:::-;22953:8;:112::i;:::-;23078:70;23098:7;23107:6;23115:9;23126:6;23078:70;;;;;;;;;;;;;;;;;;;;;;;;23142:5;23078:19;:70::i;:::-;23168:4;23161:11;;;22501:679;;;;;:::o;13963:37::-;13998:2;13963:37;:::o;28957:197::-;12192:5;;;;;;;;;;;12178:19;;:10;:19;;;12170:28;;;;;;29036:5;29023:18;;:9;;;;;;;;;;;:18;;;29019:128;;;29069:4;29057:9;;:16;;;;;;;;;;;;;;;;;;29019:128;;;29126:5;29114:9;;:17;;;;;;;;;;;;;;;;;;29019:128;28957:197::o;17402:82::-;17448:7;17475:1;17468:8;;17402:82;:::o;20599:388::-;20812:35;20826:12;:10;:12::i;:::-;20840:6;20812:13;:35::i;:::-;20804:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20907:72;20913:12;:10;:12::i;:::-;20927:6;20935:9;20946:6;20954:4;;20907:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;20907:72:0;;;;;;20960:12;;20907:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;20907:72:0;;;;;;20974:4;20907:5;:72::i;:::-;20599:388;;;;;;;:::o;17593:120::-;17656:7;17683:9;:22;17693:11;17683:22;;;;;;;;;;;;;;;;17676:29;;17593:120;;;:::o;12427:198::-;12496:8;;;;;;;;;;;12482:22;;:10;:22;;;12474:31;;;;;;12549:8;;;;;;;;;;;12521:37;;12542:5;;;;;;;;;;;12521:37;;;;;;;;;;;;12577:8;;;;;;;;;;;12569:5;;:16;;;;;;;;;;;;;;;;;;12615:1;12596:8;;:21;;;;;;;;;;;;;;;;;;12427:198::o;11918:28::-;;;;;;;;;;;;;:::o;19411:407::-;19500:8;19484:24;;:12;:10;:12::i;:::-;:24;;;;19476:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19566:17;:27;19584:8;19566:27;;;;;;;;;;;;;;;;;;;;;;;;;19562:189;;;19617:24;:38;19642:12;:10;:12::i;:::-;19617:38;;;;;;;;;;;;;;;:48;19656:8;19617:48;;;;;;;;;;;;;;;;19610:55;;;;;;;;;;;19562:189;;;19735:4;19698:10;:24;19709:12;:10;:12::i;:::-;19698:24;;;;;;;;;;;;;;;:34;19723:8;19698:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19562:189;19797:12;:10;:12::i;:::-;19768:42;;19787:8;19768:42;;;;;;;;;;;;19411:407;:::o;13917:39::-;;;;;;;;;;;;;;;;;;;:::o;17850:166::-;17940:68;17946:12;:10;:12::i;:::-;17960;:10;:12::i;:::-;17974:9;17985:6;17993:4;;17940:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;17940:68:0;;;;;;;;;;;;;;;;;;18003:4;17940:5;:68::i;:::-;17850:166;;;;:::o;18257:436::-;18328:4;18374:1;18353:23;;:9;:23;;;;18345:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18430:12;18445;:10;:12::i;:::-;18430:27;;18470:56;18488:4;18494;18500:9;18511:6;18470:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;18539:44;18545:4;18551;18557:9;18568:6;18539:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;18596:65;18616:4;18622;18628:9;18639:6;18596:65;;;;;;;;;;;;;;;;;;;;;;;;18655:5;18596:19;:65::i;:::-;18681:4;18674:11;;;18257:436;;;;:::o;16538:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;13716:21::-;;;;;;;;;;;;;:::o;14063:61::-;13998:2;14111;:12;14099:8;:25;14063:61;:::o;19028:311::-;19136:4;19172:11;19160:23;;:8;:23;;;:121;;;;19201:17;:27;19219:8;19201:27;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;;19233:24;:37;19258:11;19233:37;;;;;;;;;;;;;;;:47;19271:8;19233:47;;;;;;;;;;;;;;;;;;;;;;;;;19232:48;19201:79;19160:121;:171;;;;19298:10;:23;19309:11;19298:23;;;;;;;;;;;;;;;:33;19322:8;19298:33;;;;;;;;;;;;;;;;;;;;;;;;;19160:171;19153:178;;19028:311;;;;:::o;21656:138::-;21731:7;21758:11;:19;21770:6;21758:19;;;;;;;;;;;;;;;:28;21778:7;21758:28;;;;;;;;;;;;;;;;21751:35;;21656:138;;;;:::o;28523:167::-;12192:5;;;;;;;;;;;12178:19;;:10;:19;;;12170:28;;;;;;28629:6;28605:13;:21;28619:6;28605:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;28652;28667:6;28675;28652:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28523:167;;:::o;12226:112::-;12192:5;;;;;;;;;;;12178:19;;:10;:19;;;12170:28;;;;;;12321:9;12310:8;;:20;;;;;;;;;;;;;;;;;;12226:112;:::o;19887:398::-;19969:12;:10;:12::i;:::-;19957:24;;:8;:24;;;;19949:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20036:17;:27;20054:8;20036:27;;;;;;;;;;;;;;;;;;;;;;;;;20032:189;;;20131:4;20080:24;:38;20105:12;:10;:12::i;:::-;20080:38;;;;;;;;;;;;;;;:48;20119:8;20080:48;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;20032:189;;;20175:10;:24;20186:12;:10;:12::i;:::-;20175:24;;;;;;;;;;;;;;;:34;20200:8;20175:34;;;;;;;;;;;;;;;;20168:41;;;;;;;;;;;20032:189;20264:12;:10;:12::i;:::-;20238:39;;20254:8;20238:39;;;;;;;;;;;;19887:398;:::o;21115:293::-;21248:36;21262:12;:10;:12::i;:::-;21276:7;21248:13;:36::i;:::-;21240:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21344:56;21350:12;:10;:12::i;:::-;21364:7;21373:6;21381:4;;21344:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;21344:56:0;;;;;;21387:12;;21344:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;21344:56:0;;;;;;:5;:56::i;:::-;21115:293;;;;;;:::o;18830:130::-;18901:51;18907:12;:10;:12::i;:::-;18921;:10;:12::i;:::-;18935:6;18943:4;;18901:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;18901:51:0;;;;;;;;;;;;;;;;;;:5;:51::i;:::-;18830:130;;;:::o;11327:98::-;11372:15;11407:10;11400:17;;11327:98;:::o;27725:574::-;28077:1;28058:21;;:7;:21;;;;28050:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28139:9;;;;;;;;;;;28138:10;28130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28238:5;28207:11;:19;28219:6;28207:19;;;;;;;;;;;;;;;:28;28227:7;28207:28;;;;;;;;;;;;;;;:36;;;;28276:7;28259:32;;28268:6;28259:32;;;28285:5;28259:32;;;;;;;;;;;;;;;;;;27725:574;;;:::o;29638:496::-;29869:19;15197:42;29891:40;;;29932:4;15600:66;29938:28;;29891:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29891:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29891:76:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29891:76:0;;;;;;;;;;;;;;;;29869:98;;30005:1;29982:25;;:11;:25;;;29978:149;;30038:11;30024:39;;;30064:8;30074:4;30080:2;30084:6;30092:8;30102:12;30024:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;30024:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;30024:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30024:91:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30024:91:0;;;;29978:149;29638:496;;;;;;;:::o;26922:795::-;27150:13;:19;27164:4;27150:19;;;;;;;;;;;;;;;;;;;;;;;;;27149:20;27141:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27262:13;:17;27276:2;27262:17;;;;;;;;;;;;;;;;;;;;;;;;;27261:18;27253:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27377:9;;;;;;;;;;;27376:10;27368:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27471:70;27491:6;27471:70;;;;;;;;;;;;;;;;;:9;:15;27481:4;27471:15;;;;;;;;;;;;;;;;:19;;:70;;;;;:::i;:::-;27453:9;:15;27463:4;27453:15;;;;;;;;;;;;;;;:88;;;;27568:25;27586:6;27568:9;:13;27578:2;27568:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;27552:9;:13;27562:2;27552:13;;;;;;;;;;;;;;;:41;;;;27632:2;27611:56;;27626:4;27611:56;;27616:8;27611:56;;;27636:6;27644:8;27654:12;27611:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;27611:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;27611:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27698:2;27683:26;;27692:4;27683:26;;;27702:6;27683:26;;;;;;;;;;;;;;;;;;26922:795;;;;;;:::o;3664:192::-;3750:7;3783:1;3778;:6;;3786:12;3770:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3770:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:9;3826:1;3822;:5;3810:17;;3847:1;3840:8;;;3664:192;;;;;:::o;30836:710::-;31104:19;15197:42;31126:40;;;31167:2;15786:66;31171:31;;31126:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31126:77:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31126:77:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31126:77:0;;;;;;;;;;;;;;;;31104:99;;31241:1;31218:25;;:11;:25;;;31214:325;;31277:11;31260:44;;;31305:8;31315:4;31321:2;31325:6;31333:8;31343:12;31260:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;31260:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;31260:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31260:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31260:96:0;;;;31214:325;;;31378:19;31374:165;;;31436:9;31422:23;;:10;:23;;;31414:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31374:165;31214:325;30836:710;;;;;;;;:::o;25046:656::-;25324:1;25308:18;;:4;:18;;;;25300:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25398:1;25384:16;;:2;:16;;;;25376:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25450:69;25468:8;25478:4;25484:2;25488:6;25496:8;25506:12;25450:17;:69::i;:::-;25532:57;25538:8;25548:4;25554:2;25558:6;25566:8;25576:12;25532:5;:57::i;:::-;25602:92;25622:8;25632:4;25638:2;25642:6;25650:8;25660:12;25674:19;25602;:92::i;:::-;25046:656;;;;;;;:::o;26082:832::-;26301:1;26285:18;;:4;:18;;;;26277:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26362:13;:19;26376:4;26362:19;;;;;;;;;;;;;;;;;;;;;;;;;26361:20;26353:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26467:9;;;;;;;;;;;26466:10;26458:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26535:73;26553:8;26563:4;26577:1;26581:6;26589:4;26595:12;26535:17;:73::i;:::-;26674:66;26694:6;26674:66;;;;;;;;;;;;;;;;;:9;:15;26684:4;26674:15;;;;;;;;;;;;;;;;:19;;:66;;;;;:::i;:::-;26656:9;:15;26666:4;26656:15;;;;;;;;;;;;;;;:84;;;;26765:23;26781:6;26765:11;;:15;;:23;;;;:::i;:::-;26751:11;:37;;;;26823:4;26806:50;;26813:8;26806:50;;;26829:6;26837:4;26843:12;26806:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26806:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26806:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26895:1;26872:34;;26881:4;26872:34;;;26899:6;26872:34;;;;;;;;;;;;;;;;;;26082:832;;;;;:::o;2735:181::-;2793:7;2813:9;2829:1;2825;:5;2813:17;;2854:1;2849;:6;;2841:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:1;2900:8;;;2735:181;;;;:::o;3191:136::-;3249:7;3276:43;3280:1;3283;3276:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3269:50;;3191:136;;;;:::o
Swarm Source
bzzr://1a0d0108a42a4bb901151fd2eb53967e75d0eaf1288f068052d20a130c3178f6
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.