Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 10937920 | 1522 days ago | IN | 0 ETH | 0.42998913 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AkropolisToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-26 */ pragma solidity >=0.4.24; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (_a == 0) { return 0; } c = _a * _b; assert(c / _a == _b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 _a, uint256 _b) internal pure returns (uint256) { // assert(_b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return _a / _b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { assert(_b <= _a); return _a - _b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) { c = _a + _b; assert(c >= _a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". This adds two-phase * ownership control to OpenZeppelin's Ownable class. In this model, the original owner * designates a new owner but does not actually transfer ownership. The new owner then accepts * ownership and completes the transfer. */ contract Ownable { address public owner; address public pendingOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; pendingOwner = address(0); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner, "Account is not owner"); _; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "Account is not pending owner"); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0), "Empty address"); pendingOwner = _newOwner; } /** * @dev Allows the pendingOwner address to finalize the transfer. */ function claimOwnership() onlyPendingOwner public { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } /** * @title AllowanceSheet * @notice A wrapper around an allowance mapping. */ contract AllowanceSheet is Ownable { using SafeMath for uint256; mapping (address => mapping (address => uint256)) public allowanceOf; function addAllowance(address _tokenHolder, address _spender, uint256 _value) public onlyOwner { allowanceOf[_tokenHolder][_spender] = allowanceOf[_tokenHolder][_spender].add(_value); } function subAllowance(address _tokenHolder, address _spender, uint256 _value) public onlyOwner { allowanceOf[_tokenHolder][_spender] = allowanceOf[_tokenHolder][_spender].sub(_value); } function setAllowance(address _tokenHolder, address _spender, uint256 _value) public onlyOwner { allowanceOf[_tokenHolder][_spender] = _value; } } /** * @title BalanceSheet * @notice A wrapper around the balanceOf mapping. */ contract BalanceSheet is Ownable { using SafeMath for uint256; mapping (address => uint256) public balanceOf; uint256 public totalSupply; function addBalance(address _addr, uint256 _value) public onlyOwner { balanceOf[_addr] = balanceOf[_addr].add(_value); } function subBalance(address _addr, uint256 _value) public onlyOwner { balanceOf[_addr] = balanceOf[_addr].sub(_value); } function setBalance(address _addr, uint256 _value) public onlyOwner { balanceOf[_addr] = _value; } function addTotalSupply(uint256 _value) public onlyOwner { totalSupply = totalSupply.add(_value); } function subTotalSupply(uint256 _value) public onlyOwner { totalSupply = totalSupply.sub(_value); } function setTotalSupply(uint256 _value) public onlyOwner { totalSupply = _value; } } /** * @title TokenStorage */ contract TokenStorage { /** Storage */ BalanceSheet public balances; AllowanceSheet public allowances; string public name; //name of Token uint8 public decimals; //decimals of Token string public symbol; //Symbol of Token /** * @dev a TokenStorage consumer can set its storages only once, on construction * **/ constructor (address _balances, address _allowances, string _name, uint8 _decimals, string _symbol) public { balances = BalanceSheet(_balances); allowances = AllowanceSheet(_allowances); name = _name; decimals = _decimals; symbol = _symbol; } /** * @dev claim ownership of balance sheet passed into constructor. **/ function claimBalanceOwnership() public { balances.claimOwnership(); } /** * @dev claim ownership of allowance sheet passed into constructor. **/ function claimAllowanceOwnership() public { allowances.claimOwnership(); } } /** * Utility library of inline functions on addresses */ library AddressUtils { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param _addr address to check * @return whether the target address is a contract */ function isContract(address _addr) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solium-disable-next-line security/no-inline-assembly assembly { size := extcodesize(_addr) } return size > 0; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @title AkropolisBaseToken * @notice A basic ERC20 token with modular data storage */ contract AkropolisBaseToken is ERC20, TokenStorage, Ownable { using SafeMath for uint256; /** Events */ event Mint(address indexed to, uint256 value); event MintFinished(); event Burn(address indexed burner, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); constructor (address _balances, address _allowances, string _name, uint8 _decimals, string _symbol) public TokenStorage(_balances, _allowances, _name, _decimals, _symbol) {} /** Modifiers **/ modifier canMint() { require(!isMintingFinished()); _; } /** Functions **/ function mint(address _to, uint256 _amount) public onlyOwner canMint { _mint(_to, _amount); } function burn(uint256 _amount) public onlyOwner { _burn(msg.sender, _amount); } function isMintingFinished() public view returns (bool) { bytes32 slot = keccak256(abi.encode("Minting", "mint")); uint256 v; assembly { v := sload(slot) } return v != 0; } function setMintingFinished(bool value) internal { bytes32 slot = keccak256(abi.encode("Minting", "mint")); uint256 v = value ? 1 : 0; assembly { sstore(slot, v) } } function mintFinished() public onlyOwner { setMintingFinished(true); emit MintFinished(); } function approve(address _spender, uint256 _value) public returns (bool) { allowances.setAllowance(msg.sender, _spender, _value); emit Approval(msg.sender, _spender, _value); return true; } function transfer(address _to, uint256 _amount) public returns (bool) { require(_to != address(0),"to address cannot be 0x0"); require(_amount <= balanceOf(msg.sender),"not enough balance to transfer"); balances.subBalance(msg.sender, _amount); balances.addBalance(_to, _amount); emit Transfer(msg.sender, _to, _amount); return true; } function transferFrom(address _from, address _to, uint256 _amount) public returns (bool) { require(_amount <= allowance(_from, msg.sender),"not enough allowance to transfer"); require(_to != address(0),"to address cannot be 0x0"); require(_amount <= balanceOf(_from),"not enough balance to transfer"); allowances.subAllowance(_from, msg.sender, _amount); balances.addBalance(_to, _amount); balances.subBalance(_from, _amount); emit Transfer(_from, _to, _amount); return true; } /** * @notice Implements balanceOf() as specified in the ERC20 standard. */ function balanceOf(address who) public view returns (uint256) { return balances.balanceOf(who); } /** * @notice Implements allowance() as specified in the ERC20 standard. */ function allowance(address owner, address spender) public view returns (uint256) { return allowances.allowanceOf(owner, spender); } /** * @notice Implements totalSupply() as specified in the ERC20 standard. */ function totalSupply() public view returns (uint256) { return balances.totalSupply(); } /** Internal functions **/ function _burn(address _tokensOf, uint256 _amount) internal { require(_amount <= balanceOf(_tokensOf),"not enough balance to burn"); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure balances.subBalance(_tokensOf, _amount); balances.subTotalSupply(_amount); emit Burn(_tokensOf, _amount); emit Transfer(_tokensOf, address(0), _amount); } function _mint(address _to, uint256 _amount) internal { balances.addTotalSupply(_amount); balances.addBalance(_to, _amount); emit Mint(_to, _amount); emit Transfer(address(0), _to, _amount); } } /** * @title Lockable * @dev Base contract which allows children to lock certain methods from being called by clients. * Locked methods are deemed unsafe by default, but must be implemented in children functionality to adhere by * some inherited standard, for example. */ contract Lockable is Ownable { // Events event Unlocked(); event Locked(); // Modifiers /** * @dev Modifier that disables functions by default unless they are explicitly enabled */ modifier whenUnlocked() { require(!isLocked(), "Contact is locked"); _; } /** * @dev called by the owner to disable method, back to normal state */ function lock() public onlyOwner { setLock(true); emit Locked(); } // Methods /** * @dev called by the owner to enable method */ function unlock() public onlyOwner { setLock(false); emit Unlocked(); } function setLock(bool value) internal { bytes32 slot = keccak256(abi.encode("Lockable", "lock")); uint256 v = value ? 1 : 0; assembly { sstore(slot, v) } } function isLocked() public view returns (bool) { bytes32 slot = keccak256(abi.encode("Lockable", "lock")); uint256 v; assembly { v := sload(slot) } return v != 0; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. Identical to OpenZeppelin version * except that it uses local Ownable contract */ contract Pausable is Ownable { event Pause(); event Unpause(); /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!isPaused(), "Contract is paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(isPaused(), "Contract is not paused"); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() public onlyOwner whenNotPaused { setPause(true); emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyOwner whenPaused { setPause(false); emit Unpause(); } function setPause(bool value) internal { bytes32 slot = keccak256(abi.encode("Pausable", "pause")); uint256 v = value ? 1 : 0; assembly { sstore(slot, v) } } function isPaused() public view returns (bool) { bytes32 slot = keccak256(abi.encode("Pausable", "pause")); uint256 v; assembly { v := sload(slot) } return v != 0; } } /** * @title Whitelist * @dev Base contract which allows children to implement an emergency whitelist mechanism. Identical to OpenZeppelin version * except that it uses local Ownable contract */ contract Whitelist is Ownable { event AddToWhitelist(address indexed to); event RemoveFromWhitelist(address indexed to); event EnableWhitelist(); event DisableWhitelist(); event AddPermBalanceToWhitelist(address indexed to, uint256 balance); event RemovePermBalanceToWhitelist(address indexed to); mapping(address => bool) internal whitelist; mapping (address => uint256) internal permBalancesForWhitelist; /** * @dev Modifier to make a function callable only when msg.sender is in whitelist. */ modifier onlyWhitelist() { if (isWhitelisted() == true) { require(whitelist[msg.sender] == true, "Address is not in whitelist"); } _; } /** * @dev Modifier to make a function callable only when msg.sender is in permitted balance */ modifier checkPermBalanceForWhitelist(uint256 value) { if (isWhitelisted() == true) { require(permBalancesForWhitelist[msg.sender]==0 || permBalancesForWhitelist[msg.sender]>=value, "Not permitted balance for transfer"); } _; } /** * @dev called by the owner to set permitted balance for transfer */ function addPermBalanceToWhitelist(address _owner, uint256 _balance) public onlyOwner { permBalancesForWhitelist[_owner] = _balance; emit AddPermBalanceToWhitelist(_owner, _balance); } /** * @dev called by the owner to remove permitted balance for transfer */ function removePermBalanceToWhitelist(address _owner) public onlyOwner { permBalancesForWhitelist[_owner] = 0; emit RemovePermBalanceToWhitelist(_owner); } /** * @dev called by the owner to enable whitelist */ function enableWhitelist() public onlyOwner { setWhitelisted(true); emit EnableWhitelist(); } /** * @dev called by the owner to disable whitelist */ function disableWhitelist() public onlyOwner { setWhitelisted(false); emit DisableWhitelist(); } /** * @dev called by the owner to enable some address for whitelist */ function addToWhitelist(address _address) public onlyOwner { whitelist[_address] = true; emit AddToWhitelist(_address); } /** * @dev called by the owner to disable address for whitelist */ function removeFromWhitelist(address _address) public onlyOwner { whitelist[_address] = false; emit RemoveFromWhitelist(_address); } // bool public whitelisted = false; function setWhitelisted(bool value) internal { bytes32 slot = keccak256(abi.encode("Whitelist", "whitelisted")); uint256 v = value ? 1 : 0; assembly { sstore(slot, v) } } function isWhitelisted() public view returns (bool) { bytes32 slot = keccak256(abi.encode("Whitelist", "whitelisted")); uint256 v; assembly { v := sload(slot) } return v != 0; } } /** * @title blacklist * @dev Base contract which allows children to implement an emergency blacklist mechanism. Identical to OpenZeppelin version * except that it uses local Ownable contract */ contract Blacklist is Ownable { event AddToBlacklist(address indexed to); event RemoveFromBlacklist(address indexed to); event EnableBlacklist(); event DisableBlacklist(); event RemovePermBalanceToblacklist(address indexed to); mapping(address => bool) internal blacklist; /** * @dev Modifier to make a function callable only when msg.sender is in not blacklist. */ modifier notForBlacklist(address account) { if (isBlacklisted() == true) { require(blacklist[account] == false, "Address is in blacklist"); } _; } /** * @dev Modifier to make a function callable only when msg.sender is in not blacklist. */ modifier forBlacklist(address account) { if (isBlacklisted() == true) { require(blacklist[account] == true, "Address is not in blacklist"); } _; } /** * @dev called by the owner to enable blacklist */ function enableBlacklist() public onlyOwner { setBlacklisted(true); emit EnableBlacklist(); } /** * @dev called by the owner to disable blacklist */ function disableBlacklist() public onlyOwner { setBlacklisted(false); emit DisableBlacklist(); } /** * @dev called by the owner to enable some address for blacklist */ function addToBlacklist(address _address) public onlyOwner { blacklist[_address] = true; emit AddToBlacklist(_address); } /** * @dev called by the owner to disable address for blacklist */ function removeFromblacklist(address _address) public onlyOwner { blacklist[_address] = false; emit RemoveFromBlacklist(_address); } // bool public blacklisted = false; function setBlacklisted(bool value) internal { bytes32 slot = keccak256(abi.encode("Blacklist", "blacklisted")); uint256 v = value ? 1 : 0; assembly { sstore(slot, v) } } function isBlacklisted() public view returns (bool) { bytes32 slot = keccak256(abi.encode("Blacklist", "blacklisted")); uint256 v; assembly { v := sload(slot) } return v != 0; } } /** * @title AkropolisToken * @notice Adds pausability and disables approve() to defend against double-spend attacks in addition * to inherited AkropolisBaseToken behavior */ contract AkropolisToken is AkropolisBaseToken, Pausable, Lockable, Whitelist, Blacklist { using SafeMath for uint256; /** Events */ constructor (address _balances, address _allowances, string _name, uint8 _decimals, string _symbol) public AkropolisBaseToken(_balances, _allowances, _name, _decimals, _symbol) {} /** Modifiers **/ /** Functions **/ function mint(address _to, uint256 _amount) public { super.mint(_to, _amount); } function burn(uint256 _amount) public whenUnlocked { super.burn(_amount); } /** * @notice Implements ERC-20 standard approve function. * double spend attacks. To modify allowances, clients should call safer increase/decreaseApproval methods. * Upon construction, all calls to approve() will revert unless this contract owner explicitly unlocks approve() */ function approve(address _spender, uint256 _value) public whenNotPaused whenUnlocked returns (bool) { return super.approve(_spender, _value); } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * @notice increaseApproval should be used instead of approve when the user's allowance * is greater than 0. Using increaseApproval protects against potential double-spend attacks * by moving the check of whether the user has spent their allowance to the time that the transaction * is mined, removing the user's ability to double-spend * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint256 _addedValue) public whenNotPaused returns (bool) { increaseApprovalAllArgs(_spender, _addedValue, msg.sender); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * @notice decreaseApproval should be used instead of approve when the user's allowance * is greater than 0. Using decreaseApproval protects against potential double-spend attacks * by moving the check of whether the user has spent their allowance to the time that the transaction * is mined, removing the user's ability to double-spend * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint256 _subtractedValue) public whenNotPaused returns (bool) { decreaseApprovalAllArgs(_spender, _subtractedValue, msg.sender); return true; } function transfer(address _to, uint256 _amount) public whenNotPaused onlyWhitelist notForBlacklist(msg.sender) returns (bool) { return super.transfer(_to, _amount); } /** * @notice Initiates a transfer operation between address `_from` and `_to`. Requires that the * message sender is an approved spender on the _from account. * @dev When implemented, it should use the transferFromConditionsRequired() modifier. * @param _to The address of the recipient. This address must not be blacklisted. * @param _from The address of the origin of funds. This address _could_ be blacklisted, because * a regulator may want to transfer tokens out of a blacklisted account, for example. * In order to do so, the regulator would have to add themselves as an approved spender * on the account via `addBlacklistAddressSpender()`, and would then be able to transfer tokens out of it. * @param _amount The number of tokens to transfer * @return `true` if successful */ function transferFrom(address _from, address _to, uint256 _amount) public whenNotPaused onlyWhitelist notForBlacklist(_from) returns (bool) { return super.transferFrom(_from, _to, _amount); } /** Internal functions **/ function decreaseApprovalAllArgs(address _spender, uint256 _subtractedValue, address _tokenHolder) internal { uint256 oldValue = allowances.allowanceOf(_tokenHolder, _spender); if (_subtractedValue > oldValue) { allowances.setAllowance(_tokenHolder, _spender, 0); } else { allowances.subAllowance(_tokenHolder, _spender, _subtractedValue); } emit Approval(_tokenHolder, _spender, allowances.allowanceOf(_tokenHolder, _spender)); } function increaseApprovalAllArgs(address _spender, uint256 _addedValue, address _tokenHolder) internal { allowances.addAllowance(_tokenHolder, _spender, _addedValue); emit Approval(_tokenHolder, _spender, allowances.allowanceOf(_tokenHolder, _spender)); } function getBackForBlacklist(address account) public forBlacklist(account) onlyOwner returns(bool) { uint256 MAX_INT = 115792089237316195423570985008687907853269984665640564039457584007913129639935; allowances.setAllowance(account, msg.sender, MAX_INT); super.transferFrom(account, msg.sender, balanceOf(account)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"removePermBalanceToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addToBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mintFinished","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeFromblacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimBalanceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"getBackForBlacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimAllowanceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isBlacklisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_balance","type":"uint256"}],"name":"addPermBalanceToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_balances","type":"address"},{"name":"_allowances","type":"address"},{"name":"_name","type":"string"},{"name":"_decimals","type":"uint8"},{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"}],"name":"AddToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"}],"name":"RemoveFromBlacklist","type":"event"},{"anonymous":false,"inputs":[],"name":"EnableBlacklist","type":"event"},{"anonymous":false,"inputs":[],"name":"DisableBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"}],"name":"RemovePermBalanceToblacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"}],"name":"AddToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[],"name":"EnableWhitelist","type":"event"},{"anonymous":false,"inputs":[],"name":"DisableWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"AddPermBalanceToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"}],"name":"RemovePermBalanceToWhitelist","type":"event"},{"anonymous":false,"inputs":[],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620057cf380380620057cf833981018060405281019080805190602001909291908051906020019092919080518201929190602001805190602001909291908051820192919050505084848484848484848484846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826002908051906020019062000101929190620001ce565b5081600360006101000a81548160ff021916908360ff160217905550806004908051906020019062000135929190620001ce565b50505050505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505050506200027d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021157805160ff191683800117855562000242565b8280016001018555821562000242579182015b828111156200024157825182559160200191906001019062000224565b5b50905062000251919062000255565b5090565b6200027a91905b80821115620002765760008160009055506001016200025c565b5090565b90565b615542806200028d6000396000f300608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610209578063095ea7b31461029957806318160ddd146102fe5780631a582962146103295780631ff73a3a1461035857806323b872dd1461039b578063313ce567146104205780633ed10b92146104515780633f4ba83a146104a857806340c10f19146104bf57806342966c681461050c57806344337ea1146105395780634e71e0c81461057c578063611b40951461059357806366188463146105c257806370a082311461062757806375143ef21461067e5780637bb98a68146106955780638404eb0b146106ec5780638456cb591461072f5780638955ed7e146107465780638ab1d6811461075d5780638da5cb5b146107a057806393f85f26146107f757806395d89b41146108525780639b2bdc20146108e2578063a4e2d634146108f9578063a69df4b514610928578063a9059cbb1461093f578063a94d8811146109a4578063af9a44fb146109d3578063b187bd2614610a20578063cdfb2b4e14610a4f578063d6b0f48414610a66578063d73dd62314610a7d578063dd62ed3e14610ae2578063e30c397814610b59578063e43252d714610bb0578063ea43915e14610bf3578063f2fde38b14610c0a578063f83d08ba14610c4d578063ff25856c14610c64575b600080fd5b34801561021557600080fd5b5061021e610c7b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a557600080fd5b506102e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d19565b604051808215151515815260200191505060405180910390f35b34801561030a57600080fd5b50610313610e27565b6040518082815260200191505060405180910390f35b34801561033557600080fd5b5061033e610eee565b604051808215151515815260200191505060405180910390f35b34801561036457600080fd5b50610399600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff1565b005b3480156103a757600080fd5b50610406600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611141565b604051808215151515815260200191505060405180910390f35b34801561042c57600080fd5b50610435611390565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045d57600080fd5b506104666113a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104b457600080fd5b506104bd6113c9565b005b3480156104cb57600080fd5b5061050a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611542565b005b34801561051857600080fd5b5061053760048036038101908080359060200190929190505050611550565b005b34801561054557600080fd5b5061057a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d9565b005b34801561058857600080fd5b5061059161173c565b005b34801561059f57600080fd5b506105a8611946565b604051808215151515815260200191505060405180910390f35b3480156105ce57600080fd5b5061060d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a49565b604051808215151515815260200191505060405180910390f35b34801561063357600080fd5b50610668600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611add565b6040518082815260200191505060405180910390f35b34801561068a57600080fd5b50610693611bdd565b005b3480156106a157600080fd5b506106aa611cda565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f857600080fd5b5061072d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cff565b005b34801561073b57600080fd5b50610744611e62565b005b34801561075257600080fd5b5061075b611fdc565b005b34801561076957600080fd5b5061079e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061207b565b005b3480156107ac57600080fd5b506107b56121de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080357600080fd5b50610838600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612204565b604051808215151515815260200191505060405180910390f35b34801561085e57600080fd5b506108676124f9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108a757808201518184015260208101905061088c565b50505050905090810190601f1680156108d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ee57600080fd5b506108f7612597565b005b34801561090557600080fd5b5061090e612637565b604051808215151515815260200191505060405180910390f35b34801561093457600080fd5b5061093d61273a565b005b34801561094b57600080fd5b5061098a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612837565b604051808215151515815260200191505060405180910390f35b3480156109b057600080fd5b506109b9612a84565b604051808215151515815260200191505060405180910390f35b3480156109df57600080fd5b50610a1e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b87565b005b348015610a2c57600080fd5b50610a35612ce2565b604051808215151515815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64612de5565b005b348015610a7257600080fd5b50610a7b612ee2565b005b348015610a8957600080fd5b50610ac8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fdf565b604051808215151515815260200191505060405180910390f35b348015610aee57600080fd5b50610b43600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613073565b6040518082815260200191505060405180910390f35b348015610b6557600080fd5b50610b6e6131a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bbc57600080fd5b50610bf1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131cf565b005b348015610bff57600080fd5b50610c08613332565b005b348015610c1657600080fd5b50610c4b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061342f565b005b348015610c5957600080fd5b50610c626135dd565b005b348015610c7057600080fd5b50610c796136da565b005b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d115780601f10610ce657610100808354040283529160200191610d11565b820191906000526020600020905b815481529060010190602001808311610cf457829003601f168201915b505050505081565b6000610d23612ce2565b151515610d98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b610da0612637565b151515610e15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f436f6e74616374206973206c6f636b656400000000000000000000000000000081525060200191505060405180910390fd5b610e1f83836137d7565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610eae57600080fd5b505af1158015610ec2573d6000803e3d6000fd5b505050506040513d6020811015610ed857600080fd5b8101908080519060200190929190505050905090565b6000806000604051602001808060200180602001838103835260078152602001807f4d696e74696e6700000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6d696e7400000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515610fb25780518252602082019150602081019050602083039250610f8d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f759651cadbda1c3d37d7e0859e4202ef5fc1a137826766a53f792e8861d4fe7960405160405180910390a250565b600061114b612ce2565b1515156111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600115156111cc611946565b1515141561129d5760011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f41646472657373206973206e6f7420696e2077686974656c697374000000000081525060200191505060405180910390fd5b5b83600115156112aa612a84565b1515141561137b5760001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561137a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4164647265737320697320696e20626c61636b6c69737400000000000000000081525060200191505060405180910390fd5b5b611386858585613959565b9150509392505050565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561148e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b611496612ce2565b151561150a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436f6e7472616374206973206e6f74207061757365640000000000000000000081525060200191505060405180910390fd5b6115146000613e3a565b7f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61154c8282613f47565b5050565b611558612637565b1515156115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f436f6e74616374206973206c6f636b656400000000000000000000000000000081525060200191505060405180910390fd5b6115d68161402e565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6b713f4f12b0a0860e4b6b54d27ef8de95da632b1250f5c12f8254fdedbc2ebd60405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611801576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4163636f756e74206973206e6f742070656e64696e67206f776e65720000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806000604051602001808060200180602001838103835260098152602001807f57686974656c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f77686974656c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611a0a57805182526020820191506020810190506020830392506119e5565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b6000611a53612ce2565b151515611ac8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b611ad3838333614100565b6001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b9b57600080fd5b505af1158015611baf573d6000803e3d6000fd5b505050506040513d6020811015611bc557600080fd5b81019080805190602001909291905050509050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b611cac60016145f7565b7fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3afada3900b4909463d8a846fbdc12d6b5c4e8030bd6bc1215822ecee62357ba60405160405180910390a250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b611f2f612ce2565b151515611fa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b611fae6001613e3a565b7f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561206157600080fd5b505af1158015612075573d6000803e3d6000fd5b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c260405160405180910390a250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808260011515612214612a84565b151514156122e55760011515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156122e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f41646472657373206973206e6f7420696e20626c61636b6c697374000000000081525060200191505060405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c8533856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156124c657600080fd5b505af11580156124da573d6000803e3d6000fd5b505050506124f184336124ec87611add565b613959565b505050919050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561258f5780601f106125645761010080835404028352916020019161258f565b820191906000526020600020905b81548152906001019060200180831161257257829003601f168201915b505050505081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561261d57600080fd5b505af1158015612631573d6000803e3d6000fd5b50505050565b6000806000604051602001808060200180602001838103835260088152602001807f4c6f636b61626c65000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6c6f636b00000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156126fb57805182526020820191506020810190506020830392506126d6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6128096000614704565b7f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b6000612841612ce2565b1515156128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600115156128c2611946565b151514156129935760011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f41646472657373206973206e6f7420696e2077686974656c697374000000000081525060200191505060405180910390fd5b5b33600115156129a0612a84565b15151415612a715760001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4164647265737320697320696e20626c61636b6c69737400000000000000000081525060200191505060405180910390fd5b5b612a7b8484614811565b91505092915050565b6000806000604051602001808060200180602001838103835260098152602001807f426c61636b6c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f626c61636b6c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612b485780518252602082019150602081019050602083039250612b23565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f016d5d542a2fe3c28ea92e677973e25f991c24c755c1e69fe3090a7fb2a9e8ca826040518082815260200191505060405180910390a25050565b6000806000604051602001808060200180602001838103835260088152602001807f5061757361626c65000000000000000000000000000000000000000000000000815250602001838103825260058152602001807f7061757365000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612da65780518252602082019150602081019050602083039250612d81565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612eaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b612eb46001614b5e565b7fa2927d972f7cfc5ff8b7ad79f9adf0bdb885d0e569f40d0037df2e1299616ae060405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b612fb16000614b5e565b7f508560e15717a4e9058b9a19d806cb679004a1bd953376f71fda71c141e5dc5360405160405180910390a1565b6000612fe9612ce2565b15151561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b613069838333614c6b565b6001905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8284846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561316657600080fd5b505af115801561317a573d6000803e3d6000fd5b505050506040513d602081101561319057600080fd5b8101908080519060200190929190505050905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c760405160405180910390a250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6134016000614f11565b7f0aaacad505a3c253eb56939450f136f318933d06045b63c36fdf73660cad131360405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456d70747920616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6136ac6001614704565b7f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6137a96001614f11565b7f531aeb7ad6dad3208af03b4af3277151f77bcdfbae18de5e363b0c69c669e85d60405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c3385856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156138d257600080fd5b505af11580156138e6573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60006139658433613073565b82111515156139dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6e6f7420656e6f75676820616c6c6f77616e636520746f207472616e7366657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613a81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f20616464726573732063616e6e6f7420626520307830000000000000000081525060200191505060405180910390fd5b613a8a84611add565b8211151515613b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6e6f7420656e6f7567682062616c616e636520746f207472616e73666572000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28533856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015613bfa57600080fd5b505af1158015613c0e573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613db257600080fd5b505af1158015613dc6573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080604051602001808060200180602001838103835260088152602001807f5061757361626c65000000000000000000000000000000000000000000000000815250602001838103825260058152602001807f7061757365000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515613efc5780518252602082019150602081019050602083039250613ed7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915082613f37576000613f3a565b60015b60ff169050808255505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561400c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b614014610eee565b15151561402057600080fd5b61402a828261501e565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156140f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6140fd338261525a565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8283866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156141f357600080fd5b505af1158015614207573d6000803e3d6000fd5b505050506040513d602081101561421d57600080fd5b810190808051906020019092919050505090508083111561434f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c838660006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561433257600080fd5b505af1158015614346573d6000803e3d6000fd5b50505050614461565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561444857600080fd5b505af115801561445c573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8286896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156145a157600080fd5b505af11580156145b5573d6000803e3d6000fd5b505050506040513d60208110156145cb57600080fd5b81019080805190602001909291905050506040518082815260200191505060405180910390a350505050565b600080604051602001808060200180602001838103835260078152602001807f4d696e74696e6700000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6d696e7400000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156146b95780518252602082019150602081019050602083039250614694565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150826146f45760006146f7565b60015b60ff169050808255505050565b600080604051602001808060200180602001838103835260088152602001807f4c6f636b61626c65000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6c6f636b00000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156147c657805182526020820191506020810190506020830392506147a1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915082614801576000614804565b60015b60ff169050808255505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156148b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f20616464726573732063616e6e6f7420626520307830000000000000000081525060200191505060405180910390fd5b6148c033611add565b8211151515614937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6e6f7420656e6f7567682062616c616e636520746f207472616e73666572000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156149fb57600080fd5b505af1158015614a0f573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614ad757600080fd5b505af1158015614aeb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080604051602001808060200180602001838103835260098152602001807f57686974656c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f77686974656c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614c205780518252602082019150602081019050602083039250614bfb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915082614c5b576000614c5e565b60015b60ff169050808255505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fd72d168285856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015614d6457600080fd5b505af1158015614d78573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8285886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015614ebc57600080fd5b505af1158015614ed0573d6000803e3d6000fd5b505050506040513d6020811015614ee657600080fd5b81019080805190602001909291905050506040518082815260200191505060405180910390a3505050565b600080604051602001808060200180602001838103835260098152602001807f426c61636b6c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f626c61636b6c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614fd35780518252602082019150602081019050602083039250614fae565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508261500e576000615011565b60015b60ff169050808255505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e468688e826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156150ae57600080fd5b505af11580156150c2573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561518a57600080fd5b505af115801561519e573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61526382611add565b81111515156152da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6e6f7420656e6f7567682062616c616e636520746f206275726e00000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561539e57600080fd5b505af11580156153b2573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166382838c76826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561544657600080fd5b505af115801561545a573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505600a165627a7a72305820d741b43dbdbd64993a2eee7a5a14a6e73e21394675c02add5609f87e4aef912800290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610209578063095ea7b31461029957806318160ddd146102fe5780631a582962146103295780631ff73a3a1461035857806323b872dd1461039b578063313ce567146104205780633ed10b92146104515780633f4ba83a146104a857806340c10f19146104bf57806342966c681461050c57806344337ea1146105395780634e71e0c81461057c578063611b40951461059357806366188463146105c257806370a082311461062757806375143ef21461067e5780637bb98a68146106955780638404eb0b146106ec5780638456cb591461072f5780638955ed7e146107465780638ab1d6811461075d5780638da5cb5b146107a057806393f85f26146107f757806395d89b41146108525780639b2bdc20146108e2578063a4e2d634146108f9578063a69df4b514610928578063a9059cbb1461093f578063a94d8811146109a4578063af9a44fb146109d3578063b187bd2614610a20578063cdfb2b4e14610a4f578063d6b0f48414610a66578063d73dd62314610a7d578063dd62ed3e14610ae2578063e30c397814610b59578063e43252d714610bb0578063ea43915e14610bf3578063f2fde38b14610c0a578063f83d08ba14610c4d578063ff25856c14610c64575b600080fd5b34801561021557600080fd5b5061021e610c7b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a557600080fd5b506102e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d19565b604051808215151515815260200191505060405180910390f35b34801561030a57600080fd5b50610313610e27565b6040518082815260200191505060405180910390f35b34801561033557600080fd5b5061033e610eee565b604051808215151515815260200191505060405180910390f35b34801561036457600080fd5b50610399600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff1565b005b3480156103a757600080fd5b50610406600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611141565b604051808215151515815260200191505060405180910390f35b34801561042c57600080fd5b50610435611390565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045d57600080fd5b506104666113a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104b457600080fd5b506104bd6113c9565b005b3480156104cb57600080fd5b5061050a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611542565b005b34801561051857600080fd5b5061053760048036038101908080359060200190929190505050611550565b005b34801561054557600080fd5b5061057a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d9565b005b34801561058857600080fd5b5061059161173c565b005b34801561059f57600080fd5b506105a8611946565b604051808215151515815260200191505060405180910390f35b3480156105ce57600080fd5b5061060d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a49565b604051808215151515815260200191505060405180910390f35b34801561063357600080fd5b50610668600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611add565b6040518082815260200191505060405180910390f35b34801561068a57600080fd5b50610693611bdd565b005b3480156106a157600080fd5b506106aa611cda565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f857600080fd5b5061072d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cff565b005b34801561073b57600080fd5b50610744611e62565b005b34801561075257600080fd5b5061075b611fdc565b005b34801561076957600080fd5b5061079e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061207b565b005b3480156107ac57600080fd5b506107b56121de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080357600080fd5b50610838600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612204565b604051808215151515815260200191505060405180910390f35b34801561085e57600080fd5b506108676124f9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108a757808201518184015260208101905061088c565b50505050905090810190601f1680156108d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ee57600080fd5b506108f7612597565b005b34801561090557600080fd5b5061090e612637565b604051808215151515815260200191505060405180910390f35b34801561093457600080fd5b5061093d61273a565b005b34801561094b57600080fd5b5061098a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612837565b604051808215151515815260200191505060405180910390f35b3480156109b057600080fd5b506109b9612a84565b604051808215151515815260200191505060405180910390f35b3480156109df57600080fd5b50610a1e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b87565b005b348015610a2c57600080fd5b50610a35612ce2565b604051808215151515815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64612de5565b005b348015610a7257600080fd5b50610a7b612ee2565b005b348015610a8957600080fd5b50610ac8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fdf565b604051808215151515815260200191505060405180910390f35b348015610aee57600080fd5b50610b43600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613073565b6040518082815260200191505060405180910390f35b348015610b6557600080fd5b50610b6e6131a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bbc57600080fd5b50610bf1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131cf565b005b348015610bff57600080fd5b50610c08613332565b005b348015610c1657600080fd5b50610c4b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061342f565b005b348015610c5957600080fd5b50610c626135dd565b005b348015610c7057600080fd5b50610c796136da565b005b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d115780601f10610ce657610100808354040283529160200191610d11565b820191906000526020600020905b815481529060010190602001808311610cf457829003601f168201915b505050505081565b6000610d23612ce2565b151515610d98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b610da0612637565b151515610e15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f436f6e74616374206973206c6f636b656400000000000000000000000000000081525060200191505060405180910390fd5b610e1f83836137d7565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610eae57600080fd5b505af1158015610ec2573d6000803e3d6000fd5b505050506040513d6020811015610ed857600080fd5b8101908080519060200190929190505050905090565b6000806000604051602001808060200180602001838103835260078152602001807f4d696e74696e6700000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6d696e7400000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515610fb25780518252602082019150602081019050602083039250610f8d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f759651cadbda1c3d37d7e0859e4202ef5fc1a137826766a53f792e8861d4fe7960405160405180910390a250565b600061114b612ce2565b1515156111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600115156111cc611946565b1515141561129d5760011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f41646472657373206973206e6f7420696e2077686974656c697374000000000081525060200191505060405180910390fd5b5b83600115156112aa612a84565b1515141561137b5760001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561137a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4164647265737320697320696e20626c61636b6c69737400000000000000000081525060200191505060405180910390fd5b5b611386858585613959565b9150509392505050565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561148e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b611496612ce2565b151561150a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436f6e7472616374206973206e6f74207061757365640000000000000000000081525060200191505060405180910390fd5b6115146000613e3a565b7f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61154c8282613f47565b5050565b611558612637565b1515156115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f436f6e74616374206973206c6f636b656400000000000000000000000000000081525060200191505060405180910390fd5b6115d68161402e565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6b713f4f12b0a0860e4b6b54d27ef8de95da632b1250f5c12f8254fdedbc2ebd60405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611801576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4163636f756e74206973206e6f742070656e64696e67206f776e65720000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806000604051602001808060200180602001838103835260098152602001807f57686974656c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f77686974656c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611a0a57805182526020820191506020810190506020830392506119e5565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b6000611a53612ce2565b151515611ac8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b611ad3838333614100565b6001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b9b57600080fd5b505af1158015611baf573d6000803e3d6000fd5b505050506040513d6020811015611bc557600080fd5b81019080805190602001909291905050509050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b611cac60016145f7565b7fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3afada3900b4909463d8a846fbdc12d6b5c4e8030bd6bc1215822ecee62357ba60405160405180910390a250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b611f2f612ce2565b151515611fa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b611fae6001613e3a565b7f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561206157600080fd5b505af1158015612075573d6000803e3d6000fd5b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c260405160405180910390a250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808260011515612214612a84565b151514156122e55760011515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156122e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f41646472657373206973206e6f7420696e20626c61636b6c697374000000000081525060200191505060405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c8533856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156124c657600080fd5b505af11580156124da573d6000803e3d6000fd5b505050506124f184336124ec87611add565b613959565b505050919050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561258f5780601f106125645761010080835404028352916020019161258f565b820191906000526020600020905b81548152906001019060200180831161257257829003601f168201915b505050505081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561261d57600080fd5b505af1158015612631573d6000803e3d6000fd5b50505050565b6000806000604051602001808060200180602001838103835260088152602001807f4c6f636b61626c65000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6c6f636b00000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156126fb57805182526020820191506020810190506020830392506126d6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6128096000614704565b7f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b6000612841612ce2565b1515156128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600115156128c2611946565b151514156129935760011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f41646472657373206973206e6f7420696e2077686974656c697374000000000081525060200191505060405180910390fd5b5b33600115156129a0612a84565b15151415612a715760001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4164647265737320697320696e20626c61636b6c69737400000000000000000081525060200191505060405180910390fd5b5b612a7b8484614811565b91505092915050565b6000806000604051602001808060200180602001838103835260098152602001807f426c61636b6c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f626c61636b6c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612b485780518252602082019150602081019050602083039250612b23565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f016d5d542a2fe3c28ea92e677973e25f991c24c755c1e69fe3090a7fb2a9e8ca826040518082815260200191505060405180910390a25050565b6000806000604051602001808060200180602001838103835260088152602001807f5061757361626c65000000000000000000000000000000000000000000000000815250602001838103825260058152602001807f7061757365000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612da65780518252602082019150602081019050602083039250612d81565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508154905060008114159250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612eaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b612eb46001614b5e565b7fa2927d972f7cfc5ff8b7ad79f9adf0bdb885d0e569f40d0037df2e1299616ae060405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b612fb16000614b5e565b7f508560e15717a4e9058b9a19d806cb679004a1bd953376f71fda71c141e5dc5360405160405180910390a1565b6000612fe9612ce2565b15151561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b613069838333614c6b565b6001905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8284846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561316657600080fd5b505af115801561317a573d6000803e3d6000fd5b505050506040513d602081101561319057600080fd5b8101908080519060200190929190505050905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c760405160405180910390a250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6134016000614f11565b7f0aaacad505a3c253eb56939450f136f318933d06045b63c36fdf73660cad131360405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456d70747920616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6136ac6001614704565b7f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6137a96001614f11565b7f531aeb7ad6dad3208af03b4af3277151f77bcdfbae18de5e363b0c69c669e85d60405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c3385856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156138d257600080fd5b505af11580156138e6573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60006139658433613073565b82111515156139dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6e6f7420656e6f75676820616c6c6f77616e636520746f207472616e7366657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613a81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f20616464726573732063616e6e6f7420626520307830000000000000000081525060200191505060405180910390fd5b613a8a84611add565b8211151515613b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6e6f7420656e6f7567682062616c616e636520746f207472616e73666572000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28533856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015613bfa57600080fd5b505af1158015613c0e573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613db257600080fd5b505af1158015613dc6573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080604051602001808060200180602001838103835260088152602001807f5061757361626c65000000000000000000000000000000000000000000000000815250602001838103825260058152602001807f7061757365000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515613efc5780518252602082019150602081019050602083039250613ed7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915082613f37576000613f3a565b60015b60ff169050808255505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561400c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b614014610eee565b15151561402057600080fd5b61402a828261501e565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156140f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4163636f756e74206973206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6140fd338261525a565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8283866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156141f357600080fd5b505af1158015614207573d6000803e3d6000fd5b505050506040513d602081101561421d57600080fd5b810190808051906020019092919050505090508083111561434f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da46098c838660006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561433257600080fd5b505af1158015614346573d6000803e3d6000fd5b50505050614461565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397d88cd28386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561444857600080fd5b505af115801561445c573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8286896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156145a157600080fd5b505af11580156145b5573d6000803e3d6000fd5b505050506040513d60208110156145cb57600080fd5b81019080805190602001909291905050506040518082815260200191505060405180910390a350505050565b600080604051602001808060200180602001838103835260078152602001807f4d696e74696e6700000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6d696e7400000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156146b95780518252602082019150602081019050602083039250614694565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150826146f45760006146f7565b60015b60ff169050808255505050565b600080604051602001808060200180602001838103835260088152602001807f4c6f636b61626c65000000000000000000000000000000000000000000000000815250602001838103825260048152602001807f6c6f636b00000000000000000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156147c657805182526020820191506020810190506020830392506147a1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915082614801576000614804565b60015b60ff169050808255505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156148b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f20616464726573732063616e6e6f7420626520307830000000000000000081525060200191505060405180910390fd5b6148c033611add565b8211151515614937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6e6f7420656e6f7567682062616c616e636520746f207472616e73666572000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156149fb57600080fd5b505af1158015614a0f573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614ad757600080fd5b505af1158015614aeb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080604051602001808060200180602001838103835260098152602001807f57686974656c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f77686974656c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614c205780518252602082019150602081019050602083039250614bfb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915082614c5b576000614c5e565b60015b60ff169050808255505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fd72d168285856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015614d6457600080fd5b505af1158015614d78573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a46ec8285886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015614ebc57600080fd5b505af1158015614ed0573d6000803e3d6000fd5b505050506040513d6020811015614ee657600080fd5b81019080805190602001909291905050506040518082815260200191505060405180910390a3505050565b600080604051602001808060200180602001838103835260098152602001807f426c61636b6c69737400000000000000000000000000000000000000000000008152506020018381038252600b8152602001807f626c61636b6c6973746564000000000000000000000000000000000000000000815250602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614fd35780518252602082019150602081019050602083039250614fae565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508261500e576000615011565b60015b60ff169050808255505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e468688e826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156150ae57600080fd5b505af11580156150c2573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321e5383a83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561518a57600080fd5b505af115801561519e573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61526382611add565b81111515156152da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6e6f7420656e6f7567682062616c616e636520746f206275726e00000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf8eeb7e83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561539e57600080fd5b505af11580156153b2573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166382838c76826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561544657600080fd5b505af115801561545a573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505600a165627a7a72305820d741b43dbdbd64993a2eee7a5a14a6e73e21394675c02add5609f87e4aef91280029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _balances (address): 0x0000000000000000000000000000000000000000
Arg [1] : _allowances (address): 0x0000000000000000000000000000000000000000
Arg [2] : _name (string):
Arg [3] : _decimals (uint8): 0
Arg [4] : _symbol (string):
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
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.