ERC-20
Overview
Max Total Supply
168,000,000 FCP
Holders
37
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Filipcoin
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-11-27
*/
pragma solidity 0.5.8;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: node_modules\openzeppelin-solidity\contracts\math\SafeMath.sol
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, "SafeMath: division by zero");
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "SafeMath: modulo by zero");
return a % b;
}
}
// File: node_modules\openzeppelin-solidity\contracts\token\ERC20\ERC20.sol
/**
* @dev Implementation of the `IERC20` interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using `_mint`.
* For a generic mechanism see `ERC20Mintable`.
*
* *For a detailed writeup see our guide [How to implement supply
* mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an `Approval` event is emitted on calls to `transferFrom`.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
* functions have been added to mitigate the well-known issues around setting
* allowances. See `IERC20.approve`.
*/
contract ERC20 is IERC20 {
using SafeMath for uint256;
mapping (address => uint256) internal _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
/**
* @dev See `IERC20.transfer`.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
/**
* @dev See `IERC20.allowance`.
*/
function allowance(address owner, address spender) public view returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See `IERC20.approve`.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public returns (bool) {
_approve(msg.sender, spender, value);
return true;
}
/**
* @dev See `IERC20.transferFrom`.
*
* Emits an `Approval` event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of `ERC20`;
*
* Requirements:
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `value`.
* - the caller must have allowance for `sender`'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to `approve` that can be used as a mitigation for
* problems described in `IERC20.approve`.
*
* Emits an `Approval` event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to `approve` that can be used as a mitigation for
* problems described in `IERC20.approve`.
*
* Emits an `Approval` event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to `transfer`, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a `Transfer` event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(amount);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a `Transfer` event with `from` set to the zero address.
*
* Requirements
*
* - `to` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destoys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a `Transfer` event with `to` set to the zero address.
*
* Requirements
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 value) internal {
require(account != address(0), "ERC20: burn from the zero address");
_totalSupply = _totalSupply.sub(value);
_balances[account] = _balances[account].sub(value);
emit Transfer(account, address(0), value);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
*
* This is internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an `Approval` event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 value) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = value;
emit Approval(owner, spender, value);
}
/**
* @dev Destoys `amount` tokens from `account`.`amount` is then deducted
* from the caller's allowance.
*
* See `_burn` and `_approve`.
*/
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
}
}
contract Filipcoin is ERC20 {
string public constant name = "FILIPCOIN";
string public constant symbol = "FCP";
uint8 public constant decimals = 18;
uint256 public constant initialSupply = 168000000 * (10 ** uint256(decimals));
bool public _lockStatus = false;
bool private isValue;
constructor() public {
super._mint(msg.sender, initialSupply);
owner = msg.sender;
}
mapping (address => uint256) private time;
mapping (address => uint256) private _lockedAmount;
//ownership
address public owner;
event OwnershipRenounced(address indexed previousOwner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
/**
* @dev Allows the current owner to relinquish control of the contract.
* @notice Renouncing to ownership will leave the contract without an owner.
* It will not be possible to call the functions with the `onlyOwner`
* modifier anymore.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipRenounced(owner);
owner = address(0);
}
/**
* @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 {
_transferOwnership(_newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0), "Already owner");
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
//pausable
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused, "Paused by owner");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused, "Not paused now");
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() public onlyOwner whenNotPaused {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() public onlyOwner whenPaused {
paused = false;
emit Unpause();
}
//freezable
event Frozen(address target);
event Unfrozen(address target);
mapping(address => bool) internal freezes;
modifier whenNotFrozen() {
require(!freezes[msg.sender], "Sender account is locked.");
_;
}
function freeze(address _target) public onlyOwner {
freezes[_target] = true;
emit Frozen(_target);
}
function unfreeze(address _target) public onlyOwner {
freezes[_target] = false;
emit Unfrozen(_target);
}
function isFrozen(address _target) public view returns (bool) {
return freezes[_target];
}
/* ----------------------------------------------------------------------------
* Locking functions
* ----------------------------------------------------------------------------
*/
/**
* @dev Lock all transfer functions of the contract
* @return request status
*/
function setAllTransfersLockStatus(bool RunningStatusLock) external onlyOwner returns (bool)
{
_lockStatus = RunningStatusLock;
return true;
}
/**
* @dev check lock status of all transfers
* @return lock status
*/
function getAllTransfersLockStatus() public view returns (bool)
{
return _lockStatus;
}
/**
* @dev time calculator for locked tokens
*/
function addLockingTime(address lockingAddress,uint8 lockingTime, uint256 amount) internal returns (bool){
time[lockingAddress] = now + (lockingTime * 1 days);
_lockedAmount[lockingAddress] = amount;
return true;
}
function transferByOwner(address to, uint256 value, uint8 lockingTime) public AllTransfersLockStatus onlyOwner returns (bool) {
addLockingTime(to,lockingTime,value);
_transfer(msg.sender, to, value);
return true;
}
/**
* @dev check for time based lock
* @param _address address to check for locking time
* @return time in block format
*/
function checkLockingTimeByAddress(address _address) public view returns(uint256){
return time[_address];
}
/**
* @dev return locking status
* @param userAddress address of to check
* @return locking status in true or false
*/
function getLockingStatus(address userAddress) public view returns(bool){
if (now < time[userAddress]){
return true;
}
else{
return false;
}
}
/**
* @dev Decreaese locking time
* @param _affectiveAddress Address of the locked address
* @param _decreasedTime Time in days to be affected
*/
function decreaseLockingTimeByAddress(address _affectiveAddress, uint _decreasedTime) external onlyOwner returns(bool){
require(_decreasedTime > 0 && time[_affectiveAddress] > now, "Please check address status or Incorrect input");
time[_affectiveAddress] = time[_affectiveAddress] - (_decreasedTime * 1 days);
return true;
}
/**
* @dev Increase locking time
* @param _affectiveAddress Address of the locked address
* @param _increasedTime Time in days to be affected
*/
function increaseLockingTimeByAddress(address _affectiveAddress, uint _increasedTime) external onlyOwner returns(bool){
require(_increasedTime > 0 && time[_affectiveAddress] > now, "Please check address status or Incorrect input");
time[_affectiveAddress] = time[_affectiveAddress] + (_increasedTime * 1 days);
return true;
}
/**
* @dev modifier to check validation of lock status of smart contract
*/
modifier AllTransfersLockStatus()
{
require(_lockStatus == false,"All transactions are locked for this contract");
_;
}
/**
* @dev modifier to check locking amount
* @param _address address to check
* @param requestedAmount Amount to check
* @return status
*/
modifier checkLocking(address _address,uint256 requestedAmount){
if(now < time[_address]){
require(!( _balances[_address] - _lockedAmount[_address] < requestedAmount), "Insufficient unlocked balance");
}
else{
require(1 == 1,"Transfer can not be processed");
}
_;
}
function transfer(
address _to,
uint256 _value
)
public
AllTransfersLockStatus
checkLocking(msg.sender,_value)
whenNotFrozen
whenNotPaused
returns (bool)
{
releaseLock(msg.sender);
return super.transfer(_to, _value);
}
function transferFrom(
address _from,
address _to,
uint256 _value
)
public
AllTransfersLockStatus
checkLocking(_from,_value)
whenNotPaused
returns (bool)
{
require(!freezes[_from], "From account is locked.");
releaseLock(_from);
return super.transferFrom(_from, _to, _value);
}
//mintable
event Mint(address indexed to, uint256 amount);
function mint(
address _to,
uint256 _amount
)
public
onlyOwner
returns (bool)
{
super._mint(_to, _amount);
emit Mint(_to, _amount);
return true;
}
//burnable
event Burn(address indexed burner, uint256 value);
function burn(address _who, uint256 _value) public
onlyOwner
checkLocking(msg.sender,_value)
{
require(_value <= super.balanceOf(_who), "Balance is too small.");
_burn(_who, _value);
emit Burn(_who, _value);
}
//lockable
struct LockInfo {
uint256 releaseTime;
uint256 balance;
}
mapping(address => LockInfo[]) internal lockInfo;
event Lock(address indexed holder, uint256 value, uint256 releaseTime);
event Unlock(address indexed holder, uint256 value);
function balanceOf(address _holder) public view returns (uint256 balance) {
uint256 lockedBalance = 0;
for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
lockedBalance = lockedBalance.add(lockInfo[_holder][i].balance);
}
return super.balanceOf(_holder).add(lockedBalance);
}
function releaseLock(address _holder) internal {
for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
if (lockInfo[_holder][i].releaseTime <= now) {
_balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
emit Unlock(_holder, lockInfo[_holder][i].balance);
lockInfo[_holder][i].balance = 0;
if (i != lockInfo[_holder].length - 1) {
lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
i--;
}
lockInfo[_holder].length--;
}
}
}
function lockCount(address _holder) public view returns (uint256) {
return lockInfo[_holder].length;
}
function lockState(address _holder, uint256 _idx) public view returns (uint256, uint256) {
return (lockInfo[_holder][_idx].releaseTime, lockInfo[_holder][_idx].balance);
}
function lock(address _holder, uint256 _amount, uint256 _releaseTime) public onlyOwner {
require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
_balances[_holder] = _balances[_holder].sub(_amount);
lockInfo[_holder].push(
LockInfo(_releaseTime, _amount)
);
emit Lock(_holder, _amount, _releaseTime);
}
function lockAfter(address _holder, uint256 _amount, uint256 _afterTime) public onlyOwner {
require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
_balances[_holder] = _balances[_holder].sub(_amount);
lockInfo[_holder].push(
LockInfo(now + _afterTime, _amount)
);
emit Lock(_holder, _amount, now + _afterTime);
}
function unlock(address _holder, uint256 i) public onlyOwner {
require(i < lockInfo[_holder].length, "No lock information.");
_balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
emit Unlock(_holder, lockInfo[_holder][i].balance);
lockInfo[_holder][i].balance = 0;
if (i != lockInfo[_holder].length - 1) {
lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
}
lockInfo[_holder].length--;
}
function transferLockedTokens(address from, address to, uint256 value) external onlyOwner returns (bool){
require((_lockedAmount[from] >= value) && (now < time[from]), "Insufficient unlocked balance");
require(from != address(0) && to != address(0), "Invalid address");
_lockedAmount[from] = _lockedAmount[from] - value;
_transfer(from,to,value);
}
function transferWithLock(address _to, uint256 _value, uint256 _releaseTime) public onlyOwner returns (bool) {
require(_to != address(0), "wrong address");
require(_value <= super.balanceOf(owner), "Not enough balance");
_balances[owner] = _balances[owner].sub(_value);
lockInfo[_to].push(
LockInfo(_releaseTime, _value)
);
emit Transfer(owner, _to, _value);
emit Lock(_to, _value, _releaseTime);
return true;
}
function transferWithLockAfter(address _to, uint256 _value, uint256 _afterTime) public onlyOwner returns (bool) {
require(_to != address(0), "wrong address");
require(_value <= super.balanceOf(owner), "Not enough balance");
_balances[owner] = _balances[owner].sub(_value);
lockInfo[_to].push(
LockInfo(now + _afterTime, _value)
);
emit Transfer(owner, _to, _value);
emit Lock(_to, _value, now + _afterTime);
return true;
}
function currentTime() public view returns (uint256) {
return now;
}
function afterTime(uint256 _value) public view returns (uint256) {
return now + _value;
}
//airdrop
mapping (address => uint256) public airDropHistory;
event AirDrop(address _receiver, uint256 _amount);
function airdropByOwner(address[] memory receivers, uint256[] memory values) public AllTransfersLockStatus onlyOwner {
require(receivers.length != 0);
require(receivers.length == values.length);
for (uint256 i = 0; i < receivers.length; i++) {
address receiver = receivers[i];
uint256 amount = values[i];
transfer(receiver, amount);
airDropHistory[receiver] += amount;
emit AirDrop(receiver, amount);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"afterTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"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":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","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":"initialSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"lockingTime","type":"uint8"}],"name":"transferByOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_idx","type":"uint256"}],"name":"lockState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"RunningStatusLock","type":"bool"}],"name":"setAllTransfersLockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_affectiveAddress","type":"address"},{"name":"_decreasedTime","type":"uint256"}],"name":"decreaseLockingTimeByAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"i","type":"uint256"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"checkLockingTimeByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"lockAfter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"freeze","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":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"transferWithLockAfter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_affectiveAddress","type":"address"},{"name":"_increasedTime","type":"uint256"}],"name":"increaseLockingTimeByAddress","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":true,"inputs":[],"name":"getAllTransfersLockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_lockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferLockedTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"}],"name":"getLockingStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"airDropHistory","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"airdropByOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"lockCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"isFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Frozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Unfrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","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":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_receiver","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"AirDrop","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"}]Contract Creation Code
60806040526000600360006101000a81548160ff0219169083151502179055506000600660146101000a81548160ff0219169083151502179055503480156200004757600080fd5b506200006c33601260ff16600a0a630a037a0002620000b360201b620054e21760201c565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000306565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000173816002546200027d60201b6200511a1790919060201c565b600281905550620001d1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200027d60201b6200511a1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015620002fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b615c1d80620003166000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80638a57af6b11610151578063c2fb97f8116100c3578063de6baccb11610087578063de6baccb14610dc4578063defcf51f14610e34578063df03458614610f80578063e2ab691d14610fd8578063e583983614611030578063f2fde38b1461108c57610269565b8063c2fb97f814610bf4578063cb9bd15a14610c7a578063ccd28a4c14610cd6578063d18e81b314610d2e578063dd62ed3e14610d4c57610269565b806395d89b411161011557806395d89b4114610a135780639b9843df14610a965780639dc29fac14610ab8578063a02619e414610b06578063a457c2d714610b28578063a9059cbb14610b8e57610269565b80638a57af6b146108575780638d1fdf2f146108af5780638da5cb5b146108f3578063927a4a7b1461093d57806394a6b712146109ad57610269565b806340c10f19116101ea57806370a08231116101ae57806370a08231146106df578063715018a6146107375780637338e39d146107415780637eee288d146107a75780638456cb59146107f5578063894f879e146107ff57610269565b806340c10f191461056257806345c8b1a6146105c857806346cf1bb51461060c5780635c975abb146106755780636b180d691461069757610269565b8063313ce56711610231578063313ce5671461043d578063378dc3dc14610461578063395093511461047f5780633ec45d89146104e55780633f4ba83a1461055857610269565b806304859ceb1461026e57806306fdde03146102b0578063095ea7b31461033357806318160ddd1461039957806323b872dd146103b7575b600080fd5b61029a6004803603602081101561028457600080fd5b81019080803590602001909291905050506110d0565b6040518082815260200191505060405180910390f35b6102b86110dc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f85780820151818401526020810190506102dd565b50505050905090810190601f1680156103255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61037f6004803603604081101561034957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611115565b604051808215151515815260200191505060405180910390f35b6103a161112c565b6040518082815260200191505060405180910390f35b610423600480360360608110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611136565b604051808215151515815260200191505060405180910390f35b6104456114bf565b604051808260ff1660ff16815260200191505060405180910390f35b6104696114c4565b6040518082815260200191505060405180910390f35b6104cb6004803603604081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d5565b604051808215151515815260200191505060405180910390f35b61053e600480360360608110156104fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff16906020019092919050505061157a565b604051808215151515815260200191505060405180910390f35b6105606116cc565b005b6105ae6004803603604081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185a565b604051808215151515815260200191505060405180910390f35b61060a600480360360208110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611981565b005b6106586004803603604081101561062257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b02565b604051808381526020018281526020019250505060405180910390f35b61067d611bc8565b604051808215151515815260200191505060405180910390f35b6106c5600480360360208110156106ad57600080fd5b81019080803515159060200190929190505050611bdb565b604051808215151515815260200191505060405180910390f35b610721600480360360208110156106f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cc3565b6040518082815260200191505060405180910390f35b61073f611dbb565b005b61078d6004803603604081101561075757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f27565b604051808215151515815260200191505060405180910390f35b6107f3600480360360408110156107bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612123565b005b6107fd612645565b005b6108416004803603602081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127d4565b6040518082815260200191505060405180910390f35b6108ad6004803603606081101561086d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061281d565b005b6108f1600480360360208110156108c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae6565b005b6108fb612c67565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109936004803603606081101561095357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612c8d565b604051808215151515815260200191505060405180910390f35b6109f9600480360360408110156109c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130ee565b604051808215151515815260200191505060405180910390f35b610a1b6132ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a5b578082015181840152602081019050610a40565b50505050905090810190601f168015610a885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a9e613323565b604051808215151515815260200191505060405180910390f35b610b0460048036036040811015610ace57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061333a565b005b610b0e613693565b604051808215151515815260200191505060405180910390f35b610b7460048036036040811015610b3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506136a6565b604051808215151515815260200191505060405180910390f35b610bda60048036036040811015610ba457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061374b565b604051808215151515815260200191505060405180910390f35b610c6060048036036060811015610c0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613ad2565b604051808215151515815260200191505060405180910390f35b610cbc60048036036020811015610c9057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e09565b604051808215151515815260200191505060405180910390f35b610d1860048036036020811015610cec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e65565b6040518082815260200191505060405180910390f35b610d36613e7d565b6040518082815260200191505060405180910390f35b610dae60048036036040811015610d6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e85565b6040518082815260200191505060405180910390f35b610e1a60048036036060811015610dda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050613f0c565b604051808215151515815260200191505060405180910390f35b610f7e60048036036040811015610e4a57600080fd5b8101908080359060200190640100000000811115610e6757600080fd5b820183602082011115610e7957600080fd5b80359060200191846020830284011164010000000083111715610e9b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610efb57600080fd5b820183602082011115610f0d57600080fd5b80359060200191846020830284011164010000000083111715610f2f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050614369565b005b610fc260048036036020811015610f9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506145cb565b6040518082815260200191505060405180910390f35b61102e60048036036060811015610fee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050614617565b005b6110726004803603602081101561104657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506148dc565b604051808215151515815260200191505060405180910390f35b6110ce600480360360208110156110a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614932565b005b60008142019050919050565b6040518060400160405280600981526020017f46494c4950434f494e000000000000000000000000000000000000000000000081525081565b6000611122338484614a01565b6001905092915050565b6000600254905090565b6000801515600360009054906101000a900460ff161515146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b8382600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156112e65780600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156112e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b61135d565b6001801461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5472616e736665722063616e206e6f742062652070726f63657373656400000081525060200191505060405180910390fd5b5b600660149054906101000a900460ff16156113e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f46726f6d206163636f756e74206973206c6f636b65642e00000000000000000081525060200191505060405180910390fd5b6114a986614bf8565b6114b4868686615069565b925050509392505050565b601281565b601260ff16600a0a630a037a000281565b6000611570338461156b85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b614a01565b6001905092915050565b6000801515600360009054906101000a900460ff161515146115e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116b58483856151a2565b506116c1338585615246565b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660149054906101000a900460ff16611811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420706175736564206e6f7700000000000000000000000000000000000081525060200191505060405180910390fd5b6000600660146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61192983836154e2565b8273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611b4f57fe5b906000526020600020906002020160000154600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611bab57fe5b906000526020600020906002020160010154915091509250929050565b600660149054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600360006101000a81548160ff02191690831515021790555060019050919050565b6000806000905060008090505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611d9757611d88600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611d6757fe5b9060005260206000209060020201600101548361511a90919063ffffffff16565b91508080600101915050611cd0565b50611db381611da58561569d565b61511a90919063ffffffff16565b915050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211801561203a575042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b61208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615b2d602e913960400191505060405180910390fd5b620151808202600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811061229d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f206c6f636b20696e666f726d6174696f6e2e00000000000000000000000081525060200191505060405180910390fd5b612349600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106122ea57fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061240d57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061248057fe5b9060005260206000209060020201600101819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381146125ee57600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038154811061257057fe5b9060005260206000209060020201600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106125c857fe5b906000526020600020906002020160008201548160000155600182015481600101559050505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036126409190615a86565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660149054906101000a900460ff161561278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816128ea8461569d565b101561295e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6129af826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808342018152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b83834201604051808381526020018281526020019250505060405180910390a2505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612e20600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661569d565b831115612e95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b612f0883600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808442018152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84844201604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082118015613201575042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615b2d602e913960400191505060405180910390fd5b620151808202600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b6040518060400160405280600381526020017f464350000000000000000000000000000000000000000000000000000000000081525081565b6000600360009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3381600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156135405780600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403101561353b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b6135b7565b600180146135b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5472616e736665722063616e206e6f742062652070726f63657373656400000081525060200191505060405180910390fd5b5b6135c08461569d565b831115613635576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b61363f848461576e565b8373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a250505050565b600360009054906101000a900460ff1681565b6000613741338461373c85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b614a01565b6001905092915050565b6000801515600360009054906101000a900460ff161515146137b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b3382600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156138fb5780600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156138f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b613972565b60018014613971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5472616e736665722063616e206e6f742062652070726f63657373656400000081525060200191505060405180910390fd5b5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656e646572206163636f756e74206973206c6f636b65642e0000000000000081525060200191505060405180910390fd5b600660149054906101000a900460ff1615613ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b613abe33614bf8565b613ac8858561590c565b9250505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613b97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613c245750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442105b613c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613d005750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b613d72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e02848484615246565b9392505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421015613e5b5760019050613e60565b600090505b919050565b60096020528060005260406000206000915090505481565b600042905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613fd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b61409f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661569d565b831115614114576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b61418783600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b60001515600360009054906101000a900460ff161515146143d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614498576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000825114156144a757600080fd5b80518251146144b557600080fd5b60008090505b82518110156145c65760008382815181106144d257fe5b6020026020010151905060008383815181106144ea57fe5b602002602001015190506144fe828261374b565b5080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055507f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd988282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505080806001019150506144bb565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146146da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816146e48461569d565b1015614758576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6147a9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280838152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8383604051808381526020018281526020019250505060405180910390a2505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146149f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6149fe81615923565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615bce6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b0b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008090505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156150655742600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614c9357fe5b9060005260206000209060020201600001541161505857614d56600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614cf757fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110614e1a57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614e8d57fe5b9060005260206000209060020201600101819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003811461500457600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110614f7d57fe5b9060005260206000209060020201600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614fd557fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600190039150505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036150569190615a86565b505b8080600101915050614bfe565b5050565b6000615076848484615246565b61510f843361510a85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b614a01565b600190509392505050565b600080828401905083811015615198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000620151808360ff160262ffffff164201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156152cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615ba96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415615352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615ae86023913960400191505060405180910390fd5b6153a3816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615436816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415615585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61559a8160025461511a90919063ffffffff16565b6002819055506155f1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008282111561575d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156157f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615b886021913960400191505060405180910390fd5b615809816002546156e590919063ffffffff16565b600281905550615860816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000615919338484615246565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156159c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f416c7265616479206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b815481835581811115615ab357600202816002028360005260206000209182019101615ab29190615ab8565b5b505050565b615ae491905b80821115615ae057600080820160009055600182016000905550600201615abe565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373506c6561736520636865636b206164647265737320737461747573206f7220496e636f727265637420696e707574416c6c207472616e73616374696f6e7320617265206c6f636b656420666f72207468697320636f6e747261637445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058203ee67c87cc6f889254f03e681a4514e859817c91797e6c6826e472f9515cbce60029
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102695760003560e01c80638a57af6b11610151578063c2fb97f8116100c3578063de6baccb11610087578063de6baccb14610dc4578063defcf51f14610e34578063df03458614610f80578063e2ab691d14610fd8578063e583983614611030578063f2fde38b1461108c57610269565b8063c2fb97f814610bf4578063cb9bd15a14610c7a578063ccd28a4c14610cd6578063d18e81b314610d2e578063dd62ed3e14610d4c57610269565b806395d89b411161011557806395d89b4114610a135780639b9843df14610a965780639dc29fac14610ab8578063a02619e414610b06578063a457c2d714610b28578063a9059cbb14610b8e57610269565b80638a57af6b146108575780638d1fdf2f146108af5780638da5cb5b146108f3578063927a4a7b1461093d57806394a6b712146109ad57610269565b806340c10f19116101ea57806370a08231116101ae57806370a08231146106df578063715018a6146107375780637338e39d146107415780637eee288d146107a75780638456cb59146107f5578063894f879e146107ff57610269565b806340c10f191461056257806345c8b1a6146105c857806346cf1bb51461060c5780635c975abb146106755780636b180d691461069757610269565b8063313ce56711610231578063313ce5671461043d578063378dc3dc14610461578063395093511461047f5780633ec45d89146104e55780633f4ba83a1461055857610269565b806304859ceb1461026e57806306fdde03146102b0578063095ea7b31461033357806318160ddd1461039957806323b872dd146103b7575b600080fd5b61029a6004803603602081101561028457600080fd5b81019080803590602001909291905050506110d0565b6040518082815260200191505060405180910390f35b6102b86110dc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f85780820151818401526020810190506102dd565b50505050905090810190601f1680156103255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61037f6004803603604081101561034957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611115565b604051808215151515815260200191505060405180910390f35b6103a161112c565b6040518082815260200191505060405180910390f35b610423600480360360608110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611136565b604051808215151515815260200191505060405180910390f35b6104456114bf565b604051808260ff1660ff16815260200191505060405180910390f35b6104696114c4565b6040518082815260200191505060405180910390f35b6104cb6004803603604081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d5565b604051808215151515815260200191505060405180910390f35b61053e600480360360608110156104fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff16906020019092919050505061157a565b604051808215151515815260200191505060405180910390f35b6105606116cc565b005b6105ae6004803603604081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185a565b604051808215151515815260200191505060405180910390f35b61060a600480360360208110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611981565b005b6106586004803603604081101561062257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b02565b604051808381526020018281526020019250505060405180910390f35b61067d611bc8565b604051808215151515815260200191505060405180910390f35b6106c5600480360360208110156106ad57600080fd5b81019080803515159060200190929190505050611bdb565b604051808215151515815260200191505060405180910390f35b610721600480360360208110156106f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cc3565b6040518082815260200191505060405180910390f35b61073f611dbb565b005b61078d6004803603604081101561075757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f27565b604051808215151515815260200191505060405180910390f35b6107f3600480360360408110156107bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612123565b005b6107fd612645565b005b6108416004803603602081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127d4565b6040518082815260200191505060405180910390f35b6108ad6004803603606081101561086d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061281d565b005b6108f1600480360360208110156108c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae6565b005b6108fb612c67565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109936004803603606081101561095357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612c8d565b604051808215151515815260200191505060405180910390f35b6109f9600480360360408110156109c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130ee565b604051808215151515815260200191505060405180910390f35b610a1b6132ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a5b578082015181840152602081019050610a40565b50505050905090810190601f168015610a885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a9e613323565b604051808215151515815260200191505060405180910390f35b610b0460048036036040811015610ace57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061333a565b005b610b0e613693565b604051808215151515815260200191505060405180910390f35b610b7460048036036040811015610b3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506136a6565b604051808215151515815260200191505060405180910390f35b610bda60048036036040811015610ba457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061374b565b604051808215151515815260200191505060405180910390f35b610c6060048036036060811015610c0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613ad2565b604051808215151515815260200191505060405180910390f35b610cbc60048036036020811015610c9057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e09565b604051808215151515815260200191505060405180910390f35b610d1860048036036020811015610cec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e65565b6040518082815260200191505060405180910390f35b610d36613e7d565b6040518082815260200191505060405180910390f35b610dae60048036036040811015610d6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e85565b6040518082815260200191505060405180910390f35b610e1a60048036036060811015610dda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050613f0c565b604051808215151515815260200191505060405180910390f35b610f7e60048036036040811015610e4a57600080fd5b8101908080359060200190640100000000811115610e6757600080fd5b820183602082011115610e7957600080fd5b80359060200191846020830284011164010000000083111715610e9b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610efb57600080fd5b820183602082011115610f0d57600080fd5b80359060200191846020830284011164010000000083111715610f2f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050614369565b005b610fc260048036036020811015610f9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506145cb565b6040518082815260200191505060405180910390f35b61102e60048036036060811015610fee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050614617565b005b6110726004803603602081101561104657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506148dc565b604051808215151515815260200191505060405180910390f35b6110ce600480360360208110156110a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614932565b005b60008142019050919050565b6040518060400160405280600981526020017f46494c4950434f494e000000000000000000000000000000000000000000000081525081565b6000611122338484614a01565b6001905092915050565b6000600254905090565b6000801515600360009054906101000a900460ff161515146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b8382600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156112e65780600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156112e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b61135d565b6001801461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5472616e736665722063616e206e6f742062652070726f63657373656400000081525060200191505060405180910390fd5b5b600660149054906101000a900460ff16156113e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f46726f6d206163636f756e74206973206c6f636b65642e00000000000000000081525060200191505060405180910390fd5b6114a986614bf8565b6114b4868686615069565b925050509392505050565b601281565b601260ff16600a0a630a037a000281565b6000611570338461156b85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b614a01565b6001905092915050565b6000801515600360009054906101000a900460ff161515146115e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116b58483856151a2565b506116c1338585615246565b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660149054906101000a900460ff16611811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420706175736564206e6f7700000000000000000000000000000000000081525060200191505060405180910390fd5b6000600660146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61192983836154e2565b8273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611b4f57fe5b906000526020600020906002020160000154600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611bab57fe5b906000526020600020906002020160010154915091509250929050565b600660149054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600360006101000a81548160ff02191690831515021790555060019050919050565b6000806000905060008090505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611d9757611d88600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611d6757fe5b9060005260206000209060020201600101548361511a90919063ffffffff16565b91508080600101915050611cd0565b50611db381611da58561569d565b61511a90919063ffffffff16565b915050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211801561203a575042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b61208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615b2d602e913960400191505060405180910390fd5b620151808202600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811061229d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f206c6f636b20696e666f726d6174696f6e2e00000000000000000000000081525060200191505060405180910390fd5b612349600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106122ea57fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061240d57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061248057fe5b9060005260206000209060020201600101819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381146125ee57600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038154811061257057fe5b9060005260206000209060020201600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106125c857fe5b906000526020600020906002020160008201548160000155600182015481600101559050505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036126409190615a86565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660149054906101000a900460ff161561278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816128ea8461569d565b101561295e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6129af826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808342018152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b83834201604051808381526020018281526020019250505060405180910390a2505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612e20600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661569d565b831115612e95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b612f0883600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808442018152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84844201604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082118015613201575042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615b2d602e913960400191505060405180910390fd5b620151808202600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b6040518060400160405280600381526020017f464350000000000000000000000000000000000000000000000000000000000081525081565b6000600360009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3381600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156135405780600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403101561353b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b6135b7565b600180146135b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5472616e736665722063616e206e6f742062652070726f63657373656400000081525060200191505060405180910390fd5b5b6135c08461569d565b831115613635576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b61363f848461576e565b8373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a250505050565b600360009054906101000a900460ff1681565b6000613741338461373c85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b614a01565b6001905092915050565b6000801515600360009054906101000a900460ff161515146137b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b3382600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156138fb5780600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540310156138f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b613972565b60018014613971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5472616e736665722063616e206e6f742062652070726f63657373656400000081525060200191505060405180910390fd5b5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656e646572206163636f756e74206973206c6f636b65642e0000000000000081525060200191505060405180910390fd5b600660149054906101000a900460ff1615613ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b613abe33614bf8565b613ac8858561590c565b9250505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613b97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613c245750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442105b613c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e7420756e6c6f636b65642062616c616e636500000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613d005750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b613d72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e02848484615246565b9392505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421015613e5b5760019050613e60565b600090505b919050565b60096020528060005260406000206000915090505481565b600042905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613fd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b61409f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661569d565b831115614114576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b61418783600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b60001515600360009054906101000a900460ff161515146143d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615b5b602d913960400191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614498576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000825114156144a757600080fd5b80518251146144b557600080fd5b60008090505b82518110156145c65760008382815181106144d257fe5b6020026020010151905060008383815181106144ea57fe5b602002602001015190506144fe828261374b565b5080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055507f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd988282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505080806001019150506144bb565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146146da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816146e48461569d565b1015614758576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6147a9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280838152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8383604051808381526020018281526020019250505060405180910390a2505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146149f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6149fe81615923565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615bce6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b0b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008090505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156150655742600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614c9357fe5b9060005260206000209060020201600001541161505857614d56600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614cf757fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110614e1a57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614e8d57fe5b9060005260206000209060020201600101819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003811461500457600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110614f7d57fe5b9060005260206000209060020201600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110614fd557fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600190039150505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036150569190615a86565b505b8080600101915050614bfe565b5050565b6000615076848484615246565b61510f843361510a85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b614a01565b600190509392505050565b600080828401905083811015615198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000620151808360ff160262ffffff164201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156152cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615ba96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415615352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615ae86023913960400191505060405180910390fd5b6153a3816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615436816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415615585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61559a8160025461511a90919063ffffffff16565b6002819055506155f1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461511a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008282111561575d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156157f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615b886021913960400191505060405180910390fd5b615809816002546156e590919063ffffffff16565b600281905550615860816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000615919338484615246565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156159c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f416c7265616479206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b815481835581811115615ab357600202816002028360005260206000209182019101615ab29190615ab8565b5b505050565b615ae491905b80821115615ae057600080820160009055600182016000905550600201615abe565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373506c6561736520636865636b206164647265737320737461747573206f7220496e636f727265637420696e707574416c6c207472616e73616374696f6e7320617265206c6f636b656420666f72207468697320636f6e747261637445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058203ee67c87cc6f889254f03e681a4514e859817c91797e6c6826e472f9515cbce60029
Deployed Bytecode Sourcemap
10657:13782:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10657:13782:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23727:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23727:103:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10692:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10692:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5143:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5143:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4223:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18225:383;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18225:383:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10784:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10826:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6427:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6427:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15093:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15093:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13313:105;;;:::i;:::-;;18687:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18687:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13820:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13820:128:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20696:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20696:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;12603:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14383:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14383:170:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19558:335;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19558:335:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11781:124;;;:::i;:::-;;16211:365;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16211:365:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21678:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21678:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13117:103;;;:::i;:::-;;15506:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15506:124:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21279:391;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21279:391:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13689:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13689:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11212:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23113:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23113:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16760:365;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16760:365:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10740:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10740:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14655:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18996:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18996:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10910:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7136:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7136:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17906:311;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17906:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22202:390;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22202:390:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15797:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15797:230:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23853:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23853:50:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23637:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4862:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4862:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22600:505;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22600:505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23968:468;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23968:468:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;23968:468:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23968:468:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23968:468:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23968:468:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;23968:468:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23968:468:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23968:468:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23968:468:0;;;;;;;;;;;;;;;:::i;:::-;;20574:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20574:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20889:380;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20889:380:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13956:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13956:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12075:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12075:111:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;23727:103;23783:7;23816:6;23810:3;:12;23803:19;;23727:103;;;:::o;10692:41::-;;;;;;;;;;;;;;;;;;;:::o;5143:148::-;5208:4;5225:36;5234:10;5246:7;5255:5;5225:8;:36::i;:::-;5279:4;5272:11;;5143:148;;;;:::o;4223:91::-;4267:7;4294:12;;4287:19;;4223:91;:::o;18225:383::-;18440:4;17299:5;17284:20;;:11;;;;;;;;;;;:20;;;17276:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18389:5;18395:6;17641:4;:14;17646:8;17641:14;;;;;;;;;;;;;;;;17635:3;:20;17632:246;;;17727:15;17701:13;:23;17715:8;17701:23;;;;;;;;;;;;;;;;17679:9;:19;17689:8;17679:19;;;;;;;;;;;;;;;;:45;:63;17676:67;17668:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17632:246;;;17832:1;17827;:6;17819:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17632:246;12787:6;;;;;;;;;;;12786:7;12778:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18472:7;:14;18480:5;18472:14;;;;;;;;;;;;;;;;;;;;;;;;;18471:15;18463:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18525:18;18537:5;18525:11;:18::i;:::-;18561:38;18580:5;18587:3;18592:6;18561:18;:38::i;:::-;18554:45;;17364:1;;18225:383;;;;;:::o;10784:35::-;10817:2;10784:35;:::o;10826:77::-;10817:2;10885:17;;10879:2;:23;10866:9;:37;10826:77;:::o;6427:206::-;6507:4;6524:79;6533:10;6545:7;6554:48;6591:10;6554:11;:23;6566:10;6554:23;;;;;;;;;;;;;;;:32;6578:7;6554:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;6524:8;:79::i;:::-;6621:4;6614:11;;6427:206;;;;:::o;15093:246::-;15213:4;17299:5;17284:20;;:11;;;;;;;;;;;:20;;;17276:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15230:36;15245:2;15248:11;15260:5;15230:14;:36::i;:::-;;15277:32;15287:10;15299:2;15303:5;15277:9;:32::i;:::-;15327:4;15320:11;;15093:246;;;;;:::o;13313:105::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12982:6;;;;;;;;;;;12974:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13380:5;13371:6;;:14;;;;;;;;;;;;;;;;;;13401:9;;;;;;;;;;13313:105::o;18687:227::-;18803:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18825:25;18837:3;18842:7;18825:11;:25::i;:::-;18871:3;18866:18;;;18876:7;18866:18;;;;;;;;;;;;;;;;;;18902:4;18895:11;;18687:227;;;;:::o;13820:128::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:5;13883:7;:16;13891:7;13883:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13923:17;13932:7;13923:17;;;;;;;;;;;;;;;;;;;;;;13820:128;:::o;20696:185::-;20767:7;20776;20804:8;:17;20813:7;20804:17;;;;;;;;;;;;;;;20822:4;20804:23;;;;;;;;;;;;;;;;;;:35;;;20841:8;:17;20850:7;20841:17;;;;;;;;;;;;;;;20859:4;20841:23;;;;;;;;;;;;;;;;;;:31;;;20796:77;;;;20696:185;;;;;:::o;12603:26::-;;;;;;;;;;;;;:::o;14383:170::-;14470:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14506:17;14492:11;;:31;;;;;;;;;;;;;;;;;;14541:4;14534:11;;14383:170;;;:::o;19558:335::-;19615:15;19643:21;19667:1;19643:25;;19683:9;19695:1;19683:13;;19679:146;19702:8;:17;19711:7;19702:17;;;;;;;;;;;;;;;:24;;;;19698:1;:28;19679:146;;;19766:47;19784:8;:17;19793:7;19784:17;;;;;;;;;;;;;;;19802:1;19784:20;;;;;;;;;;;;;;;;;;:28;;;19766:13;:17;;:47;;;;:::i;:::-;19750:63;;19729:3;;;;;;;19679:146;;;;19842:43;19871:13;19842:24;19858:7;19842:15;:24::i;:::-;:28;;:43;;;;:::i;:::-;19835:50;;;19558:335;;;:::o;11781:124::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11862:5;;;;;;;;;;;11843:25;;;;;;;;;;;;11895:1;11879:5;;:18;;;;;;;;;;;;;;;;;;11781:124::o;16211:365::-;16324:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16367:1;16350:14;:18;:51;;;;;16398:3;16372:4;:23;16377:17;16372:23;;;;;;;;;;;;;;;;:29;16350:51;16342:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16535:6;16518:14;:23;16491:4;:23;16496:17;16491:23;;;;;;;;;;;;;;;;:51;16465:4;:23;16470:17;16465:23;;;;;;;;;;;;;;;:77;;;;16562:4;16555:11;;16211:365;;;;:::o;21678:516::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21762:8;:17;21771:7;21762:17;;;;;;;;;;;;;;;:24;;;;21758:1;:28;21750:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21845:52;21868:8;:17;21877:7;21868:17;;;;;;;;;;;;;;;21886:1;21868:20;;;;;;;;;;;;;;;;;;:28;;;21845:9;:18;21855:7;21845:18;;;;;;;;;;;;;;;;:22;;:52;;;;:::i;:::-;21824:9;:18;21834:7;21824:18;;;;;;;;;;;;;;;:73;;;;21920:7;21913:45;;;21929:8;:17;21938:7;21929:17;;;;;;;;;;;;;;;21947:1;21929:20;;;;;;;;;;;;;;;;;;:28;;;21913:45;;;;;;;;;;;;;;;;;;22000:1;21969:8;:17;21978:7;21969:17;;;;;;;;;;;;;;;21987:1;21969:20;;;;;;;;;;;;;;;;;;:28;;:32;;;;22050:1;22023:8;:17;22032:7;22023:17;;;;;;;;;;;;;;;:24;;;;:28;22018:1;:33;22014:136;;22091:8;:17;22100:7;22091:17;;;;;;;;;;;;;;;22136:1;22109:8;:17;22118:7;22109:17;;;;;;;;;;;;;;;:24;;;;:28;22091:47;;;;;;;;;;;;;;;;;;22068:8;:17;22077:7;22068:17;;;;;;;;;;;;;;;22086:1;22068:20;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;22014:136;22160:8;:17;22169:7;22160:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:::i;:::-;;21678:516;;:::o;13117:103::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12787:6;;;;;;;;;;;12786:7;12778:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13185:4;13176:6;;:13;;;;;;;;;;;;;;;;;;13205:7;;;;;;;;;;13117:103::o;15506:124::-;15579:7;15606:4;:14;15611:8;15606:14;;;;;;;;;;;;;;;;15599:21;;15506:124;;;:::o;21279:391::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21416:7;21388:24;21404:7;21388:15;:24::i;:::-;:35;;21380:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21481:31;21504:7;21481:9;:18;21491:7;21481:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;21460:9;:18;21470:7;21460:18;;;;;;;;;;;;;;;:52;;;;21523:8;:17;21532:7;21523:17;;;;;;;;;;;;;;;21560:35;;;;;;;;21575:10;21569:3;:16;21560:35;;;;21587:7;21560:35;;;21523:83;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;21523:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21627:7;21622:40;;;21636:7;21651:10;21645:3;:16;21622:40;;;;;;;;;;;;;;;;;;;;;;;;21279:391;;;:::o;13689:123::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13769:4;13750:7;:16;13758:7;13750:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13789:15;13796:7;13789:15;;;;;;;;;;;;;;;;;;;;;;13689:123;:::o;11212:20::-;;;;;;;;;;;;;:::o;23113:516::-;23219:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23259:1;23244:17;;:3;:17;;;;23236:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23308:22;23324:5;;;;;;;;;;;23308:15;:22::i;:::-;23298:6;:32;;23290:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23385:28;23406:6;23385:9;:16;23395:5;;;;;;;;;;;23385:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;23366:9;:16;23376:5;;;;;;;;;;;23366:16;;;;;;;;;;;;;;;:47;;;;23424:8;:13;23433:3;23424:13;;;;;;;;;;;;;;;23457:34;;;;;;;;23472:10;23466:3;:16;23457:34;;;;23484:6;23457:34;;;23424:78;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;23424:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23534:3;23518:28;;23527:5;;;;;;;;;;;23518:28;;;23539:6;23518:28;;;;;;;;;;;;;;;;;;23567:3;23562:35;;;23572:6;23586:10;23580:3;:16;23562:35;;;;;;;;;;;;;;;;;;;;;;;;23617:4;23610:11;;23113:516;;;;;:::o;16760:365::-;16873:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16916:1;16899:14;:18;:51;;;;;16947:3;16921:4;:23;16926:17;16921:23;;;;;;;;;;;;;;;;:29;16899:51;16891:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17084:6;17067:14;:23;17040:4;:23;17045:17;17040:23;;;;;;;;;;;;;;;;:51;17014:4;:23;17019:17;17014:23;;;;;;;;;;;;;;;:77;;;;17111:4;17104:11;;16760:365;;;;:::o;10740:37::-;;;;;;;;;;;;;;;;;;;:::o;14655:106::-;14713:4;14742:11;;;;;;;;;;;14735:18;;14655:106;:::o;18996:258::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19080:10;19091:6;17641:4;:14;17646:8;17641:14;;;;;;;;;;;;;;;;17635:3;:20;17632:246;;;17727:15;17701:13;:23;17715:8;17701:23;;;;;;;;;;;;;;;;17679:9;:19;17689:8;17679:19;;;;;;;;;;;;;;;;:45;:63;17676:67;17668:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17632:246;;;17832:1;17827;:6;17819:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17632:246;19133:21;19149:4;19133:15;:21::i;:::-;19123:6;:31;;19115:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19193:19;19199:4;19205:6;19193:5;:19::i;:::-;19233:4;19228:18;;;19239:6;19228:18;;;;;;;;;;;;;;;;;;11498:1;;18996:258;;:::o;10910:31::-;;;;;;;;;;;;;:::o;7136:216::-;7221:4;7238:84;7247:10;7259:7;7268:53;7305:15;7268:11;:23;7280:10;7268:23;;;;;;;;;;;;;;;:32;7292:7;7268:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;7238:8;:84::i;:::-;7340:4;7333:11;;7136:216;;;;:::o;17906:311::-;18119:4;17299:5;17284:20;;:11;;;;;;;;;;;:20;;;17276:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18042:10;18053:6;17641:4;:14;17646:8;17641:14;;;;;;;;;;;;;;;;17635:3;:20;17632:246;;;17727:15;17701:13;:23;17715:8;17701:23;;;;;;;;;;;;;;;;17679:9;:19;17689:8;17679:19;;;;;;;;;;;;;;;;:45;:63;17676:67;17668:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17632:246;;;17832:1;17827;:6;17819:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17632:246;13612:7;:19;13620:10;13612:19;;;;;;;;;;;;;;;;;;;;;;;;;13611:20;13603:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12787:6;;;;;;;;;;;12786:7;12778:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18141:23;18153:10;18141:11;:23::i;:::-;18182:27;18197:3;18202:6;18182:14;:27::i;:::-;18175:34;;17364:1;;17906:311;;;;:::o;22202:390::-;22301:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22349:5;22326:13;:19;22340:4;22326:19;;;;;;;;;;;;;;;;:28;;22325:52;;;;;22366:4;:10;22371:4;22366:10;;;;;;;;;;;;;;;;22360:3;:16;22325:52;22317:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22446:1;22430:18;;:4;:18;;;;:38;;;;;22466:1;22452:16;;:2;:16;;;;22430:38;22422:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22543:5;22521:13;:19;22535:4;22521:19;;;;;;;;;;;;;;;;:27;22499:13;:19;22513:4;22499:19;;;;;;;;;;;;;;;:49;;;;22559:24;22569:4;22574:2;22577:5;22559:9;:24::i;:::-;22202:390;;;;;:::o;15797:230::-;15864:4;15893;:17;15898:11;15893:17;;;;;;;;;;;;;;;;15887:3;:23;15883:134;;;15936:4;15929:11;;;;15883:134;15997:5;15990:12;;15797:230;;;;:::o;23853:50::-;;;;;;;;;;;;;;;;;:::o;23637:82::-;23681:7;23708:3;23701:10;;23637:82;:::o;4862:134::-;4934:7;4961:11;:18;4973:5;4961:18;;;;;;;;;;;;;;;:27;4980:7;4961:27;;;;;;;;;;;;;;;;4954:34;;4862:134;;;;:::o;22600:505::-;22703:4;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22743:1;22728:17;;:3;:17;;;;22720:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22792:22;22808:5;;;;;;;;;;;22792:15;:22::i;:::-;22782:6;:32;;22774:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22869:28;22890:6;22869:9;:16;22879:5;;;;;;;;;;;22869:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;22850:9;:16;22860:5;;;;;;;;;;;22850:16;;;;;;;;;;;;;;;:47;;;;22908:8;:13;22917:3;22908:13;;;;;;;;;;;;;;;22941:30;;;;;;;;22950:12;22941:30;;;;22964:6;22941:30;;;22908:74;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;22908:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:3;22998:28;;23007:5;;;;;;;;;;;22998:28;;;23019:6;22998:28;;;;;;;;;;;;;;;;;;23047:3;23042:31;;;23052:6;23060:12;23042:31;;;;;;;;;;;;;;;;;;;;;;;;23093:4;23086:11;;22600:505;;;;;:::o;23968:468::-;17299:5;17284:20;;:11;;;;;;;;;;;:20;;;17276:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24120:1;24100:9;:16;:21;;24092:30;;;;;;24157:6;:13;24137:9;:16;:33;24129:42;;;;;;24185:9;24197:1;24185:13;;24180:251;24204:9;:16;24200:1;:20;24180:251;;;24236:16;24255:9;24265:1;24255:12;;;;;;;;;;;;;;24236:31;;24276:14;24293:6;24300:1;24293:9;;;;;;;;;;;;;;24276:26;;24313;24322:8;24332:6;24313:8;:26::i;:::-;;24376:6;24348:14;:24;24363:8;24348:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;24398:25;24406:8;24416:6;24398:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;24180:251;;24222:3;;;;;;;24180:251;;;;23968:468;;:::o;20574:116::-;20631:7;20658:8;:17;20667:7;20658:17;;;;;;;;;;;;;;;:24;;;;20651:31;;20574:116;;;:::o;20889:380::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21023:7;20995:24;21011:7;20995:15;:24::i;:::-;:35;;20987:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21088:31;21111:7;21088:9;:18;21098:7;21088:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;21067:9;:18;21077:7;21067:18;;;;;;;;;;;;;;;:52;;;;21130:8;:17;21139:7;21130:17;;;;;;;;;;;;;;;21167:31;;;;;;;;21176:12;21167:31;;;;21190:7;21167:31;;;21130:79;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;21130:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21230:7;21225:36;;;21239:7;21248:12;21225:36;;;;;;;;;;;;;;;;;;;;;;;;20889:380;;;:::o;13956:104::-;14012:4;14036:7;:16;14044:7;14036:16;;;;;;;;;;;;;;;;;;;;;;;;;14029:23;;13956:104;;;:::o;12075:111::-;11468:5;;;;;;;;;;;11454:19;;:10;:19;;;11446:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12149:29;12168:9;12149:18;:29::i;:::-;12075:111;:::o;9938:335::-;10048:1;10031:19;;:5;:19;;;;10023:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10129:1;10110:21;;:7;:21;;;;10102:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10213:5;10183:11;:18;10195:5;10183:18;;;;;;;;;;;;;;;:27;10202:7;10183:27;;;;;;;;;;;;;;;:35;;;;10250:7;10234:31;;10243:5;10234:31;;;10259:5;10234:31;;;;;;;;;;;;;;;;;;9938:335;;;:::o;19901:667::-;19965:9;19977:1;19965:13;;19961:600;19984:8;:17;19993:7;19984:17;;;;;;;;;;;;;;;:24;;;;19980:1;:28;19961:600;;;20072:3;20036:8;:17;20045:7;20036:17;;;;;;;;;;;;;;;20054:1;20036:20;;;;;;;;;;;;;;;;;;:32;;;:39;20032:518;;20117:52;20140:8;:17;20149:7;20140:17;;;;;;;;;;;;;;;20158:1;20140:20;;;;;;;;;;;;;;;;;;:28;;;20117:9;:18;20127:7;20117:18;;;;;;;;;;;;;;;;:22;;:52;;;;:::i;:::-;20096:9;:18;20106:7;20096:18;;;;;;;;;;;;;;;:73;;;;20200:7;20193:45;;;20209:8;:17;20218:7;20209:17;;;;;;;;;;;;;;;20227:1;20209:20;;;;;;;;;;;;;;;;;;:28;;;20193:45;;;;;;;;;;;;;;;;;;20288:1;20257:8;:17;20266:7;20257:17;;;;;;;;;;;;;;;20275:1;20257:20;;;;;;;;;;;;;;;;;;:28;;:32;;;;20346:1;20319:8;:17;20328:7;20319:17;;;;;;;;;;;;;;;:24;;;;:28;20314:1;:33;20310:178;;20395:8;:17;20404:7;20395:17;;;;;;;;;;;;;;;20440:1;20413:8;:17;20422:7;20413:17;;;;;;;;;;;;;;;:24;;;;:28;20395:47;;;;;;;;;;;;;;;;;;20372:8;:17;20381:7;20372:17;;;;;;;;;;;;;;;20390:1;20372:20;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;20465:3;;;;;;;;20310:178;20506:8;:17;20515:7;20506:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:::i;:::-;;20032:518;20011:3;;;;;;;19961:600;;;;19901:667;:::o;5762:256::-;5851:4;5868:36;5878:6;5886:9;5897:6;5868:9;:36::i;:::-;5915:73;5924:6;5932:10;5944:43;5980:6;5944:11;:19;5956:6;5944:19;;;;;;;;;;;;;;;:31;5964:10;5944:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;5915:8;:73::i;:::-;6006:4;5999:11;;5762:256;;;;;:::o;1379:181::-;1437:7;1457:9;1473:1;1469;:5;1457:17;;1498:1;1493;:6;;1485:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:1;1544:8;;;1379:181;;;;:::o;14835:247::-;14935:4;14995:6;14981:11;:20;;;14974:28;;:3;:28;14951:4;:20;14956:14;14951:20;;;;;;;;;;;;;;;:51;;;;15045:6;15013:13;:29;15027:14;15013:29;;;;;;;;;;;;;;;:38;;;;15069:4;15062:11;;14835:247;;;;;:::o;7842:429::-;7958:1;7940:20;;:6;:20;;;;7932:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8042:1;8021:23;;:9;:23;;;;8013:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8117:29;8139:6;8117:9;:17;8127:6;8117:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;8097:9;:17;8107:6;8097:17;;;;;;;;;;;;;;;:49;;;;8180:32;8205:6;8180:9;:20;8190:9;8180:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8157:9;:20;8167:9;8157:20;;;;;;;;;;;;;;;:55;;;;8245:9;8228:35;;8237:6;8228:35;;;8256:6;8228:35;;;;;;;;;;;;;;;;;;7842:429;;;:::o;8552:308::-;8647:1;8628:21;;:7;:21;;;;8620:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8713:24;8730:6;8713:12;;:16;;:24;;;;:::i;:::-;8698:12;:39;;;;8769:30;8792:6;8769:9;:18;8779:7;8769:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8748:9;:18;8758:7;8748:18;;;;;;;;;;;;;;;:51;;;;8836:7;8815:37;;8832:1;8815:37;;;8845:6;8815:37;;;;;;;;;;;;;;;;;;8552:308;;:::o;4320:110::-;4377:7;4404:9;:18;4414:7;4404:18;;;;;;;;;;;;;;;;4397:25;;4320:110;;;:::o;1568:184::-;1626:7;1659:1;1654;:6;;1646:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:9;1722:1;1718;:5;1706:17;;1743:1;1736:8;;;1568:184;;;;:::o;9192:306::-;9286:1;9267:21;;:7;:21;;;;9259:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9354:23;9371:5;9354:12;;:16;;:23;;;;:::i;:::-;9339:12;:38;;;;9409:29;9432:5;9409:9;:18;9419:7;9409:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;9388:9;:18;9398:7;9388:18;;;;;;;;;;;;;;;:50;;;;9480:1;9454:36;;9463:7;9454:36;;;9484:5;9454:36;;;;;;;;;;;;;;;;;;9192:306;;:::o;4643:156::-;4712:4;4729:40;4739:10;4751:9;4762:6;4729:9;:40::i;:::-;4787:4;4780:11;;4643:156;;;;:::o;12329:206::-;12425:1;12404:23;;:9;:23;;;;12396:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12489:9;12461:38;;12482:5;;;;;;;;;;;12461:38;;;;;;;;;;;;12518:9;12510:5;;:17;;;;;;;;;;;;;;;;;;12329:206;:::o;10657:13782::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://3ee67c87cc6f889254f03e681a4514e859817c91797e6c6826e472f9515cbce6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)