Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RVW
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-05 */ // SPDX-License-Identifier: MIT pragma solidity 0.7.0; /** * @title interface of ERC 20 token * */ interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title IERC1404 - Simple Restricted Token Standard * @dev https://github.com/ethereum/eips/issues/1404 */ interface IERC1404 { // Implementation of all the restriction of transfer and returns error code function detectTransferRestriction (address from, address to, uint256 value) external view returns (uint8); // Returns error message off error code function messageForTransferRestriction (uint8 restrictionCode) external view returns (string memory); } /** * @title Implementation of the {IERC20} interface. * */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; string public name; string public symbol; uint8 public immutable decimals; uint256 public override totalSupply; constructor(string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply){ name = _name; symbol = _symbol; decimals = _decimals; _mint(msg.sender, _totalSupply); } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Burns a specific amount of tokens. * @param value The amount of token to be burned. */ function burn(uint256 value) public { _burn(msg.sender, value); } /** * @dev Burns a specific amount of tokens from the target address and decrements allowance * @param from address The account whose tokens will be burned. * @param value uint256 The amount of token to be burned. */ function burnFrom(address from, uint256 value) public { _burnFrom(from, value); } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); totalSupply = totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); totalSupply = totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burnFrom(address account, uint256 value) internal { _burn(account, value); _approve(account, msg.sender, _allowances[account][msg.sender].sub(value)); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; address private _newOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { owner = msg.sender; emit OwnershipTransferred(address(0), owner); } // Throws if called by any account other than the owner modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } // True if `msg.sender` is the owner of the contract. function isOwner() public view returns (bool) { return msg.sender == owner; } // Allows the current owner to relinquish control of the contract. function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } // Propose the new Owner of the smart contract function proposeOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _newOwner = newOwner; } // Accept the ownership of the smart contract as a new Owner function acceptOwnership() public { require(msg.sender == _newOwner, "Ownable: caller is not the new owner"); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } /** * @title TimelockerRole * @dev TimelockerRole can lock any users wallet for some time. */ contract TimelockerRole is Ownable { using Roles for Roles.Role; event TimelockerAdded(address indexed addedTimelocker, address indexed addedBy); event TimelockerRemoved(address indexed removedTimelocker, address indexed removedBy); Roles.Role private _timelockers; modifier onlyTimelocker() { require(isTimelocker(msg.sender), "TimelockerRole: caller does not have the Timelocker role"); _; } function isTimelocker(address account) public view returns (bool) { return _timelockers.has(account); } function addTimelocker(address account) public onlyOwner { _addTimelocker(account); } function removeTimelocker(address account) public onlyOwner { _removeTimelocker(account); } function _addTimelocker(address account) internal { _timelockers.add(account); emit TimelockerAdded(account, msg.sender); } function _removeTimelocker(address account) internal { _timelockers.remove(account); emit TimelockerRemoved(account, msg.sender); } } /** * @title WhitelisterRole * @dev WhitelisterRole can whitelist any users wallet. */ contract WhitelisterRole is Ownable { using Roles for Roles.Role; event WhitelisterAdded(address indexed addedWhitelister, address indexed addedBy); event WhitelisterRemoved(address indexed removedWhitelister, address indexed removedBy); Roles.Role private _whitelisters; modifier onlyWhitelister() { require(isWhitelister(msg.sender), "WhitelisterRole: caller does not have the Whitelister role"); _; } function isWhitelister(address account) public view returns (bool) { return _whitelisters.has(account); } function addWhitelister(address account) public onlyOwner { _addWhitelister(account); } function removeWhitelister(address account) public onlyOwner { _removeWhitelister(account); } function _addWhitelister(address account) internal { _whitelisters.add(account); emit WhitelisterAdded(account, msg.sender); } function _removeWhitelister(address account) internal { _whitelisters.remove(account); emit WhitelisterRemoved(account, msg.sender); } } /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * */ contract Pausable is Ownable { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); /** * @dev By Default it is false */ bool private _paused; /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(msg.sender); } /** * @dev To pause the all transfer of the token */ function pause() public onlyOwner { _pause(); } /** * @dev To unpause the all trasfer of the token */ function unpause() public onlyOwner { _unpause(); } } /** * @title Timelockable * @dev TimelockerRole can lock any users all fund in wallet address upto some releaseTime */ contract Timelockable is TimelockerRole{ mapping (address => uint256) private timeLockups; event AccountLock(address indexed _address, uint256 _releaseTime); /** * @dev Lock the amount of this address till releaseTime */ function lock( address _address, uint256 _releaseTime) public onlyTimelocker returns (bool) { require(_releaseTime > block.timestamp, "Timelockable: Release time should be greater than release time"); require(_address != address(0), "Timelockable: Address should not be Zero address"); timeLockups[_address] = _releaseTime; emit AccountLock(_address, _releaseTime); return true; } /** * @dev Get the timestamp when timelock is released */ function checkLockup(address _address) public view returns(uint256) { return timeLockups[_address]; } /** * @dev Check if wallet is locked or not */ function isLocked(address _address) public view returns(bool) { return timeLockups[_address] > block.timestamp; } } /** * @title Whitelistable * @dev The Whitelistable contract has an can whitelist any address to transfer the security token */ contract Whitelistable is WhitelisterRole{ event SetWhitelist(address _address, bool status); // White list status mapping (address => bool) private whitelist; // Whitelist owner constructor(){ whitelist[msg.sender] = true; emit SetWhitelist(msg.sender, true); } /** * @dev Set a white list address */ function setWhitelist(address to, bool status) public onlyWhitelister returns(bool){ whitelist[to] = status; emit SetWhitelist(to, status); return true; } /** * @dev Get the status of the whitelist */ function isWhitelisted(address _address) public view returns(bool){ return whitelist[_address]; } /** * @dev Determine if sender and receiver are whitelisted, return true if both accounts are whitelisted */ function checkWhitelists(address from, address to) external view returns (bool) { return whitelist[from] && whitelist[to]; } } /** * @title RVW * @dev RVW is ERC20 standard with Ownable, Pausable, Whitelistable, Timelockable and IERC1404 */ contract RVW is ERC20, Ownable, Pausable, Whitelistable, Timelockable, IERC1404{ uint8 public constant SUCCESS = 0; /** * @dev external smart contract for transfer restriction */ IERC1404 public restrictedTransfer; event UpdatedRestrictedTransfer(address indexed _restrictedTransfer); event Issue(address indexed to, uint256 value); /** * @dev Initializes the details of the token with all the above details * Also put the ERC1404 smart contract */ constructor(IERC1404 _restrictedTransfer) ERC20('RVW Movie Token', 'RVW', 18, 5000000 * (10 ** 18)) { restrictedTransfer = _restrictedTransfer; } /** * @dev modifier to check the transfer restriction */ modifier notRestricted (address _from, address _to, uint256 _value) { uint8 code = restrictedTransfer.detectTransferRestriction(_from, _to, _value); require(code == SUCCESS, restrictedTransfer.messageForTransferRestriction(code)); _; } /** * @dev Update ERC1404 smart contract */ function updateRestrictedTransfer(address _restrictedTransfer) public onlyOwner{ restrictedTransfer = IERC1404(_restrictedTransfer); emit UpdatedRestrictedTransfer(_restrictedTransfer); } /** * @dev Get the code of the transfer restriction */ function detectTransferRestriction (address _from, address _to, uint256 _amount) public override view returns (uint8) { require(restrictedTransfer != IERC1404(0), 'RestrictedTransfer: Contract is not set'); return restrictedTransfer.detectTransferRestriction(_from, _to, _amount); } /** * @dev Get the message of the code form the trasnfer restriction contract */ function messageForTransferRestriction (uint8 code) external override view returns (string memory) { return restrictedTransfer.messageForTransferRestriction(code); } /** * @dev Standard trasnfer function is override here with restriction */ function transfer (address to, uint256 value) public override notRestricted(msg.sender, to, value) returns (bool success) { success = super.transfer(to, value); } /** * @dev Standard trasnferFrom function is override here with restriction */ function transferFrom (address from, address to, uint256 value) public override notRestricted(from, to, value) returns (bool success) { success = super.transferFrom(from, to, value); } /** * @dev Taking out mistaken sent token to this Smart contract to owner */ function transferSCFunds(address token) public onlyOwner{ require(token != address(0), 'Token: Contract Address should not be ZERO value'); uint256 balance = IERC20(token).balanceOf(address(this)); require( balance > 0, 'Token: Contract does not have token'); IERC20(token).transfer(owner, balance); } /** * @dev Whitelist, Issue and lock the RVW token to the address to from address from */ function _issueIssueWhitelistAndTimelock(address from, address to, uint256 value, uint256 releaseTime) internal returns(bool){ if(from == address(0) || to == address(0)) return false; if(releaseTime > block.timestamp){ lock(to, releaseTime); } if(!isWhitelisted(to)){ setWhitelist(to, true); } uint8 code = restrictedTransfer.detectTransferRestriction(from, to, value); if(code != SUCCESS) return false; transferFrom(from, to, value); emit Issue(to, value); return true; } /** * @dev Bulk Whitelist and Issue tokens to address to from address from * @param from, Wallet where tokens are present * @param to, contains all the address of users wallet * @param value, amount to token to be issued * @param releaseTime, if greater than block.timestamp then lock it otherwise do not lock it */ function bulkIssueWhitelistAndTimelock(address from, address[] calldata to, uint256[] calldata value, uint256[] calldata releaseTime) public onlyWhitelister onlyTimelocker returns (bool) { require(releaseTime.length == to.length, 'Bulk issue: Release Time and To Length is not same'); require(to.length == value.length, 'Bulk issue: To and Value Length is not same'); uint256 len = to.length; for(uint256 i=0; i< len;i++){ _issueIssueWhitelistAndTimelock(from, to[i], value[i], releaseTime[i]); } return true; } } /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) manager; } /** * @dev Add the role to the account */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.manager[account] = true; } /** * @dev Remove the role of the account */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.manager[account] = false; } /** * @dev Check if an account has this role. */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.manager[account]; } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * 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). * - 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. */ 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) { 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. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { 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. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC1404","name":"_restrictedTransfer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_releaseTime","type":"uint256"}],"name":"AccountLock","type":"event"},{"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":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addedTimelocker","type":"address"},{"indexed":true,"internalType":"address","name":"addedBy","type":"address"}],"name":"TimelockerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"removedTimelocker","type":"address"},{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"TimelockerRemoved","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_restrictedTransfer","type":"address"}],"name":"UpdatedRestrictedTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addedWhitelister","type":"address"},{"indexed":true,"internalType":"address","name":"addedBy","type":"address"}],"name":"WhitelisterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"removedWhitelister","type":"address"},{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"WhitelisterRemoved","type":"event"},{"inputs":[],"name":"SUCCESS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTimelocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"value","type":"uint256[]"},{"internalType":"uint256[]","name":"releaseTime","type":"uint256[]"}],"name":"bulkIssueWhitelistAndTimelock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkLockup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"checkWhitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"detectTransferRestriction","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTimelocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelister","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_releaseTime","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"code","type":"uint8"}],"name":"messageForTransferRestriction","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"proposeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeTimelocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictedTransfer","outputs":[{"internalType":"contract IERC1404","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"transferSCFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_restrictedTransfer","type":"address"}],"name":"updateRestrictedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162004a6a38038062004a6a833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506040518060400160405280600f81526020017f525657204d6f76696520546f6b656e00000000000000000000000000000000008152506040518060400160405280600381526020017f525657000000000000000000000000000000000000000000000000000000000081525060126a0422ca8b0a00a4250000008360029080519060200190620000da92919062000524565b508260039080519060200190620000f392919062000524565b508160ff1660808160ff1660f81b81525050620001173382620002d160201b60201c565b5050505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff6019ec0a78d156d249a1ec7579e2321f6ac7521d6e1d2eacf90ba4a184dcceb336001604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a180600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620005ca565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000391816004546200049b60201b62002f1f1790919060201c565b600481905550620003ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200049b60201b62002f1f1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110156200051a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200056757805160ff191683800117855562000598565b8280016001018555821562000598579182015b82811115620005975782518255916020019190600101906200057a565b5b509050620005a79190620005ab565b5090565b5b80821115620005c6576000816000905550600101620005ac565b5090565b60805160f81c614482620005e8600039806115b052506144826000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806379ba50971161013b57806399da091d116100b8578063ccc8e3d81161007c578063ccc8e3d814610da5578063d0a6d1a614610de9578063d4ce141514610e0a578063dd62ed3e14610e8f578063eaf9144a14610f0757610248565b806399da091d14610bd75780639a6e292f14610c51578063a357a6ea14610ca9578063a457c2d714610cdd578063a9059cbb14610d4157610248565b8063841aca44116100ff578063841aca4414610ab25780638456cb5914610af65780638da5cb5b14610b005780638f32d59b14610b3457806395d89b4114610b5457610248565b806379ba50971461091257806379cc67901461091c5780637d0c269f1461096a5780637f4ab1dd146109c457806382c3f79c14610a6e57610248565b80633af32abf116101c957806353d6fd591161018d57806353d6fd59146107e65780635c975abb1461084c57806370a082311461086c578063710bf322146108c4578063715018a61461090857610248565b80633af32abf146105a15780633f4ba83a146105fb57806342966c68146106055780634a4fbeec146106335780634f311bf51461068d57610248565b806323b872dd1161021057806323b872dd146103f0578063282d3fdf14610474578063313ce567146104d857806339509351146104f95780633a402f9e1461055d57610248565b8063031d40531461024d57806306fdde0314610291578063095ea7b3146103145780630c57133f1461037857806318160ddd146103d2575b600080fd5b61028f6004803603602081101561026357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f4b565b005b610299610fd1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d95780820151818401526020810190506102be565b50505050905090810190601f1680156103065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103606004803603604081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061106f565b60405180821515815260200191505060405180910390f35b6103ba6004803603602081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611086565b60405180821515815260200191505060405180910390f35b6103da6110a3565b6040518082815260200191505060405180910390f35b61045c6004803603606081101561040657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a9565b60405180821515815260200191505060405180910390f35b6104c06004803603604081101561048a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113d4565b60405180821515815260200191505060405180910390f35b6104e06115ae565b604051808260ff16815260200191505060405180910390f35b6105456004803603604081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d2565b60405180821515815260200191505060405180910390f35b61059f6004803603602081101561057357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611677565b005b6105e3600480360360208110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611949565b60405180821515815260200191505060405180910390f35b61060361199f565b005b6106316004803603602081101561061b57600080fd5b8101908080359060200190929190505050611a23565b005b6106756004803603602081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a30565b60405180821515815260200191505060405180910390f35b6107ce600480360360808110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156106e057600080fd5b8201836020820111156106f257600080fd5b8035906020019184602083028401116401000000008311171561071457600080fd5b90919293919293908035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184602083028401116401000000008311171561076957600080fd5b90919293919293908035906020019064010000000081111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460208302840111640100000000831117156107be57600080fd5b9091929391929390505050611a7b565b60405180821515815260200191505060405180910390f35b610834600480360360408110156107fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c7f565b60405180821515815260200191505060405180910390f35b610854611d97565b60405180821515815260200191505060405180910390f35b6108ae6004803603602081101561088257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dae565b6040518082815260200191505060405180910390f35b610906600480360360208110156108da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df6565b005b610910611f3a565b005b61091a612075565b005b6109686004803603604081101561093257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061221e565b005b6109ac6004803603602081101561098057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061222c565b60405180821515815260200191505060405180910390f35b6109f3600480360360208110156109da57600080fd5b81019080803560ff169060200190929190505050612249565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a33578082015181840152602081019050610a18565b50505050905090810190601f168015610a605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ab060048036036020811015610a8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123c1565b005b610af460048036036020811015610ac857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612447565b005b610afe6124cd565b005b610b08612551565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b3c612577565b60405180821515815260200191505060405180910390f35b610b5c6125cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9c578082015181840152602081019050610b81565b50505050905090810190601f168015610bc95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c3960048036036040811015610bed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266d565b60405180821515815260200191505060405180910390f35b610c9360048036036020811015610c6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612719565b6040518082815260200191505060405180910390f35b610cb1612762565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d2960048036036040811015610cf357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612788565b60405180821515815260200191505060405180910390f35b610d8d60048036036040811015610d5757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612847565b60405180821515815260200191505060405180910390f35b610de760048036036020811015610dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b70565b005b610df1612c71565b604051808260ff16815260200191505060405180910390f35b610e7660048036036060811015610e2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c76565b604051808260ff16815260200191505060405180910390f35b610ef160048036036040811015610ea557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e12565b6040518082815260200191505060405180910390f35b610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e99565b005b610f53612577565b610fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610fce81612fa7565b50565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110675780601f1061103c57610100808354040283529160200191611067565b820191906000526020600020905b81548152906001019060200180831161104a57829003601f168201915b505050505081565b600061107c338484613018565b6001905092915050565b600061109c82600961320f90919063ffffffff16565b9050919050565b60045481565b60008383836000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b81019080805190602001909291905050509050600060ff168160ff1614600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd836040518263ffffffff1660e01b8152600401808260ff16815260200191505060006040518083038186803b15801561121c57600080fd5b505afa158015611230573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561125a57600080fd5b810190808051604051939291908464010000000082111561127a57600080fd5b8382019150602082018581111561129057600080fd5b82518660018202830111640100000000821117156112ad57600080fd5b8083526020830192505050908051906020019080838360005b838110156112e15780820151818401526020810190506112c6565b50505050905090810190601f16801561130e5780820380516001836020036101000a031916815260200191505b50604052505050906113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611380578082015181840152602081019050611365565b50505050905090810190601f1680156113ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506113c78888886132ed565b9450505050509392505050565b60006113df33611086565b611434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806141b46038913960400191505060405180910390fd5b42821161148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180614212603e913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061413c6030913960400191505060405180910390fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fa33d784ce0675e37959dfcca8bf3c9150e1f92810a9abe01509456a4caa84548836040518082815260200191505060405180910390a26001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061166d338461166885600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1f90919063ffffffff16565b613018565b6001905092915050565b61167f612577565b6116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806142e26030913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117e057600080fd5b505afa1580156117f4573d6000803e3d6000fd5b505050506040513d602081101561180a57600080fd5b8101908080519060200190929190505050905060008111611876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143b66023913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050506040513d602081101561193357600080fd5b8101908080519060200190929190505050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6119a7612577565b611a19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611a216133b8565b565b611a2d33826134a4565b50565b600042600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b6000611a863361222c565b611adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614358603a913960400191505060405180910390fd5b611ae433611086565b611b39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806141b46038913960400191505060405180910390fd5b868690508383905014611b97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806140c56032913960400191505060405180910390fd5b848490508787905014611bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806143d9602b913960400191505060405180910390fd5b600087879050905060005b81811015611c6e57611c608a8a8a84818110611c1857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16898985818110611c4157fe5b90506020020135888886818110611c5457fe5b9050602002013561365c565b508080600101915050611c00565b506001915050979650505050505050565b6000611c8a3361222c565b611cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614358603a913960400191505060405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff6019ec0a78d156d249a1ec7579e2321f6ac7521d6e1d2eacf90ba4a184dcceb8383604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a16001905092915050565b6000600660149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611dfe612577565b611e70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061416c6026913960400191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f42612577565b611fb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806144296024913960400191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612228828261386e565b5050565b600061224282600761320f90919063ffffffff16565b9050919050565b6060600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd836040518263ffffffff1660e01b8152600401808260ff16815260200191505060006040518083038186803b1580156122c157600080fd5b505afa1580156122d5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156122ff57600080fd5b810190808051604051939291908464010000000082111561231f57600080fd5b8382019150602082018581111561233557600080fd5b825186600182028301116401000000008211171561235257600080fd5b8083526020830192505050908051906020019080838360005b8381101561238657808201518184015260208101905061236b565b50505050905090810190601f1680156123b35780820380516001836020036101000a031916815260200191505b506040525050509050919050565b6123c9612577565b61243b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61244481613915565b50565b61244f612577565b6124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6124ca81613986565b50565b6124d5612577565b612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61254f6139f7565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126655780601f1061263a57610100808354040283529160200191612665565b820191906000526020600020905b81548152906001019060200180831161264857829003601f168201915b505050505081565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127115750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061283d33846128388560405180606001604052806025815260200161440460259139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b613018565b6001905092915050565b60003383836000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156128fd57600080fd5b505afa158015612911573d6000803e3d6000fd5b505050506040513d602081101561292757600080fd5b81019080805190602001909291905050509050600060ff168160ff1614600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd836040518263ffffffff1660e01b8152600401808260ff16815260200191505060006040518083038186803b1580156129ba57600080fd5b505afa1580156129ce573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156129f857600080fd5b8101908080516040519392919084640100000000821115612a1857600080fd5b83820191506020820185811115612a2e57600080fd5b8251866001820283011164010000000082111715612a4b57600080fd5b8083526020830192505050908051906020019080838360005b83811015612a7f578082015181840152602081019050612a64565b50505050905090810190601f168015612aac5780820380516001836020036101000a031916815260200191505b5060405250505090612b59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b1e578082015181840152602081019050612b03565b50505050905090810190601f168015612b4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612b648787613ba4565b94505050505092915050565b612b78612577565b612bea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f5705f2572fe5b338c3e2ba9c933427ec351e1ef3191fbcbffcac35a6f3bb9db160405160405180910390a250565b600081565b60008073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806142bb6027913960400191505060405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b158015612dce57600080fd5b505afa158015612de2573d6000803e3d6000fd5b505050506040513d6020811015612df857600080fd5b810190808051906020019092919050505090509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ea1612577565b612f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612f1c81613bbb565b50565b600080828401905083811015612f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b612fbb816009613c2c90919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f28f069fa8730ef5d44b24faedbcabf2b254c53f4e02a953476a4015e3067714160405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561309e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806143926024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613124576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141926022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142996022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006132fa848484613d07565b6133ad84336133a88560405180606001604052806028815260200161427160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b613018565b600190509392505050565b600660149054906101000a900460ff1661343a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561352a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143126021913960400191505060405180910390fd5b6135958160405180606001604052806022815260200161411a602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ec81600454613fbd90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806136c45750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156136d25760009050613866565b428211156136e6576136e484836113d4565b505b6136ef84611949565b613700576136fe846001611c7f565b505b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158787876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156137b157600080fd5b505afa1580156137c5573d6000803e3d6000fd5b505050506040513d60208110156137db57600080fd5b81019080805190602001909291905050509050600060ff168160ff1614613806576000915050613866565b6138118686866110a9565b508473ffffffffffffffffffffffffffffffffffffffff167fc65a3f767206d2fdcede0b094a4840e01c0dd0be1888b5ba800346eaa0123c16856040518082815260200191505060405180910390a260019150505b949350505050565b61387882826134a4565b613911823361390c84600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fbd90919063ffffffff16565b613018565b5050565b61392981600761400790919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3ed21605dd544629fb45f2ccaedcc095ba1dbea540fb6eaf5493a7479856b0be60405160405180910390a350565b61399a81600961400790919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f1bac2ef39c5011bb7c20ecf6bc7cb986695b3f432a149d898c0ed368e55c780660405160405180910390a350565b600660149054906101000a900460ff1615613a7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000838311158290613b91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b56578082015181840152602081019050613b3b565b50505050905090810190601f168015613b835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000613bb1338484613d07565b6001905092915050565b613bcf816007613c2c90919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5f36f4f5999f34947706fca376b955319b858573bf9d6bc59303c9a4cd80ced060405160405180910390a350565b613c36828261320f565b15613ca9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806143336025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140f76023913960400191505060405180910390fd5b613e7e816040518060600160405280602681526020016141ec602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f11816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000613fff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613ae4565b905092915050565b614011828261320f565b614066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142506021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe42756c6b2069737375653a2052656c656173652054696d6520616e6420546f204c656e677468206973206e6f742073616d6545524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636554696d656c6f636b61626c653a20416464726573732073686f756c64206e6f74206265205a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737354696d656c6f636b6572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652054696d656c6f636b657220726f6c6545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636554696d656c6f636b61626c653a2052656c656173652074696d652073686f756c642062652067726561746572207468616e2072656c656173652074696d65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373526573747269637465645472616e736665723a20436f6e7472616374206973206e6f7420736574546f6b656e3a20436f6e747261637420416464726573732073686f756c64206e6f74206265205a45524f2076616c756545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737357686974656c6973746572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374657220726f6c6545524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373546f6b656e3a20436f6e747261637420646f6573206e6f74206861766520746f6b656e42756c6b2069737375653a20546f20616e642056616c7565204c656e677468206973206e6f742073616d6545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e6577206f776e6572a26469706673582212201f058d1071d569ddc1966478813dc143fb873a670520a2548f43f2424ae5f4ca64736f6c634300070000330000000000000000000000007e95320d823799a6e571efd66875cbdcbd7d8e43
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102485760003560e01c806379ba50971161013b57806399da091d116100b8578063ccc8e3d81161007c578063ccc8e3d814610da5578063d0a6d1a614610de9578063d4ce141514610e0a578063dd62ed3e14610e8f578063eaf9144a14610f0757610248565b806399da091d14610bd75780639a6e292f14610c51578063a357a6ea14610ca9578063a457c2d714610cdd578063a9059cbb14610d4157610248565b8063841aca44116100ff578063841aca4414610ab25780638456cb5914610af65780638da5cb5b14610b005780638f32d59b14610b3457806395d89b4114610b5457610248565b806379ba50971461091257806379cc67901461091c5780637d0c269f1461096a5780637f4ab1dd146109c457806382c3f79c14610a6e57610248565b80633af32abf116101c957806353d6fd591161018d57806353d6fd59146107e65780635c975abb1461084c57806370a082311461086c578063710bf322146108c4578063715018a61461090857610248565b80633af32abf146105a15780633f4ba83a146105fb57806342966c68146106055780634a4fbeec146106335780634f311bf51461068d57610248565b806323b872dd1161021057806323b872dd146103f0578063282d3fdf14610474578063313ce567146104d857806339509351146104f95780633a402f9e1461055d57610248565b8063031d40531461024d57806306fdde0314610291578063095ea7b3146103145780630c57133f1461037857806318160ddd146103d2575b600080fd5b61028f6004803603602081101561026357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f4b565b005b610299610fd1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d95780820151818401526020810190506102be565b50505050905090810190601f1680156103065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103606004803603604081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061106f565b60405180821515815260200191505060405180910390f35b6103ba6004803603602081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611086565b60405180821515815260200191505060405180910390f35b6103da6110a3565b6040518082815260200191505060405180910390f35b61045c6004803603606081101561040657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a9565b60405180821515815260200191505060405180910390f35b6104c06004803603604081101561048a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113d4565b60405180821515815260200191505060405180910390f35b6104e06115ae565b604051808260ff16815260200191505060405180910390f35b6105456004803603604081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d2565b60405180821515815260200191505060405180910390f35b61059f6004803603602081101561057357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611677565b005b6105e3600480360360208110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611949565b60405180821515815260200191505060405180910390f35b61060361199f565b005b6106316004803603602081101561061b57600080fd5b8101908080359060200190929190505050611a23565b005b6106756004803603602081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a30565b60405180821515815260200191505060405180910390f35b6107ce600480360360808110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156106e057600080fd5b8201836020820111156106f257600080fd5b8035906020019184602083028401116401000000008311171561071457600080fd5b90919293919293908035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184602083028401116401000000008311171561076957600080fd5b90919293919293908035906020019064010000000081111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460208302840111640100000000831117156107be57600080fd5b9091929391929390505050611a7b565b60405180821515815260200191505060405180910390f35b610834600480360360408110156107fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c7f565b60405180821515815260200191505060405180910390f35b610854611d97565b60405180821515815260200191505060405180910390f35b6108ae6004803603602081101561088257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dae565b6040518082815260200191505060405180910390f35b610906600480360360208110156108da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df6565b005b610910611f3a565b005b61091a612075565b005b6109686004803603604081101561093257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061221e565b005b6109ac6004803603602081101561098057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061222c565b60405180821515815260200191505060405180910390f35b6109f3600480360360208110156109da57600080fd5b81019080803560ff169060200190929190505050612249565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a33578082015181840152602081019050610a18565b50505050905090810190601f168015610a605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ab060048036036020811015610a8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123c1565b005b610af460048036036020811015610ac857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612447565b005b610afe6124cd565b005b610b08612551565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b3c612577565b60405180821515815260200191505060405180910390f35b610b5c6125cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9c578082015181840152602081019050610b81565b50505050905090810190601f168015610bc95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c3960048036036040811015610bed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266d565b60405180821515815260200191505060405180910390f35b610c9360048036036020811015610c6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612719565b6040518082815260200191505060405180910390f35b610cb1612762565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d2960048036036040811015610cf357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612788565b60405180821515815260200191505060405180910390f35b610d8d60048036036040811015610d5757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612847565b60405180821515815260200191505060405180910390f35b610de760048036036020811015610dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b70565b005b610df1612c71565b604051808260ff16815260200191505060405180910390f35b610e7660048036036060811015610e2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c76565b604051808260ff16815260200191505060405180910390f35b610ef160048036036040811015610ea557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e12565b6040518082815260200191505060405180910390f35b610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e99565b005b610f53612577565b610fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610fce81612fa7565b50565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110675780601f1061103c57610100808354040283529160200191611067565b820191906000526020600020905b81548152906001019060200180831161104a57829003601f168201915b505050505081565b600061107c338484613018565b6001905092915050565b600061109c82600961320f90919063ffffffff16565b9050919050565b60045481565b60008383836000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b81019080805190602001909291905050509050600060ff168160ff1614600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd836040518263ffffffff1660e01b8152600401808260ff16815260200191505060006040518083038186803b15801561121c57600080fd5b505afa158015611230573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561125a57600080fd5b810190808051604051939291908464010000000082111561127a57600080fd5b8382019150602082018581111561129057600080fd5b82518660018202830111640100000000821117156112ad57600080fd5b8083526020830192505050908051906020019080838360005b838110156112e15780820151818401526020810190506112c6565b50505050905090810190601f16801561130e5780820380516001836020036101000a031916815260200191505b50604052505050906113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611380578082015181840152602081019050611365565b50505050905090810190601f1680156113ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506113c78888886132ed565b9450505050509392505050565b60006113df33611086565b611434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806141b46038913960400191505060405180910390fd5b42821161148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180614212603e913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061413c6030913960400191505060405180910390fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fa33d784ce0675e37959dfcca8bf3c9150e1f92810a9abe01509456a4caa84548836040518082815260200191505060405180910390a26001905092915050565b7f000000000000000000000000000000000000000000000000000000000000001281565b600061166d338461166885600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1f90919063ffffffff16565b613018565b6001905092915050565b61167f612577565b6116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806142e26030913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117e057600080fd5b505afa1580156117f4573d6000803e3d6000fd5b505050506040513d602081101561180a57600080fd5b8101908080519060200190929190505050905060008111611876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143b66023913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050506040513d602081101561193357600080fd5b8101908080519060200190929190505050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6119a7612577565b611a19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611a216133b8565b565b611a2d33826134a4565b50565b600042600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b6000611a863361222c565b611adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614358603a913960400191505060405180910390fd5b611ae433611086565b611b39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806141b46038913960400191505060405180910390fd5b868690508383905014611b97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806140c56032913960400191505060405180910390fd5b848490508787905014611bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806143d9602b913960400191505060405180910390fd5b600087879050905060005b81811015611c6e57611c608a8a8a84818110611c1857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16898985818110611c4157fe5b90506020020135888886818110611c5457fe5b9050602002013561365c565b508080600101915050611c00565b506001915050979650505050505050565b6000611c8a3361222c565b611cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614358603a913960400191505060405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff6019ec0a78d156d249a1ec7579e2321f6ac7521d6e1d2eacf90ba4a184dcceb8383604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a16001905092915050565b6000600660149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611dfe612577565b611e70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061416c6026913960400191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f42612577565b611fb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806144296024913960400191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612228828261386e565b5050565b600061224282600761320f90919063ffffffff16565b9050919050565b6060600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd836040518263ffffffff1660e01b8152600401808260ff16815260200191505060006040518083038186803b1580156122c157600080fd5b505afa1580156122d5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156122ff57600080fd5b810190808051604051939291908464010000000082111561231f57600080fd5b8382019150602082018581111561233557600080fd5b825186600182028301116401000000008211171561235257600080fd5b8083526020830192505050908051906020019080838360005b8381101561238657808201518184015260208101905061236b565b50505050905090810190601f1680156123b35780820380516001836020036101000a031916815260200191505b506040525050509050919050565b6123c9612577565b61243b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61244481613915565b50565b61244f612577565b6124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6124ca81613986565b50565b6124d5612577565b612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61254f6139f7565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126655780601f1061263a57610100808354040283529160200191612665565b820191906000526020600020905b81548152906001019060200180831161264857829003601f168201915b505050505081565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127115750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061283d33846128388560405180606001604052806025815260200161440460259139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b613018565b6001905092915050565b60003383836000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156128fd57600080fd5b505afa158015612911573d6000803e3d6000fd5b505050506040513d602081101561292757600080fd5b81019080805190602001909291905050509050600060ff168160ff1614600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd836040518263ffffffff1660e01b8152600401808260ff16815260200191505060006040518083038186803b1580156129ba57600080fd5b505afa1580156129ce573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156129f857600080fd5b8101908080516040519392919084640100000000821115612a1857600080fd5b83820191506020820185811115612a2e57600080fd5b8251866001820283011164010000000082111715612a4b57600080fd5b8083526020830192505050908051906020019080838360005b83811015612a7f578082015181840152602081019050612a64565b50505050905090810190601f168015612aac5780820380516001836020036101000a031916815260200191505b5060405250505090612b59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b1e578082015181840152602081019050612b03565b50505050905090810190601f168015612b4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612b648787613ba4565b94505050505092915050565b612b78612577565b612bea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f5705f2572fe5b338c3e2ba9c933427ec351e1ef3191fbcbffcac35a6f3bb9db160405160405180910390a250565b600081565b60008073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806142bb6027913960400191505060405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b158015612dce57600080fd5b505afa158015612de2573d6000803e3d6000fd5b505050506040513d6020811015612df857600080fd5b810190808051906020019092919050505090509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ea1612577565b612f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612f1c81613bbb565b50565b600080828401905083811015612f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b612fbb816009613c2c90919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f28f069fa8730ef5d44b24faedbcabf2b254c53f4e02a953476a4015e3067714160405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561309e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806143926024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613124576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141926022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142996022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006132fa848484613d07565b6133ad84336133a88560405180606001604052806028815260200161427160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b613018565b600190509392505050565b600660149054906101000a900460ff1661343a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561352a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143126021913960400191505060405180910390fd5b6135958160405180606001604052806022815260200161411a602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ec81600454613fbd90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806136c45750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156136d25760009050613866565b428211156136e6576136e484836113d4565b505b6136ef84611949565b613700576136fe846001611c7f565b505b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4ce14158787876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156137b157600080fd5b505afa1580156137c5573d6000803e3d6000fd5b505050506040513d60208110156137db57600080fd5b81019080805190602001909291905050509050600060ff168160ff1614613806576000915050613866565b6138118686866110a9565b508473ffffffffffffffffffffffffffffffffffffffff167fc65a3f767206d2fdcede0b094a4840e01c0dd0be1888b5ba800346eaa0123c16856040518082815260200191505060405180910390a260019150505b949350505050565b61387882826134a4565b613911823361390c84600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fbd90919063ffffffff16565b613018565b5050565b61392981600761400790919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3ed21605dd544629fb45f2ccaedcc095ba1dbea540fb6eaf5493a7479856b0be60405160405180910390a350565b61399a81600961400790919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f1bac2ef39c5011bb7c20ecf6bc7cb986695b3f432a149d898c0ed368e55c780660405160405180910390a350565b600660149054906101000a900460ff1615613a7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000838311158290613b91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b56578082015181840152602081019050613b3b565b50505050905090810190601f168015613b835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000613bb1338484613d07565b6001905092915050565b613bcf816007613c2c90919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5f36f4f5999f34947706fca376b955319b858573bf9d6bc59303c9a4cd80ced060405160405180910390a350565b613c36828261320f565b15613ca9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806143336025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140f76023913960400191505060405180910390fd5b613e7e816040518060600160405280602681526020016141ec602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ae49092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f11816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000613fff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613ae4565b905092915050565b614011828261320f565b614066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142506021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe42756c6b2069737375653a2052656c656173652054696d6520616e6420546f204c656e677468206973206e6f742073616d6545524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636554696d656c6f636b61626c653a20416464726573732073686f756c64206e6f74206265205a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737354696d656c6f636b6572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652054696d656c6f636b657220726f6c6545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636554696d656c6f636b61626c653a2052656c656173652074696d652073686f756c642062652067726561746572207468616e2072656c656173652074696d65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373526573747269637465645472616e736665723a20436f6e7472616374206973206e6f7420736574546f6b656e3a20436f6e747261637420416464726573732073686f756c64206e6f74206265205a45524f2076616c756545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737357686974656c6973746572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374657220726f6c6545524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373546f6b656e3a20436f6e747261637420646f6573206e6f74206861766520746f6b656e42756c6b2069737375653a20546f20616e642056616c7565204c656e677468206973206e6f742073616d6545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e6577206f776e6572a26469706673582212201f058d1071d569ddc1966478813dc143fb873a670520a2548f43f2424ae5f4ca64736f6c63430007000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007e95320d823799a6e571efd66875cbdcbd7d8e43
-----Decoded View---------------
Arg [0] : _restrictedTransfer (address): 0x7e95320D823799a6E571eFd66875CBdCbD7d8E43
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007e95320d823799a6e571efd66875cbdcbd7d8e43
Deployed Bytecode Sourcemap
17803:4739:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11434:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1563:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2858:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11309:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1653:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20204:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15667:430;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1615:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4233:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20516:346;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17289:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15205:65;;;:::i;:::-;;5359:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16370:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21954:583;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17033:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13821:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1992:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10269:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10070:138;;;:::i;:::-;;10531:207;;;:::i;:::-;;5692:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12536:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19644:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12772:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11541:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15065:61;;;:::i;:::-;;9389:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9899:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1588:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17532:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16184:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18022:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4950:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19924:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18929:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17894:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19223:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2560:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12663:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11434:99;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11502:23:::1;11517:7;11502:14;:23::i;:::-;11434:99:::0;:::o;1563:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2858:167::-;2941:4;2958:37;2967:10;2979:7;2988:6;2958:8;:37::i;:::-;3013:4;3006:11;;2858:167;;;;:::o;11309:117::-;11369:4;11393:25;11410:7;11393:12;:16;;:25;;;;:::i;:::-;11386:32;;11309:117;;;:::o;1653:35::-;;;;:::o;20204:198::-;20324:12;20298:4;20304:2;20308:5;18669:10;18682:18;;;;;;;;;;;:44;;;18727:5;18734:3;18739:6;18682:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18669:77;;17926:1;18765:15;;:4;:15;;;18782:18;;;;;;;;;;;:48;;;18831:4;18782:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18757:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20359:35:::1;20378:4;20384:2;20388:5;20359:18;:35::i;:::-;20349:45;;20204:198:::0;;;;;;;;;:::o;15667:430::-;15753:4;11196:24;11209:10;11196:12;:24::i;:::-;11188:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15793:15:::1;15778:12;:30;15770:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15914:1;15894:22;;:8;:22;;;;15886:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16004:12;15980:11;:21;15992:8;15980:21;;;;;;;;;;;;;;;:36;;;;16044:8;16032:35;;;16054:12;16032:35;;;;;;;;;;;;;;;;;;16085:4;16078:11;;15667:430:::0;;;;:::o;1615:31::-;;;:::o;4233:214::-;4321:4;4338:79;4347:10;4359:7;4368:48;4405:10;4368:11;:23;4380:10;4368:23;;;;;;;;;;;;;;;:32;4392:7;4368:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;4338:8;:79::i;:::-;4435:4;4428:11;;4233:214;;;;:::o;20516:346::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20609:1:::1;20592:19;;:5;:19;;;;20584:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20676:15;20701:5;20694:23;;;20726:4;20694:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;20676:56;;20763:1;20753:7;:11;20744:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20823:5;20816:22;;;20839:5;;;;;;;;;;;20846:7;20816:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;9823:1;20516:346:::0;:::o;17289:111::-;17350:4;17373:9;:19;17383:8;17373:19;;;;;;;;;;;;;;;;;;;;;;;;;17366:26;;17289:111;;;:::o;15205:65::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15252:10:::1;:8;:10::i;:::-;15205:65::o:0;5359:79::-;5406:24;5412:10;5424:5;5406;:24::i;:::-;5359:79;:::o;16370:128::-;16426:4;16475:15;16451:11;:21;16463:8;16451:21;;;;;;;;;;;;;;;;:39;16444:46;;16370:128;;;:::o;21954:583::-;22135:4;12420:25;12434:10;12420:13;:25::i;:::-;12412:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11196:24:::1;11209:10;11196:12;:24::i;:::-;11188:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22182:2:::2;;:9;;22160:11;;:18;;:31;22152:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22278:5;;:12;;22265:2;;:9;;:25;22257:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22349:11;22363:2;;:9;;22349:23;;22387:9;22383:125;22403:3;22400:1;:6;22383:125;;;22426:70;22458:4;22464:2;;22467:1;22464:5;;;;;;;;;;;;;;;22471;;22477:1;22471:8;;;;;;;;;;;;;22481:11;;22493:1;22481:14;;;;;;;;;;;;;22426:31;:70::i;:::-;;22407:3;;;;;;;22383:125;;;;22525:4;22518:11;;;21954:583:::0;;;;;;;;;:::o;17033:187::-;17112:4;12420:25;12434:10;12420:13;:25::i;:::-;12412:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17144:6:::1;17128:9;:13;17138:2;17128:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17166:24;17179:2;17183:6;17166:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;17208:4;17201:11;;17033:187:::0;;;;:::o;13821:78::-;13860:4;13884:7;;;;;;;;;;;13877:14;;13821:78;:::o;1992:119::-;2058:7;2085:9;:18;2095:7;2085:18;;;;;;;;;;;;;;;;2078:25;;1992:119;;;:::o;10269:184::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10369:1:::1;10349:22;;:8;:22;;;;10341:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10437:8;10425:9;;:20;;;;;;;;;;;;;;;;;;10269:184:::0;:::o;10070:138::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10168:1:::1;10132:39;;10153:5;;;;;;;;;;;10132:39;;;;;;;;;;;;10198:1;10182:5;;:18;;;;;;;;;;;;;;;;;;10070:138::o:0;10531:207::-;10598:9;;;;;;;;;;;10584:23;;:10;:23;;;10576:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10692:9;;;;;;;;;;;10664:38;;10685:5;;;;;;;;;;;10664:38;;;;;;;;;;;;10721:9;;;;;;;;;;;10713:5;;:17;;;;;;;;;;;;;;;;;;10531:207::o;5692:95::-;5757:22;5767:4;5773:5;5757:9;:22::i;:::-;5692:95;;:::o;12536:119::-;12597:4;12621:26;12639:7;12621:13;:17;;:26;;;;:::i;:::-;12614:33;;12536:119;;;:::o;19644:180::-;19729:13;19762:18;;;;;;;;;;;:48;;;19811:4;19762:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19755:61;;19644:180;;;:::o;12772:107::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12844:27:::1;12863:7;12844:18;:27::i;:::-;12772:107:::0;:::o;11541:105::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11612:26:::1;11630:7;11612:17;:26::i;:::-;11541:105:::0;:::o;15065:61::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15110:8:::1;:6;:8::i;:::-;15065:61::o:0;9389:20::-;;;;;;;;;;;;;:::o;9899:91::-;9939:4;9977:5;;;;;;;;;;;9963:19;;:10;:19;;;9956:26;;9899:91;:::o;1588:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17532:138::-;17606:4;17630:9;:15;17640:4;17630:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;17649:9;:13;17659:2;17649:13;;;;;;;;;;;;;;;;;;;;;;;;;17630:32;17623:39;;17532:138;;;;:::o;16184:116::-;16243:7;16271:11;:21;16283:8;16271:21;;;;;;;;;;;;;;;;16264:28;;16184:116;;;:::o;18022:34::-;;;;;;;;;;;;;:::o;4950:265::-;5043:4;5060:125;5069:10;5081:7;5090:94;5127:15;5090:94;;;;;;;;;;;;;;;;;:11;:23;5102:10;5090:23;;;;;;;;;;;;;;;:32;5114:7;5090:32;;;;;;;;;;;;;;;;:36;;:94;;;;;:::i;:::-;5060:8;:125::i;:::-;5203:4;5196:11;;4950:265;;;;:::o;19924:176::-;20032:12;20000:10;20012:2;20016:5;18669:10;18682:18;;;;;;;;;;;:44;;;18727:5;18734:3;18739:6;18682:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18669:77;;17926:1;18765:15;;:4;:15;;;18782:18;;;;;;;;;;;:48;;;18831:4;18782:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18757:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20067:25:::1;20082:2;20086:5;20067:14;:25::i;:::-;20057:35;;19924:176:::0;;;;;;;;:::o;18929:210::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19049:19:::1;19019:18;;:50;;;;;;;;;;;;;;;;;;19111:19;19085:46;;;;;;;;;;;;18929:210:::0;:::o;17894:33::-;17926:1;17894:33;:::o;19223:306::-;19335:5;19392:1;19361:33;;:18;;;;;;;;;;;:33;;;;19353:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19456:18;;;;;;;;;;;:44;;;19501:5;19508:3;19513:7;19456:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19449:72;;19223:306;;;;;:::o;2560:151::-;2649:7;2676:11;:18;2688:5;2676:18;;;;;;;;;;;;;;;:27;2695:7;2676:27;;;;;;;;;;;;;;;;2669:34;;2560:151;;;;:::o;12663:101::-;9766:9;:7;:9::i;:::-;9758:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12732:24:::1;12748:7;12732:15;:24::i;:::-;12663:101:::0;:::o;23642:181::-;23700:7;23720:9;23736:1;23732;:5;23720:17;;23761:1;23756;:6;;23748:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23814:1;23807:8;;;23642:181;;;;:::o;11654:146::-;11715:25;11732:7;11715:12;:16;;:25;;;;:::i;:::-;11781:10;11756:36;;11772:7;11756:36;;;;;;;;;;;;11654:146;:::o;8803:346::-;8922:1;8905:19;;:5;:19;;;;8897:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9003:1;8984:21;;:7;:21;;;;8976:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9087:6;9057:11;:18;9069:5;9057:18;;;;;;;;;;;;;;;:27;9076:7;9057:27;;;;;;;;;;;;;;;:36;;;;9125:7;9109:32;;9118:5;9109:32;;;9134:6;9109:32;;;;;;;;;;;;;;;;;;8803:346;;;:::o;23296:204::-;23368:4;23412:1;23393:21;;:7;:21;;;;23385:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23471:4;:12;;:21;23484:7;23471:21;;;;;;;;;;;;;;;;;;;;;;;;;23464:28;;23296:204;;;;:::o;3507:317::-;3613:4;3630:36;3640:6;3648:9;3659:6;3630:9;:36::i;:::-;3677:117;3686:6;3694:10;3706:87;3742:6;3706:87;;;;;;;;;;;;;;;;;:11;:19;3718:6;3706:19;;;;;;;;;;;;;;;:31;3726:10;3706:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;3677:8;:117::i;:::-;3812:4;3805:11;;3507:317;;;;;:::o;14868:118::-;14415:7;;;;;;;;;;;14407:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14937:5:::1;14927:7;;:15;;;;;;;;;;;;;;;;;;14958:20;14967:10;14958:20;;;;;;;;;;;;;;;;;;;;14868:118::o:0;7683:352::-;7786:1;7767:21;;:7;:21;;;;7759:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7858:68;7881:6;7858:68;;;;;;;;;;;;;;;;;:9;:18;7868:7;7858:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;7837:9;:18;7847:7;7837:18;;;;;;;;;;;;;;;:89;;;;7951:23;7967:6;7951:11;;:15;;:23;;;;:::i;:::-;7937:11;:37;;;;8016:1;7990:37;;7999:7;7990:37;;;8020:6;7990:37;;;;;;;;;;;;;;;;;;7683:352;;:::o;20988:592::-;21108:4;21143:1;21127:18;;:4;:18;;;:38;;;;21163:1;21149:16;;:2;:16;;;21127:38;21124:55;;;21174:5;21167:12;;;;21124:55;21207:15;21193:11;:29;21190:81;;;21238:21;21243:2;21247:11;21238:4;:21::i;:::-;;21190:81;21285:17;21299:2;21285:13;:17::i;:::-;21281:70;;21317:22;21330:2;21334:4;21317:12;:22::i;:::-;;21281:70;21361:10;21374:18;;;;;;;;;;;:44;;;21419:4;21425:2;21429:5;21374:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21361:74;;17926:1;21449:15;;:4;:15;;;21446:32;;21473:5;21466:12;;;;;21446:32;21489:29;21502:4;21508:2;21512:5;21489:12;:29::i;:::-;;21540:2;21534:16;;;21544:5;21534:16;;;;;;;;;;;;;;;;;;21568:4;21561:11;;;20988:592;;;;;;;:::o;8180:185::-;8251:21;8257:7;8266:5;8251;:21::i;:::-;8283:74;8292:7;8301:10;8313:43;8350:5;8313:11;:20;8325:7;8313:20;;;;;;;;;;;;;;;:32;8334:10;8313:32;;;;;;;;;;;;;;;;:36;;:43;;;;:::i;:::-;8283:8;:74::i;:::-;8180:185;;:::o;13044:157::-;13109:29;13130:7;13109:13;:20;;:29;;;;:::i;:::-;13182:10;13154:39;;13173:7;13154:39;;;;;;;;;;;;13044:157;:::o;11808:154::-;11872:28;11892:7;11872:12;:19;;:28;;;;:::i;:::-;11943:10;11916:38;;11934:7;11916:38;;;;;;;;;;;;11808:154;:::o;14611:116::-;14139:7;;;;;;;;;;;14138:8;14130:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14681:4:::1;14671:7;;:14;;;;;;;;;;;;;;;;;;14701:18;14708:10;14701:18;;;;;;;;;;;;;;;;;;;;14611:116::o:0;24451:192::-;24537:7;24570:1;24565;:6;;24573:12;24557:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24597:9;24613:1;24609;:5;24597:17;;24634:1;24627:8;;;24451:192;;;;;:::o;2324:173::-;2410:4;2427:40;2437:10;2449:9;2460:6;2427:9;:40::i;:::-;2485:4;2478:11;;2324:173;;;;:::o;12887:149::-;12949:26;12967:7;12949:13;:17;;:26;;;;:::i;:::-;13017:10;12991:37;;13008:7;12991:37;;;;;;;;;;;;12887:149;:::o;22789:179::-;22867:18;22871:4;22877:7;22867:3;:18::i;:::-;22866:19;22858:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22956:4;22932;:12;;:21;22945:7;22932:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22789:179;;:::o;6279:477::-;6403:1;6385:20;;:6;:20;;;;6377:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6487:1;6466:23;;:9;:23;;;;6458:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6560;6582:6;6560:71;;;;;;;;;;;;;;;;;:9;:17;6570:6;6560:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6540:9;:17;6550:6;6540:17;;;;;;;;;;;;;;;:91;;;;6665:32;6690:6;6665:9;:20;6675:9;6665:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6642:9;:20;6652:9;6642:20;;;;;;;;;;;;;;;:55;;;;6730:9;6713:35;;6722:6;6713:35;;;6741:6;6713:35;;;;;;;;;;;;;;;;;;6279:477;;;:::o;24012:136::-;24070:7;24097:43;24101:1;24104;24097:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;24090:50;;24012:136;;;;:::o;23038:184::-;23118:18;23122:4;23128:7;23118:3;:18::i;:::-;23110:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23209:5;23185:4;:12;;:21;23198:7;23185:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;23038:184;;:::o
Swarm Source
ipfs://1f058d1071d569ddc1966478813dc143fb873a670520a2548f43f2424ae5f4ca
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.