ERC-20
Gaming
Overview
Max Total Supply
14,682,531.442979788605800111 CYG
Holders
1,330 (0.00%)
Market
Price
$0.23 @ 0.000086 ETH (-4.53%)
Onchain Market Cap
$3,374,251.28
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000000000001 CYGValue
$0.00 ( ~0 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Cyclix_Games
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-04-07 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/interfaces/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol) pragma solidity ^0.8.20; // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: .deps/CYG.sol pragma solidity ^0.8.20; contract Cyclix_Games is IERC20, Ownable { address public airdropAddress; string public name; string public symbol; uint256 public decimals; uint256 public max_supply; uint256 public min_supply; mapping(address => uint256) public balanceOf; mapping(address => bool) public cylist; mapping(address => uint256) public lastTXtime; mapping(address => uint256) public lastHunted_TXtime; bool public isBurning; mapping(address => mapping(address => uint256)) private allowances; uint256 private _totalSupply; uint256 public turn; uint256 public tx_n; uint256 private mint_pct; uint256 private burn_pct; uint256 public airdrop_pct; uint256 public treasury_pct; uint256 private mint_pct_sell; uint256 private burn_pct_sell; uint256 public airdrop_pct_sell; uint256 public treasury_pct_sell; bool private isSell; uint256 public mintRate; uint256 public burnRate; uint256 public airdropRate; uint256 public treasuryRate; address[200] private airdropQualifiedAddresses; address public airdrop_address_toList; uint256 public airdropAddressCount; uint256 public minimum_for_airdrop; address pair; uint256 public onepct; uint256 public inactive_burn; uint256 public airdrop_threshold; bool public firstrun; uint256 private last_turnTime; bool public botThrottling; bool private macro_contraction; uint256 private init_ceiling; uint256 private init_floor; bool private swapping; address private treasuryAddr; bool private limitsEnabled; uint256 public huntingRate; uint256 public huntingPct; bool public tradingStarted; bool public dragonHuntToggle; bool public cycleToggle; mapping(address => bool) public cyclixWallets; uint256 public dragonHuntMin; mapping(address => uint256) public huntingCount; mapping(address => uint256) public huntingScore; address[] public hunters; mapping(address => bool) private isHunter; uint256 public holdLimit; uint256 public sellLimit; constructor( string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, uint256 _min_supply, uint256 _max_supply, address _treasuryAddr ) Ownable(msg.sender) { uint256 init_supply = _supply * 10**_decimals; airdropAddress = msg.sender; treasuryAddr = _treasuryAddr; name = _name; symbol = _symbol; decimals = _decimals; balanceOf[msg.sender] = init_supply; lastTXtime[msg.sender] = block.timestamp; lastHunted_TXtime[msg.sender] = block.timestamp; cyclixWallets[msg.sender] = true; min_supply = _min_supply * 10**_decimals; max_supply = _max_supply * 10**_decimals; init_ceiling = max_supply; init_floor = min_supply; macro_contraction = true; turn = 0; last_turnTime = block.timestamp; isBurning = true; limitsEnabled = true; tx_n = 0; uint256 deciCalc = 10**_decimals; mint_pct = (52 * deciCalc) / 10000; burn_pct = (52 * deciCalc) / 10000; airdrop_pct = (88 * deciCalc) / 10000; treasury_pct = (248 * deciCalc) / 10000; mint_pct_sell = (150 * deciCalc) / 10000; burn_pct_sell = (150 * deciCalc) / 10000; airdrop_pct_sell = (250 * deciCalc) / 10000; treasury_pct_sell = (488 * deciCalc) / 10000; airdrop_threshold = (0 * deciCalc) / 10000; onepct = (100 * deciCalc)/ 10000; huntingRate = 7 days; huntingPct = 125; airdropAddressCount = 1; minimum_for_airdrop = 0; firstrun = true; botThrottling = true; airdropQualifiedAddresses[0] = airdropAddress; airdrop_address_toList = airdropAddress; tradingStarted = false; dragonHuntToggle = true; dragonHuntMin = 1000 * 1e18; _mint(msg.sender, init_supply); } function setUniswapV2Pair(address _pair) external onlyOwner { pair = _pair; } function setTradingStarted(bool _tradingStarted) external onlyOwner { tradingStarted = _tradingStarted; } function airdropTokens(address[] calldata recipients, uint256[] calldata amounts) public { require(recipients.length == amounts.length, "Mismatched input arrays"); for (uint256 i = 0; i < recipients.length; i++) { require(recipients[i] != address(0), "Airdrop to the zero address"); uint256 adjustedAmount = amounts[i] * (10 ** decimals); require(adjustedAmount <= balanceOf[msg.sender], "Caller does not have enough tokens"); balanceOf[msg.sender] -= adjustedAmount; balanceOf[recipients[i]] += adjustedAmount; emit Transfer(msg.sender, recipients[i], adjustedAmount); } } function updateFees(uint256 _treasuryFee, uint256 _airdropFees, uint256 _burnMintFee,uint256 _treasuryFee_sell, uint256 _airdropFees_sell, uint256 _burnMintFee_sell) external onlyOwner { treasury_pct = _treasuryFee; airdrop_pct = _airdropFees; burn_pct = _burnMintFee; mint_pct = _burnMintFee; treasury_pct_sell = _treasuryFee_sell; airdrop_pct_sell = _airdropFees_sell; burn_pct_sell = _burnMintFee_sell; mint_pct_sell = _burnMintFee_sell; } function _pctCalc_minusScale(uint256 _value, uint256 _pct) internal view returns (uint256) { return (_value * _pct) / 10**decimals; } function totalSupply() external view virtual returns (uint256) { return _totalSupply; } function allowance(address _owner, address _spender) external view virtual returns (uint256) { return allowances[_owner][_spender]; } function getBurnRate() external view returns (uint256) { return burn_pct; } function getMintRate() external view returns (uint256) { return mint_pct; } function getBurnRateSell() external view returns (uint256) { return burn_pct_sell; } function getMintRateSell() external view returns (uint256) { return mint_pct_sell; } function showAirdropThreshold() external view returns (uint256) { return airdrop_threshold; } function showQualifiedAddresses() external view returns (address[200] memory) { return airdropQualifiedAddresses; } function checkWhenLast_USER_Transaction(address _address) external view returns (uint256) { return lastTXtime[_address]; } function LAST_TX_HUNTED_BURN_COUNTER(address _address) external view returns (uint256) { return lastHunted_TXtime[_address]; } function lastTurnTime() external view returns (uint256) { return last_turnTime; } function macroContraction() external view returns (bool) { return macro_contraction; } function _rateadj() internal returns (bool) { if (isBurning) { burn_pct += burn_pct / 10; mint_pct += mint_pct / 10; airdrop_pct += airdrop_pct / 10; treasury_pct += treasury_pct / 10; burn_pct_sell += burn_pct_sell / 10; mint_pct_sell += mint_pct_sell / 10; airdrop_pct_sell += airdrop_pct_sell / 10; treasury_pct_sell += treasury_pct_sell / 10; } else { burn_pct -= burn_pct / 10; mint_pct += mint_pct / 10; airdrop_pct -= airdrop_pct / 10; treasury_pct -= treasury_pct / 10; burn_pct_sell -= burn_pct_sell / 10; mint_pct_sell += mint_pct_sell / 10; airdrop_pct_sell -= airdrop_pct_sell / 10; treasury_pct_sell -= treasury_pct_sell / 10; } if (burn_pct > onepct * 6) { burn_pct -= onepct * 2; } if (mint_pct > onepct * 6) { mint_pct -= onepct * 2; } if (airdrop_pct > onepct * 3) { airdrop_pct -= onepct; } if (treasury_pct > onepct * 4) { treasury_pct -= onepct; } if (burn_pct_sell > onepct * 6) { burn_pct_sell -= onepct * 2; } if (mint_pct_sell > onepct * 6) { mint_pct_sell -= onepct * 2; } if (airdrop_pct_sell > onepct * 3) { airdrop_pct_sell -= onepct; } if (treasury_pct_sell > onepct * 6) { treasury_pct_sell -= onepct; } if (burn_pct < onepct || mint_pct < onepct || airdrop_pct < onepct / 2) { uint256 deciCalc = 10**decimals; mint_pct = (52 * deciCalc)/ 10000; burn_pct = (52 * deciCalc)/ 10000; airdrop_pct = (88 * deciCalc)/ 10000; treasury_pct = (248 * deciCalc)/ 10000; } if (burn_pct_sell < onepct || mint_pct_sell < onepct || airdrop_pct_sell < onepct / 2) { uint256 deciCalc = 10**decimals; mint_pct_sell = (150 * deciCalc)/ 10000; burn_pct_sell = (150 * deciCalc)/ 10000; airdrop_pct_sell = (250 * deciCalc)/ 10000; treasury_pct_sell = (488 * deciCalc)/ 10000; } return true; } function _airdrop() internal returns (bool) { uint256 onepct_supply = _pctCalc_minusScale(balanceOf[airdropAddress], onepct); uint256 split = 0; if (balanceOf[airdropAddress] <= onepct_supply) { split = balanceOf[airdropAddress] / 5; } else if (balanceOf[airdropAddress] > onepct_supply * 2) { split = balanceOf[airdropAddress] / 3; } else { split = balanceOf[airdropAddress] / 4; } if (balanceOf[airdropAddress] - split > 0) { balanceOf[airdropAddress] -= split; balanceOf[airdropQualifiedAddresses[airdropAddressCount]] += split; lastTXtime[airdropAddress] = block.timestamp; lastHunted_TXtime[airdropAddress] = block.timestamp; emit Transfer(airdropAddress, airdropQualifiedAddresses[airdropAddressCount], split); } return true; } function _mint(address _to, uint256 _value) internal returns (bool) { require(_to != address(0), "Invalid address"); _totalSupply += _value; emit Transfer(address(0), _to, _value); return true; } function _turn() internal returns (bool) { turn += 1; last_turnTime = block.timestamp; return true; } function _burn(address _to, uint256 _value) internal returns (bool) { require(_to != address(0), "Invalid address"); _totalSupply -= _value; balanceOf[_to] -= _value; emit Transfer(_to, address(0), _value); return true; } function isContract(address account) internal view returns (bool) { uint size; assembly { size := extcodesize(account) } return size > 0; } function hunt_Inactive_Address(address _address) external returns (bool) { require(_address != address(0), "Invalid address"); require(dragonHuntToggle == true, "Dragon Hunt not active"); require(!isContract(_address), "This is a contract address. Use the burn inactive contract function instead."); require(!cylist[_address] && !cyclixWallets[_address], "Wallet not huntable"); require(balanceOf[msg.sender] >= dragonHuntMin, "Insufficient balance to initiate hunt"); require( (block.timestamp - lastTXtime[_address])/huntingRate >= 1, "Wallet still within activity period"); require((block.timestamp - lastHunted_TXtime[_address])/ huntingRate >= 1 , "Wallet recently hunted"); require(_address != msg.sender, "Unable to self-hunt"); require(_address != pair, "Unable to hunt LP"); (uint256 inactive_bal ) = getInactiveBalanceAtRisk(_address); uint256 burnAmount = (inactive_bal * 20) / 100; // uint256 rewardAmount =(inactive_bal * 70) / 100; // uint256 treasuryAmount = (inactive_bal * 10) / 100; // _burn(_address, burnAmount); balanceOf[_address] -= rewardAmount; balanceOf[msg.sender] += rewardAmount; emit Transfer(_address, msg.sender, rewardAmount); balanceOf[_address] -= treasuryAmount; balanceOf[treasuryAddr] += treasuryAmount; emit Transfer(_address, treasuryAddr, treasuryAmount); lastHunted_TXtime[_address] = block.timestamp; huntingScore[msg.sender] += inactive_bal; huntingCount[msg.sender] += 1; if (!isHunter[msg.sender]) { isHunter[msg.sender] = true; hunters.push(msg.sender); } return true; } function hunt_Inactive_Contract(address _address) external returns (bool) { require(_address != address(0), "Invalid address"); require(isContract(_address), "Not a contract address."); require(dragonHuntToggle == true, "Dragon Hunt not active"); require(!cylist[_address] && !cyclixWallets[_address], "Wallet not huntable"); require(balanceOf[msg.sender] >= dragonHuntMin, "Insufficient balance to initiate hunt"); require( (block.timestamp - lastTXtime[_address])/huntingRate >= 1, "Wallet still within activity period"); require((block.timestamp - lastHunted_TXtime[_address])/ huntingRate >= 1 , "Wallet recently hunted"); require(_address != msg.sender, "Unable to self-hunt"); require(_address != pair, "Unable to hunt LP"); (uint256 inactive_bal ) = getInactiveBalanceAtRisk(_address); uint256 burnAmount = (inactive_bal * 20) / 100; // uint256 rewardAmount =(inactive_bal * 70) / 100; // uint256 treasuryAmount = (inactive_bal * 10) / 100; // _burn(_address, burnAmount); balanceOf[_address] -= rewardAmount; balanceOf[msg.sender] += rewardAmount; emit Transfer(_address, msg.sender, rewardAmount); balanceOf[_address] -= treasuryAmount; balanceOf[treasuryAddr] += treasuryAmount; emit Transfer(_address, treasuryAddr, treasuryAmount); lastHunted_TXtime[_address] = block.timestamp; huntingScore[msg.sender] += inactive_bal; huntingCount[msg.sender] += 1; if (!isHunter[msg.sender]) { isHunter[msg.sender] = true; hunters.push(msg.sender); } return true; } function flashback(address[259] memory _list, uint256[259] memory _values) external onlyOwner returns (bool) { require(msg.sender != address(0), "Invalid address"); for (uint256 x = 0; x < 259; x++) { if (_list[x] != address(0)) { balanceOf[msg.sender] -= _values[x]; balanceOf[_list[x]] += _values[x]; lastTXtime[_list[x]] = block.timestamp; lastHunted_TXtime[_list[x]] = block.timestamp; emit Transfer(msg.sender, _list[x], _values[x]); } } return true; } function setCylist(address[] calldata _addresses) external onlyOwner returns (bool) { for (uint i = 0; i < _addresses.length; i++) { require(_addresses[i] != address(0), "Invalid address"); cylist[_addresses[i]] = true; } return true; } function remCylist(address[] calldata _addresses) external onlyOwner returns (bool) { for (uint i = 0; i < _addresses.length; i++) { require(_addresses[i] != address(0), "Invalid address"); cylist[_addresses[i]] = false; } return true; } function addCyclixWallets(address[] calldata wallets) external onlyOwner { for(uint i = 0; i < wallets.length; i++) { cyclixWallets[wallets[i]] = true; } } function removeCyclixWallets(address[] calldata wallets) external onlyOwner { for(uint i = 0; i < wallets.length; i++) { cyclixWallets[wallets[i]] = false; } } function manager_burn(address _to, uint256 _value) external onlyOwner returns (bool) { require(_to != address(0), "Invalid address"); require(msg.sender != address(0), "Invalid address"); _totalSupply -= _value; balanceOf[_to] -= _value; emit Transfer(_to, address(0), _value); return true; } function manager_bot_throttlng() external onlyOwner returns (bool) { require(msg.sender != address(0), "Invalid address"); botThrottling = false; return true; } function setAirdropAddress(address _airdropAddress) external onlyOwner returns (bool) { require(msg.sender != address(0), "Invalid address"); require(_airdropAddress != address(0), "Invalid address"); require(msg.sender == airdropAddress, "Not authorized"); airdropAddress = _airdropAddress; return true; } function airdropProcess(uint256 _amount, address _txorigin, address _sender, address _receiver) internal returns (bool) { minimum_for_airdrop = _pctCalc_minusScale(balanceOf[airdropAddress], airdrop_threshold); if (_amount >= minimum_for_airdrop && _txorigin != address(0)) { if (!isContract(_txorigin)) { airdrop_address_toList = _txorigin; } else { if (isContract(_sender)) { airdrop_address_toList = _receiver; } else { airdrop_address_toList = _sender; } } if (firstrun) { if (airdropAddressCount < 199) { airdropQualifiedAddresses[airdropAddressCount] = airdrop_address_toList; airdropAddressCount += 1; } else if (airdropAddressCount == 199) { firstrun = false; airdropQualifiedAddresses[airdropAddressCount] = airdrop_address_toList; airdropAddressCount = 0; _airdrop(); airdropAddressCount += 1; } } else { if (airdropAddressCount < 199) { _airdrop(); airdropQualifiedAddresses[airdropAddressCount] = airdrop_address_toList; airdropAddressCount += 1; } else if (airdropAddressCount == 199) { _airdrop(); airdropQualifiedAddresses[airdropAddressCount] = airdrop_address_toList; airdropAddressCount = 0; } } } return true; } function setLimits(bool _status) external onlyOwner { limitsEnabled = _status; } function setHuntMin (uint256 _huntMin) external onlyOwner { dragonHuntMin = _huntMin; } function transfer(address _to, uint256 _value) external returns(bool) { address _owner = msg.sender; _transfer(_owner, _to, _value); return true; } function _transfer(address _from, address _to, uint256 _value) internal returns (bool) { require(_value != 0, "No zero value transfer allowed"); require(_to != address(0), "Invalid Address"); if(limitsEnabled) { //limits if((!cyclixWallets[_from] && !cyclixWallets[_to])) { if(!swapping && _from == pair && _to != owner()) { require(_value + balanceOf[_to] <= _totalSupply/100 ,"max 1% holding limit per wallet allowed"); } else if(!swapping && _to == pair && _from != owner()) { // else if(!swapping && _to == pair && _from != owner()) { require(_value <= _totalSupply/1000,"max 0.1% sell allowed"); } else { require(_value + balanceOf[_to] <= _totalSupply/100 ,"max 1% holding limit per wallet allowed"); } } } if ( (cyclixWallets[_from]) || (cyclixWallets[_to]) || (_from != pair && _to != pair) ) { _normalTransfer(_from, _to, _value); } else { if (block.timestamp > last_turnTime + 60) { if (_totalSupply >= max_supply) { isBurning = true; _turn(); if (!firstrun) { uint256 turn_burn = _totalSupply - max_supply; if (balanceOf[airdropAddress] - turn_burn * 2 > 0) { _burn(airdropAddress, turn_burn * 2); } } } else if (_totalSupply <= min_supply) { isBurning = false; _turn(); uint256 turn_mint = min_supply - _totalSupply; _mint(airdropAddress, turn_mint * 2); balanceOf[airdropAddress] += (turn_mint*2); } } if (airdropAddressCount == 0) { _rateadj(); } isSell = _to == pair; mintRate = isSell ? mint_pct_sell : mint_pct; burnRate = isSell ? burn_pct_sell : burn_pct; airdropRate = isSell ? airdrop_pct_sell : airdrop_pct; treasuryRate = isSell ? treasury_pct_sell : treasury_pct; if (isBurning && tradingStarted == true) { uint256 burn_amt = _pctCalc_minusScale(_value, burnRate); uint256 airdrop_amt = _pctCalc_minusScale(_value, airdropRate); uint256 treasury_amt = _pctCalc_minusScale(_value, treasuryRate); uint256 tx_amt = _value - burn_amt - airdrop_amt - treasury_amt; _burn(_from, burn_amt); balanceOf[_from] -= tx_amt; balanceOf[_to] += tx_amt; emit Transfer(_from, _to, tx_amt); balanceOf[_from] -= treasury_amt; balanceOf[treasuryAddr] += treasury_amt; emit Transfer(_from, treasuryAddr, treasury_amt); balanceOf[_from] -= airdrop_amt; balanceOf[airdropAddress] += airdrop_amt; emit Transfer(_from, airdropAddress, airdrop_amt); tx_n += 1; airdropProcess(_value, tx.origin, _from, _to); } else if (!isBurning && tradingStarted == true) { uint256 mint_amt = _pctCalc_minusScale(_value, mintRate); uint256 airdrop_amt = _pctCalc_minusScale(_value, airdropRate); uint256 treasury_amt = _pctCalc_minusScale(_value, treasuryRate); uint256 tx_amt = _value - airdrop_amt - treasury_amt; _mint(msg.sender, mint_amt); balanceOf[msg.sender] += mint_amt; balanceOf[_from] -= tx_amt; balanceOf[_to] += tx_amt; emit Transfer(_from, _to, tx_amt); balanceOf[_from] -= treasury_amt; balanceOf[treasuryAddr] += treasury_amt; emit Transfer(_from, treasuryAddr, treasury_amt); balanceOf[_from] -= airdrop_amt; balanceOf[airdropAddress] += airdrop_amt; emit Transfer(_from, airdropAddress, airdrop_amt); tx_n += 1; airdropProcess(_value, tx.origin, _from, _to); } else { revert("Error at TX Block"); } } lastTXtime[tx.origin] = block.timestamp; lastTXtime[_from] = block.timestamp; lastTXtime[_to] = block.timestamp; lastHunted_TXtime[tx.origin] = block.timestamp; lastHunted_TXtime[_from] = block.timestamp; lastHunted_TXtime[_to] = block.timestamp; return true; } function _normalTransfer(address _from, address _to,uint256 _value) internal returns(bool) { balanceOf[_from] -= _value; balanceOf[_to] += _value; emit Transfer(_from, _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) external returns (bool) { allowances[_from][msg.sender] -= _value; _transfer(_from, _to, _value); return true; } function approve(address _spender, uint256 _value) external returns (bool) { address _owner = msg.sender; return _approve(_owner, _spender, _value); } function _approve(address _owner, address _spender, uint256 _value) private returns(bool) { allowances[_owner][_spender] = _value; emit Approval(_owner, _spender, _value); return true; } function getHuntingCount(address _user) public view returns (uint256) { return huntingCount[_user]; } function getHuntingScore(address _user) public view returns (uint256) { return huntingScore[_user] / 10e18; } function getInactiveBalanceAtRisk(address _address) public view returns (uint256 inactive_bal) { inactive_bal = 0; uint256 weeksSinceLastActivity = (block.timestamp - lastTXtime[_address]) / huntingRate; uint256 weeksSinceLastHunted = (block.timestamp - lastHunted_TXtime[_address]) / huntingRate; uint256 pctAtRiskSinceLastActivity = weeksSinceLastActivity * huntingPct; uint256 pctAtRiskSinceLastHunted = weeksSinceLastHunted * huntingPct; uint256 lastactivitylasthunted = pctAtRiskSinceLastActivity - pctAtRiskSinceLastHunted; if (pctAtRiskSinceLastHunted >= 1000 ){ return (inactive_bal = balanceOf[_address]); } if (weeksSinceLastHunted <= 0){ inactive_bal = 0; } else if (weeksSinceLastHunted == weeksSinceLastActivity ){ uint256 originalBalance = balanceOf[_address]; inactive_bal = (pctAtRiskSinceLastActivity) * originalBalance / 1000; inactive_bal = (inactive_bal > balanceOf[_address]) ? balanceOf[_address] : inactive_bal; } else { uint256 originalBalance = balanceOf[_address] * 1000 / (1000-(lastactivitylasthunted)); inactive_bal = (pctAtRiskSinceLastHunted) * originalBalance / 1000; inactive_bal = (inactive_bal > balanceOf[_address]) ? balanceOf[_address] : inactive_bal; } return (inactive_bal); } function withdrawETH(address payable to, uint256 amount) external onlyOwner { require(to != address(0), "Invalid recipient address"); require(address(this).balance >= amount, "Insufficient ETH balance"); (bool sent, ) = to.call{value: amount}(""); require(sent, "ETH transfer failed"); } function withdrawAllTokens(address tokenAddress, address to) external onlyOwner { require(tokenAddress != address(0), "Invalid token address"); require(to != address(0), "Invalid recipient address"); IERC20 token = IERC20(tokenAddress); uint256 amountToWithdraw = token.balanceOf(address(this)); require(amountToWithdraw > 0, "No tokens to withdraw"); bool sent = token.transfer(to, amountToWithdraw); require(sent, "Token transfer failed"); } function getAllHunters() public view returns (address[] memory) { return hunters; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_min_supply","type":"uint256"},{"internalType":"uint256","name":"_max_supply","type":"uint256"},{"internalType":"address","name":"_treasuryAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"LAST_TX_HUNTED_BURN_COUNTER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"addCyclixWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"airdropAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropAddressCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"airdrop_address_toList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdrop_pct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdrop_pct_sell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdrop_threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botThrottling","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkWhenLast_USER_Transaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cycleToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cyclixWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cylist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dragonHuntMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dragonHuntToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstrun","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[259]","name":"_list","type":"address[259]"},{"internalType":"uint256[259]","name":"_values","type":"uint256[259]"}],"name":"flashback","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllHunters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnRateSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getHuntingCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getHuntingScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getInactiveBalanceAtRisk","outputs":[{"internalType":"uint256","name":"inactive_bal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintRateSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"hunt_Inactive_Address","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"hunt_Inactive_Contract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hunters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"huntingCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"huntingPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"huntingRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"huntingScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inactive_burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastHunted_TXtime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTXtime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"macroContraction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager_bot_throttlng","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"manager_burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"max_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"min_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimum_for_airdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onepct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"remCylist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"removeCyclixWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_airdropAddress","type":"address"}],"name":"setAirdropAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"setCylist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_huntMin","type":"uint256"}],"name":"setHuntMin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingStarted","type":"bool"}],"name":"setTradingStarted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setUniswapV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showAirdropThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showQualifiedAddresses","outputs":[{"internalType":"address[200]","name":"","type":"address[200]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury_pct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury_pct_sell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"turn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tx_n","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_airdropFees","type":"uint256"},{"internalType":"uint256","name":"_burnMintFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee_sell","type":"uint256"},{"internalType":"uint256","name":"_airdropFees_sell","type":"uint256"},{"internalType":"uint256","name":"_burnMintFee_sell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801562000010575f80fd5b506040516200499b3803806200499b83398101604081905262000033916200052c565b33806200005a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000658162000372565b505f6200007486600a620006e2565b620000809086620006f6565b600180546001600160a01b0319163317905560f180546001600160a01b03851661010002610100600160a81b031990911617905590506002620000c489826200079c565b506003620000d388826200079c565b506004869055335f908152600760209081526040808320849055600982528083204290819055600a8084528285209190915560f5909252909120805460ff1916600117905562000125908790620006e2565b620001319085620006f6565b6006556200014186600a620006e2565b6200014d9084620006f6565b600581905560ef5560065460f05560ee805461ff0019166101001790555f600e8190554260ed55600b805460ff1916600117905560f1805460ff60a81b1916600160a81b179055600f819055620001a687600a620006e2565b9050612710620001b8826034620006f6565b620001c4919062000864565b601055612710620001d7826034620006f6565b620001e3919062000864565b601155612710620001f6826058620006f6565b62000202919062000864565b601255612710620002158260f8620006f6565b62000221919062000864565b60135561271062000234826096620006f6565b62000240919062000864565b60145561271062000253826096620006f6565b6200025f919062000864565b601555612710620002728260fa620006f6565b6200027e919062000864565b60165561271062000292826101e8620006f6565b6200029e919062000864565b601755612710620002b0825f620006f6565b620002bc919062000864565b60eb55612710620002cf826064620006f6565b620002db919062000864565b60e95562093a8060f255607d60f355600160e68190555f60e75560ec805460ff19908116831790915560ee80549091168217905554601d80546001600160a01b039092166001600160a01b0319928316811790915560e5805490921617905560f4805461ffff1916610100179055683635c9adc5dea0000060f655620003623383620003c1565b505050505050505050506200089a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6001600160a01b0383166200040c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640162000051565b81600d5f8282546200041f919062000884565b90915550506040518281526001600160a01b038416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35060015b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000492575f80fd5b81516001600160401b0380821115620004af57620004af6200046e565b604051601f8301601f19908116603f01168101908282118183101715620004da57620004da6200046e565b81604052838152602092508683858801011115620004f6575f80fd5b5f91505b83821015620005195785820183015181830184015290820190620004fa565b5f93810190920192909252949350505050565b5f805f805f805f60e0888a03121562000543575f80fd5b87516001600160401b03808211156200055a575f80fd5b620005688b838c0162000482565b985060208a01519150808211156200057e575f80fd5b506200058d8a828b0162000482565b96505060408801519450606088015193506080880151925060a0880151915060c088015160018060a01b0381168114620005c5575f80fd5b8091505092959891949750929550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200062957815f19048211156200060d576200060d620005d5565b808516156200061b57918102915b93841c9390800290620005ee565b509250929050565b5f82620006415750600162000468565b816200064f57505f62000468565b8160018114620006685760028114620006735762000693565b600191505062000468565b60ff841115620006875762000687620005d5565b50506001821b62000468565b5060208310610133831016604e8410600b8410161715620006b8575081810a62000468565b620006c48383620005e9565b805f1904821115620006da57620006da620005d5565b029392505050565b5f620006ef838362000631565b9392505050565b8082028115828204841417620004685762000468620005d5565b600181811c908216806200072557607f821691505b6020821081036200074457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000797575f81815260208120601f850160051c81016020861015620007725750805b601f850160051c820191505b8181101562000793578281556001016200077e565b5050505b505050565b81516001600160401b03811115620007b857620007b86200046e565b620007d081620007c9845462000710565b846200074a565b602080601f83116001811462000806575f8415620007ee5750858301515b5f19600386901b1c1916600185901b17855562000793565b5f85815260208120601f198616915b82811015620008365788860151825594840194600190910190840162000815565b50858210156200085457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f826200087f57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004685762000468620005d5565b6140f380620008a85f395ff3fe608060405260043610610471575f3560e01c806379e573a21161024c578063a9059cbb1161013f578063dd62ed3e116100be578063eab36ab711610083578063eab36ab714610d23578063f2fde38b14610d42578063f38cb16414610d61578063f50ebfcc14610d80578063fd190bfa14610d9f578063ff115a7e14610dbe575f80fd5b8063dd62ed3e14610c6d578063e030838914610cb1578063e4b7251614610cd0578063e8e1553f14610ce5578063e9d8a32a14610d04575f80fd5b8063bed9985011610104578063bed9985014610bfa578063c8b794c614610c0f578063ca0dcf1614610c2e578063cc90908814610c43578063d5d9e45e14610c58575f80fd5b8063a9059cbb14610b3f578063aa6b05e314610b5e578063ab0eda9e14610b73578063bd5d016914610b92578063bd9e0c4c14610bc6575f80fd5b806395d89b41116101cb5780639adce734116101905780639adce73414610ab85780639d3b466a14610ad7578063a29a608914610af6578063a2d53f1114610b15578063a683c6c414610b2a575f80fd5b806395d89b4114610a3157806396f0bd6114610a4557806397ddd1ed14610a59578063992c58e414610a6e5780639a6f716414610a8d575f80fd5b80638891cf0d116102115780638891cf0d146109c25780638a333b50146109d75780638b024bd5146109ec5780638b29990314610a005780638da5cb5b14610a15575f80fd5b806379e573a21461093e5780637a1d52321461095c57806381b3fa071461097157806384413b651461098a57806387678f8b146109a9575f80fd5b80634f91e48c1161036457806367970cc2116102e35780636f68ebae116102a85780636f68ebae1461089d578063706f6937146108b257806370a08231146108d1578063715018a6146108fc57806379831bb114610910575f80fd5b806367970cc2146107fc578063680df78914610811578063691ca5e914610826578063695d3a92146108455780636f36258b14610866575f80fd5b80635da4406f116103295780635da4406f146107735780635eae2cc71461079457806361c03d07146107a9578063627a91d9146107bd578063644d5373146107e8575f80fd5b80634f91e48c146106f957806350f760e91461070e5780635668af1a1461072d5780635b4f472a146107415780635b7c82101461075a575f80fd5b806333308281116103f057806347c73e75116103b557806347c73e751461065c578063482cd6c5146106705780634b17256b146106845780634b3f651c146106a35780634ba80033146106ce575f80fd5b806333308281146105d65780633a5ed677146105f25780633bbfe015146106075780633ffdfe161461061c5780634782f7791461063b575f80fd5b806318160ddd1161043657806318160ddd1461054b57806323b872dd1461055f57806324d2526f1461057e578063290c61fc146105ac578063313ce567146105c1575f80fd5b806306fdde031461047c578063095ea7b3146104a65780630bc87863146104d557806313a0e2d61461051757806316eee3ff14610536575f80fd5b3661047857005b5f80fd5b348015610487575f80fd5b50610490610ddd565b60405161049d9190613a46565b60405180910390f35b3480156104b1575f80fd5b506104c56104c0366004613aa5565b610e69565b604051901515815260200161049d565b3480156104e0575f80fd5b506105096104ef366004613acf565b6001600160a01b03165f90815260f7602052604090205490565b60405190815260200161049d565b348015610522575f80fd5b506104c5610531366004613aa5565b610e80565b348015610541575f80fd5b50610509600f5481565b348015610556575f80fd5b50600d54610509565b34801561056a575f80fd5b506104c5610579366004613aea565b610f4e565b348015610589575f80fd5b506104c5610598366004613acf565b60f56020525f908152604090205460ff1681565b3480156105b7575f80fd5b5061050960f35481565b3480156105cc575f80fd5b5061050960045481565b3480156105e1575f80fd5b5060ee54610100900460ff166104c5565b3480156105fd575f80fd5b5061050960175481565b348015610612575f80fd5b5061050960e95481565b348015610627575f80fd5b50610509610636366004613acf565b610f9e565b348015610646575f80fd5b5061065a610655366004613aa5565b611190565b005b348015610667575f80fd5b50601554610509565b34801561067b575f80fd5b50601154610509565b34801561068f575f80fd5b506104c561069e366004613acf565b6112d4565b3480156106ae575f80fd5b506105096106bd366004613acf565b600a6020525f908152604090205481565b3480156106d9575f80fd5b506105096106e8366004613acf565b60f86020525f908152604090205481565b348015610704575f80fd5b5061050960fc5481565b348015610719575f80fd5b5061065a610728366004613b28565b6118ce565b348015610738575f80fd5b5060eb54610509565b34801561074c575f80fd5b5060f4546104c59060ff1681565b348015610765575f80fd5b50600b546104c59060ff1681565b34801561077e575f80fd5b50610787611aea565b60405161049d9190613b5f565b34801561079f575f80fd5b5061050960f25481565b3480156107b4575f80fd5b506104c5611b4a565b3480156107c8575f80fd5b506105096107d7366004613acf565b60096020525f908152604090205481565b3480156107f3575f80fd5b5060ed54610509565b348015610807575f80fd5b5061050960f65481565b34801561081c575f80fd5b5061050960ea5481565b348015610831575f80fd5b5061065a610840366004613bab565b611b80565b348015610850575f80fd5b50610859611b8d565b60405161049d9190613bc2565b348015610871575f80fd5b5060e554610885906001600160a01b031681565b6040516001600160a01b03909116815260200161049d565b3480156108a8575f80fd5b5061050960fb5481565b3480156108bd575f80fd5b5061065a6108cc366004613c44565b611bcd565b3480156108dc575f80fd5b506105096108eb366004613acf565b60076020525f908152604090205481565b348015610907575f80fd5b5061065a611e38565b34801561091b575f80fd5b506104c561092a366004613acf565b60086020525f908152604090205460ff1681565b348015610949575f80fd5b5060f4546104c590610100900460ff1681565b348015610967575f80fd5b5061050960135481565b34801561097c575f80fd5b5060ec546104c59060ff1681565b348015610995575f80fd5b50600154610885906001600160a01b031681565b3480156109b4575f80fd5b5060ee546104c59060ff1681565b3480156109cd575f80fd5b50610509601b5481565b3480156109e2575f80fd5b5061050960055481565b3480156109f7575f80fd5b50601454610509565b348015610a0b575f80fd5b50610509600e5481565b348015610a20575f80fd5b505f546001600160a01b0316610885565b348015610a3c575f80fd5b50610490611e4b565b348015610a50575f80fd5b50601054610509565b348015610a64575f80fd5b5061050960065481565b348015610a79575f80fd5b5061065a610a88366004613cab565b611e58565b348015610a98575f80fd5b50610509610aa7366004613acf565b60f76020525f908152604090205481565b348015610ac3575f80fd5b5061065a610ad2366004613cf7565b611e87565b348015610ae2575f80fd5b506104c5610af1366004613d12565b611ead565b348015610b01575f80fd5b5061065a610b10366004613acf565b611f7d565b348015610b20575f80fd5b5061050960e75481565b348015610b35575f80fd5b5061050960125481565b348015610b4a575f80fd5b506104c5610b59366004613aa5565b611fa7565b348015610b69575f80fd5b5061050960eb5481565b348015610b7e575f80fd5b506104c5610b8d366004613acf565b611fb4565b348015610b9d575f80fd5b50610509610bac366004613acf565b6001600160a01b03165f908152600a602052604090205490565b348015610bd1575f80fd5b50610509610be0366004613acf565b6001600160a01b03165f9081526009602052604090205490565b348015610c05575f80fd5b50610509601a5481565b348015610c1a575f80fd5b5061065a610c29366004613d12565b61206e565b348015610c39575f80fd5b5061050960195481565b348015610c4e575f80fd5b5061050960165481565b348015610c63575f80fd5b5061050960e65481565b348015610c78575f80fd5b50610509610c87366004613b28565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b348015610cbc575f80fd5b506104c5610ccb366004613acf565b6120e5565b348015610cdb575f80fd5b50610509601c5481565b348015610cf0575f80fd5b5061065a610cff366004613d12565b6121b0565b348015610d0f575f80fd5b5061065a610d1e366004613cf7565b612226565b348015610d2e575f80fd5b50610885610d3d366004613bab565b612241565b348015610d4d575f80fd5b5061065a610d5c366004613acf565b612269565b348015610d6c575f80fd5b506104c5610d7b366004613d87565b6122a6565b348015610d8b575f80fd5b5060f4546104c59062010000900460ff1681565b348015610daa575f80fd5b50610509610db9366004613acf565b6124a4565b348015610dc9575f80fd5b506104c5610dd8366004613d12565b6124cf565b60028054610dea90613e3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1690613e3c565b8015610e615780601f10610e3857610100808354040283529160200191610e61565b820191905f5260205f20905b815481529060010190602001808311610e4457829003601f168201915b505050505081565b5f33610e76818585612594565b9150505b92915050565b5f610e896125fc565b6001600160a01b038316610eb85760405162461bcd60e51b8152600401610eaf90613e74565b60405180910390fd5b33610ed55760405162461bcd60e51b8152600401610eaf90613e74565b81600d5f828254610ee69190613eb1565b90915550506001600160a01b0383165f9081526007602052604081208054849290610f12908490613eb1565b90915550506040518281525f906001600160a01b038516905f8051602061409e833981519152906020015b60405180910390a350600192915050565b6001600160a01b0383165f908152600c60209081526040808320338452909152812080548391908390610f82908490613eb1565b90915550610f939050848484612628565b506001949350505050565b60f2546001600160a01b0382165f9081526009602052604081205490918291610fc79042613eb1565b610fd19190613ec4565b60f2546001600160a01b0385165f908152600a602052604081205492935091610ffa9042613eb1565b6110049190613ec4565b90505f60f354836110159190613ee3565b90505f60f354836110269190613ee3565b90505f6110338284613eb1565b90506103e88210611061575050506001600160a01b039093165f908152600760205260409020549392505050565b5f8411611070575f9550611186565b8484036110ee576001600160a01b0387165f908152600760205260409020546103e861109c8286613ee3565b6110a69190613ec4565b6001600160a01b0389165f9081526007602052604090205490975087116110cd57866110e6565b6001600160a01b0388165f908152600760205260409020545b965050611186565b5f6110fb826103e8613eb1565b6001600160a01b0389165f9081526007602052604090205461111f906103e8613ee3565b6111299190613ec4565b90506103e86111388285613ee3565b6111429190613ec4565b6001600160a01b0389165f9081526007602052604090205490975087116111695786611182565b6001600160a01b0388165f908152600760205260409020545b9650505b5050505050919050565b6111986125fc565b6001600160a01b0382166111ea5760405162461bcd60e51b8152602060048201526019602482015278496e76616c696420726563697069656e74206164647265737360381b6044820152606401610eaf565b8047101561123a5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610eaf565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611283576040519150601f19603f3d011682016040523d82523d5f602084013e611288565b606091505b50509050806112cf5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610eaf565b505050565b5f6001600160a01b0382166112fb5760405162461bcd60e51b8152600401610eaf90613e74565b60f45460ff6101009091041615156001146113515760405162461bcd60e51b8152602060048201526016602482015275447261676f6e2048756e74206e6f742061637469766560501b6044820152606401610eaf565b813b156113db5760405162461bcd60e51b815260206004820152604c60248201527f54686973206973206120636f6e747261637420616464726573732e205573652060448201527f746865206275726e20696e61637469766520636f6e74726163742066756e637460648201526b34b7b71034b739ba32b0b21760a11b608482015260a401610eaf565b6001600160a01b0382165f9081526008602052604090205460ff1615801561141b57506001600160a01b0382165f90815260f5602052604090205460ff16155b61145d5760405162461bcd60e51b815260206004820152601360248201527257616c6c6574206e6f742068756e7461626c6560681b6044820152606401610eaf565b60f654335f9081526007602052604090205410156114cb5760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e742062616c616e636520746f20696e697469617465604482015264081a1d5b9d60da1b6064820152608401610eaf565b60f2546001600160a01b0383165f90815260096020526040902054600191906114f49042613eb1565b6114fe9190613ec4565b10156115585760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574207374696c6c2077697468696e206163746976697479207065726044820152621a5bd960ea1b6064820152608401610eaf565b60f2546001600160a01b0383165f908152600a6020526040902054600191906115819042613eb1565b61158b9190613ec4565b10156115d25760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081c9958d95b9d1b1e481a1d5b9d195960521b6044820152606401610eaf565b336001600160a01b038316036116205760405162461bcd60e51b8152602060048201526013602482015272155b98589b19481d1bc81cd95b198b5a1d5b9d606a1b6044820152606401610eaf565b60e8546001600160a01b03908116908316036116725760405162461bcd60e51b81526020600482015260116024820152700556e61626c6520746f2068756e74204c5607c1b6044820152606401610eaf565b5f61167c83610f9e565b90505f606461168c836014613ee3565b6116969190613ec4565b90505f60646116a6846046613ee3565b6116b09190613ec4565b90505f60646116c085600a613ee3565b6116ca9190613ec4565b90506116d68684612e9a565b506001600160a01b0386165f90815260076020526040812080548492906116fe908490613eb1565b9091555050335f9081526007602052604081208054849290611721908490613efa565b909155505060405182815233906001600160a01b038816905f8051602061409e8339815191529060200160405180910390a36001600160a01b0386165f908152600760205260408120805483929061177a908490613eb1565b909155505060f15461010090046001600160a01b03165f90815260076020526040812080548392906117ad908490613efa565b909155505060f1546040516001600160a01b036101009092048216918816905f8051602061409e833981519152906117e89085815260200190565b60405180910390a36001600160a01b0386165f908152600a6020908152604080832042905533835260f890915281208054869290611827908490613efa565b9091555050335f90815260f76020526040812080546001929061184b908490613efa565b9091555050335f90815260fa602052604090205460ff166118c257335f81815260fa60205260408120805460ff1916600190811790915560f9805491820181559091527f168c8166292b85070409830617e84bdd7e3518b38e5ac430dc35ed7d16b07a860180546001600160a01b03191690911790555b50600195945050505050565b6118d66125fc565b6001600160a01b0382166119245760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610eaf565b6001600160a01b0381166119765760405162461bcd60e51b8152602060048201526019602482015278496e76616c696420726563697069656e74206164647265737360381b6044820152606401610eaf565b6040516370a0823160e01b815230600482015282905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156119bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e09190613f0d565b90505f8111611a295760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606401610eaf565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390525f919084169063a9059cbb906044016020604051808303815f875af1158015611a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9c9190613f24565b905080611ae35760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610eaf565b5050505050565b606060f9805480602002602001604051908101604052809291908181526020018280548015611b4057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b22575b5050505050905090565b5f611b536125fc565b33611b705760405162461bcd60e51b8152600401610eaf90613e74565b5060ee805460ff19169055600190565b611b886125fc565b60f655565b611b95613a27565b60408051611900810191829052601d80546001600160a01b03168252909160c890601e60208501808311611b22575050505050905090565b828114611c1c5760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368656420696e707574206172726179730000000000000000006044820152606401610eaf565b5f5b83811015611ae3575f858583818110611c3957611c39613f3f565b9050602002016020810190611c4e9190613acf565b6001600160a01b031603611ca45760405162461bcd60e51b815260206004820152601b60248201527f41697264726f7020746f20746865207a65726f206164647265737300000000006044820152606401610eaf565b5f600454600a611cb49190614033565b848484818110611cc657611cc6613f3f565b90506020020135611cd79190613ee3565b335f90815260076020526040902054909150811115611d435760405162461bcd60e51b815260206004820152602260248201527f43616c6c657220646f6573206e6f74206861766520656e6f75676820746f6b656044820152616e7360f01b6064820152608401610eaf565b335f9081526007602052604081208054839290611d61908490613eb1565b9091555081905060075f888886818110611d7d57611d7d613f3f565b9050602002016020810190611d929190613acf565b6001600160a01b03166001600160a01b031681526020019081526020015f205f828254611dbf9190613efa565b909155508690508583818110611dd757611dd7613f3f565b9050602002016020810190611dec9190613acf565b6001600160a01b0316336001600160a01b03165f8051602061409e83398151915283604051611e1d91815260200190565b60405180910390a35080611e308161403e565b915050611c1e565b611e406125fc565b611e495f612ec1565b565b60038054610dea90613e3c565b611e606125fc565b60139590955560129390935560118290556010919091556017556016556015819055601455565b611e8f6125fc565b60f18054911515600160a81b0260ff60a81b19909216919091179055565b5f611eb66125fc565b5f5b82811015611f73575f848483818110611ed357611ed3613f3f565b9050602002016020810190611ee89190613acf565b6001600160a01b031603611f0e5760405162461bcd60e51b8152600401610eaf90613e74565b600160085f868685818110611f2557611f25613f3f565b9050602002016020810190611f3a9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580611f6b8161403e565b915050611eb8565b5060019392505050565b611f856125fc565b60e880546001600160a01b0319166001600160a01b0392909216919091179055565b5f33610f93818585612628565b5f611fbd6125fc565b33611fda5760405162461bcd60e51b8152600401610eaf90613e74565b6001600160a01b0382166120005760405162461bcd60e51b8152600401610eaf90613e74565b6001546001600160a01b0316331461204b5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610eaf565b50600180546001600160a01b0383166001600160a01b0319909116178155919050565b6120766125fc565b5f5b818110156112cf57600160f55f85858581811061209757612097613f3f565b90506020020160208101906120ac9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806120dd8161403e565b915050612078565b5f6001600160a01b03821661210c5760405162461bcd60e51b8152600401610eaf90613e74565b813b61215a5760405162461bcd60e51b815260206004820152601760248201527f4e6f74206120636f6e747261637420616464726573732e0000000000000000006044820152606401610eaf565b60f45460ff6101009091041615156001146113db5760405162461bcd60e51b8152602060048201526016602482015275447261676f6e2048756e74206e6f742061637469766560501b6044820152606401610eaf565b6121b86125fc565b5f5b818110156112cf575f60f55f8585858181106121d8576121d8613f3f565b90506020020160208101906121ed9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061221e8161403e565b9150506121ba565b61222e6125fc565b60f4805460ff1916911515919091179055565b60f98181548110612250575f80fd5b5f918252602090912001546001600160a01b0316905081565b6122716125fc565b6001600160a01b03811661229a57604051631e4fbdf760e01b81525f6004820152602401610eaf565b6122a381612ec1565b50565b5f6122af6125fc565b336122cc5760405162461bcd60e51b8152600401610eaf90613e74565b5f5b610103811015611f73575f848261010381106122ec576122ec613f3f565b60200201516001600160a01b031614612492578281610103811061231257612312613f3f565b602002015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546123489190613eb1565b9091555083905081610103811061236157612361613f3f565b602002015160075f8684610103811061237c5761237c613f3f565b60200201516001600160a01b03166001600160a01b031681526020019081526020015f205f8282546123ae9190613efa565b9091555042905060095f868461010381106123cb576123cb613f3f565b60200201516001600160a01b03166001600160a01b031681526020019081526020015f208190555042600a5f8684610103811061240a5761240a613f3f565b60200201516001600160a01b03166001600160a01b031681526020019081526020015f20819055508381610103811061244557612445613f3f565b60200201516001600160a01b0316335f8051602061409e8339815191528584610103811061247557612475613f3f565b602002015160405161248991815260200190565b60405180910390a35b8061249c8161403e565b9150506122ce565b6001600160a01b0381165f90815260f86020526040812054610e7a90678ac7230489e8000090613ec4565b5f6124d86125fc565b5f5b82811015611f73575f8484838181106124f5576124f5613f3f565b905060200201602081019061250a9190613acf565b6001600160a01b0316036125305760405162461bcd60e51b8152600401610eaf90613e74565b5f60085f86868581811061254657612546613f3f565b905060200201602081019061255b9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061258c8161403e565b9150506124da565b6001600160a01b038381165f818152600c6020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b5f546001600160a01b03163314611e495760405163118cdaa760e01b8152336004820152602401610eaf565b5f815f036126785760405162461bcd60e51b815260206004820152601e60248201527f4e6f207a65726f2076616c7565207472616e7366657220616c6c6f77656400006044820152606401610eaf565b6001600160a01b0383166126c05760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610eaf565b60f154600160a81b900460ff161561288d576001600160a01b0384165f90815260f5602052604090205460ff1615801561271257506001600160a01b0383165f90815260f5602052604090205460ff16155b1561288d5760f15460ff16158015612737575060e8546001600160a01b038581169116145b801561275057505f546001600160a01b03848116911614155b156127a9576064600d546127649190613ec4565b6001600160a01b0384165f908152600760205260409020546127869084613efa565b11156127a45760405162461bcd60e51b8152600401610eaf90614056565b61288d565b60f15460ff161580156127c9575060e8546001600160a01b038481169116145b80156127e257505f546001600160a01b03858116911614155b1561283e576103e8600d546127f79190613ec4565b8211156127a45760405162461bcd60e51b81526020600482015260156024820152741b585e080c0b8c49481cd95b1b08185b1b1bddd959605a1b6044820152606401610eaf565b6064600d5461284d9190613ec4565b6001600160a01b0384165f9081526007602052604090205461286f9084613efa565b111561288d5760405162461bcd60e51b8152600401610eaf90614056565b6001600160a01b0384165f90815260f5602052604090205460ff16806128ca57506001600160a01b0383165f90815260f5602052604090205460ff165b806128fc575060e8546001600160a01b038581169116148015906128fc575060e8546001600160a01b03848116911614155b156129125761290c848484612f10565b50612e40565b60ed5461292090603c613efa565b421115612a5257600554600d54106129c457600b805460ff19166001179055612947612f9e565b5060ec5460ff166129bf575f600554600d546129639190613eb1565b90505f612971826002613ee3565b6001546001600160a01b03165f908152600760205260409020546129959190613eb1565b11156129bd576001546129bb906001600160a01b03166129b6836002613ee3565b612e9a565b505b505b612a52565b600654600d5411612a5257600b805460ff191690556129e1612f9e565b505f600d546006546129f39190613eb1565b600154909150612a16906001600160a01b0316612a11836002613ee3565b612fc0565b50612a22816002613ee3565b6001546001600160a01b03165f9081526007602052604081208054909190612a4b908490613efa565b9091555050505b60e6545f03612a6557612a63613027565b505b60e8546018805460ff19166001600160a01b03868116931692909214918217905560ff16612a9557601054612a99565b6014545b60195560185460ff16612aae57601154612ab2565b6015545b601a5560185460ff16612ac757601254612acb565b6016545b601b5560185460ff16612ae057601354612ae4565b6017545b601c55600b5460ff168015612b00575060f45460ff1615156001145b15612d4b575f612b1283601a54613596565b90505f612b2184601b54613596565b90505f612b3085601c54613596565b90505f8183612b3f8689613eb1565b612b499190613eb1565b612b539190613eb1565b9050612b5f8885612e9a565b506001600160a01b0388165f9081526007602052604081208054839290612b87908490613eb1565b90915550506001600160a01b0387165f9081526007602052604081208054839290612bb3908490613efa565b92505081905550866001600160a01b0316886001600160a01b03165f8051602061409e83398151915283604051612bec91815260200190565b60405180910390a36001600160a01b0388165f9081526007602052604081208054849290612c1b908490613eb1565b909155505060f15461010090046001600160a01b03165f9081526007602052604081208054849290612c4e908490613efa565b909155505060f1546040516001600160a01b036101009092048216918a16905f8051602061409e83398151915290612c899086815260200190565b60405180910390a36001600160a01b0388165f9081526007602052604081208054859290612cb8908490613eb1565b90915550506001546001600160a01b03165f9081526007602052604081208054859290612ce6908490613efa565b90915550506001546040518481526001600160a01b03918216918a16905f8051602061409e8339815191529060200160405180910390a36001600f5f828254612d2f9190613efa565b90915550612d41905086328a8a6135c1565b5050505050612e40565b600b5460ff16158015612d65575060f45460ff1615156001145b15612e04575f612d7783601954613596565b90505f612d8684601b54613596565b90505f612d9585601c54613596565b90505f81612da38488613eb1565b612dad9190613eb1565b9050612db93385612fc0565b50335f9081526007602052604081208054869290612dd8908490613efa565b90915550506001600160a01b0388165f9081526007602052604081208054839290612b87908490613eb1565b60405162461bcd60e51b81526020600482015260116024820152704572726f7220617420545820426c6f636b60781b6044820152606401610eaf565b5050325f81815260096020908152604080832042908190556001600160a01b0396871680855282852082905595909616808452818420879055938352600a9091528082208590559281528281208490559081522055600190565b5f6001600160a01b038316610ed55760405162461bcd60e51b8152600401610eaf90613e74565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f90815260076020526040812080548391908390612f39908490613eb1565b90915550506001600160a01b0383165f9081526007602052604081208054849290612f65908490613efa565b92505081905550826001600160a01b0316846001600160a01b03165f8051602061409e833981519152846040516125ea91815260200190565b5f6001600e5f828254612fb19190613efa565b90915550504260ed5550600190565b5f6001600160a01b038316612fe75760405162461bcd60e51b8152600401610eaf90613e74565b81600d5f828254612ff89190613efa565b90915550506040518281526001600160a01b038416905f905f8051602061409e83398151915290602001610f3d565b600b545f9060ff161561315a57600a6011546130439190613ec4565b60115f8282546130539190613efa565b909155505060105461306790600a90613ec4565b60105f8282546130779190613efa565b909155505060125461308b90600a90613ec4565b60125f82825461309b9190613efa565b90915550506013546130af90600a90613ec4565b60135f8282546130bf9190613efa565b90915550506015546130d390600a90613ec4565b60155f8282546130e39190613efa565b90915550506014546130f790600a90613ec4565b60145f8282546131079190613efa565b909155505060165461311b90600a90613ec4565b60165f82825461312b9190613efa565b909155505060175461313f90600a90613ec4565b60175f82825461314f9190613efa565b9091555061327b9050565b600a6011546131699190613ec4565b60115f8282546131799190613eb1565b909155505060105461318d90600a90613ec4565b60105f82825461319d9190613efa565b90915550506012546131b190600a90613ec4565b60125f8282546131c19190613eb1565b90915550506013546131d590600a90613ec4565b60135f8282546131e59190613eb1565b90915550506015546131f990600a90613ec4565b60155f8282546132099190613eb1565b909155505060145461321d90600a90613ec4565b60145f82825461322d9190613efa565b909155505060165461324190600a90613ec4565b60165f8282546132519190613eb1565b909155505060175461326590600a90613ec4565b60175f8282546132759190613eb1565b90915550505b60e954613289906006613ee3565b60115411156132b65760e9546132a0906002613ee3565b60115f8282546132b09190613eb1565b90915550505b60e9546132c4906006613ee3565b60105411156132f15760e9546132db906002613ee3565b60105f8282546132eb9190613eb1565b90915550505b60e9546132ff906003613ee3565b60125411156133215760e95460125f82825461331b9190613eb1565b90915550505b60e95461332f906004613ee3565b60135411156133515760e95460135f82825461334b9190613eb1565b90915550505b60e95461335f906006613ee3565b601554111561338c5760e954613376906002613ee3565b60155f8282546133869190613eb1565b90915550505b60e95461339a906006613ee3565b60145411156133c75760e9546133b1906002613ee3565b60145f8282546133c19190613eb1565b90915550505b60e9546133d5906003613ee3565b60165411156133f75760e95460165f8282546133f19190613eb1565b90915550505b60e954613405906006613ee3565b60175411156134275760e95460175f8282546134219190613eb1565b90915550505b60e954601154108061343c575060e954601054105b806134565750600260e9546134519190613ec4565b601254105b156134db575f600454600a61346b9190614033565b905061271061347b826034613ee3565b6134859190613ec4565b601055612710613496826034613ee3565b6134a09190613ec4565b6011556127106134b1826058613ee3565b6134bb9190613ec4565b6012556127106134cc8260f8613ee3565b6134d69190613ec4565b601355505b60e95460155410806134f0575060e954601454105b8061350a5750600260e9546135059190613ec4565b601654105b15613590575f600454600a61351f9190614033565b905061271061352f826096613ee3565b6135399190613ec4565b60145561271061354a826096613ee3565b6135549190613ec4565b6015556127106135658260fa613ee3565b61356f9190613ec4565b601655612710613581826101e8613ee3565b61358b9190613ec4565b601755505b50600190565b5f600454600a6135a69190614033565b6135b08385613ee3565b6135ba9190613ec4565b9392505050565b6001546001600160a01b03165f9081526007602052604081205460eb546135e89190613596565b60e7819055851080159061360457506001600160a01b03841615155b15610f9357833b61362f5760e580546001600160a01b0319166001600160a01b038616179055613672565b823b156136565760e580546001600160a01b0319166001600160a01b038416179055613672565b60e580546001600160a01b0319166001600160a01b0385161790555b60ec5460ff161561376a5760c760e65410156136ee5760e55460e6546001600160a01b0390911690601d9060c881106136ad576136ad613f3f565b015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160e65f8282546136e39190613efa565b90915550610f939050565b60e65460c7036137655760ec805460ff1916905560e55460e6546001600160a01b0390911690601d9060c8811061372757613727613f3f565b0180546001600160a01b0319166001600160a01b03929092169190911790555f60e655613752613809565b50600160e65f8282546136e39190613efa565b610f93565b60c760e65410156137a35761377d613809565b5060e55460e6546001600160a01b0390911690601d9060c881106136ad576136ad613f3f565b60e65460c703610f93576137b5613809565b5060e55460e6546001600160a01b0390911690601d9060c881106137db576137db613f3f565b0180546001600160a01b0319166001600160a01b03929092169190911790555f60e655506001949350505050565b6001546001600160a01b03165f9081526007602052604081205460e954829161383191613596565b6001546001600160a01b03165f90815260076020526040812054919250908210613882576001546001600160a01b03165f9081526007602052604090205461387b90600590613ec4565b90506138fc565b61388d826002613ee3565b6001546001600160a01b03165f9081526007602052604090205411156138d3576001546001600160a01b03165f9081526007602052604090205461387b90600390613ec4565b6001546001600160a01b03165f908152600760205260409020546138f990600490613ec4565b90505b6001546001600160a01b03165f90815260076020526040812054613921908390613eb1565b1115613a1e576001546001600160a01b03165f9081526007602052604081208054839290613950908490613eb1565b925050819055508060075f601d60e65460c8811061397057613970613f3f565b01546001600160a01b0316815260208101919091526040015f908120805490919061399c908490613efa565b9091555050600180546001600160a01b039081165f908152600960209081526040808320429081905594549093168252600a9052205560e654601d9060c881106139e8576139e8613f3f565b01546001546040518381526001600160a01b0392831692909116905f8051602061409e8339815191529060200160405180910390a35b60019250505090565b60405180611900016040528060c8906020820280368337509192915050565b5f6020808352835180828501525f5b81811015613a7157858101830151858201604001528201613a55565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146122a3575f80fd5b5f8060408385031215613ab6575f80fd5b8235613ac181613a91565b946020939093013593505050565b5f60208284031215613adf575f80fd5b81356135ba81613a91565b5f805f60608486031215613afc575f80fd5b8335613b0781613a91565b92506020840135613b1781613a91565b929592945050506040919091013590565b5f8060408385031215613b39575f80fd5b8235613b4481613a91565b91506020830135613b5481613a91565b809150509250929050565b602080825282518282018190525f9190848201906040850190845b81811015613b9f5783516001600160a01b031683529284019291840191600101613b7a565b50909695505050505050565b5f60208284031215613bbb575f80fd5b5035919050565b611900810181835f5b60c8811015613bf35781516001600160a01b0316835260209283019290910190600101613bcb565b50505092915050565b5f8083601f840112613c0c575f80fd5b50813567ffffffffffffffff811115613c23575f80fd5b6020830191508360208260051b8501011115613c3d575f80fd5b9250929050565b5f805f8060408587031215613c57575f80fd5b843567ffffffffffffffff80821115613c6e575f80fd5b613c7a88838901613bfc565b90965094506020870135915080821115613c92575f80fd5b50613c9f87828801613bfc565b95989497509550505050565b5f805f805f8060c08789031215613cc0575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80151581146122a3575f80fd5b5f60208284031215613d07575f80fd5b81356135ba81613cea565b5f8060208385031215613d23575f80fd5b823567ffffffffffffffff811115613d39575f80fd5b613d4585828601613bfc565b90969095509350505050565b604051612060810167ffffffffffffffff81118282101715613d8157634e487b7160e01b5f52604160045260245ffd5b60405290565b5f806140c0808486031215613d9a575f80fd5b84601f850112613da8575f80fd5b613db0613d51565b80612060860187811115613dc2575f80fd5b865b81811015613de5578035613dd781613a91565b845260209384019301613dc4565b508195508761207f880112613df8575f80fd5b613e00613d51565b93870193925082915087841115613e15575f80fd5b5b83811015613e2e578035835260209283019201613e16565b508093505050509250929050565b600181811c90821680613e5057607f821691505b602082108103613e6e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610e7a57610e7a613e9d565b5f82613ede57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610e7a57610e7a613e9d565b80820180821115610e7a57610e7a613e9d565b5f60208284031215613f1d575f80fd5b5051919050565b5f60208284031215613f34575f80fd5b81516135ba81613cea565b634e487b7160e01b5f52603260045260245ffd5b600181815b80851115613f8d57815f1904821115613f7357613f73613e9d565b80851615613f8057918102915b93841c9390800290613f58565b509250929050565b5f82613fa357506001610e7a565b81613faf57505f610e7a565b8160018114613fc55760028114613fcf57613feb565b6001915050610e7a565b60ff841115613fe057613fe0613e9d565b50506001821b610e7a565b5060208310610133831016604e8410600b841016171561400e575081810a610e7a565b6140188383613f53565b805f190482111561402b5761402b613e9d565b029392505050565b5f6135ba8383613f95565b5f6001820161404f5761404f613e9d565b5060010190565b60208082526027908201527f6d617820312520686f6c64696e67206c696d6974207065722077616c6c657420604082015266185b1b1bddd95960ca1b60608201526080019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b0616cdb0b4bebf8b342b6803a939d154f6ca84a22b78755d6d8acb89a2e8ff164736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000e4e1c0000000000000000000000000000000000000000000000000000000000016e3600000000000000000000000000000000000000000000000000000000000e4e1c00000000000000000000000009b727cea7bfe9beddabacbc55bfb20864c7b2ddd000000000000000000000000000000000000000000000000000000000000000c4379636c69782047616d6573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034359470000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610471575f3560e01c806379e573a21161024c578063a9059cbb1161013f578063dd62ed3e116100be578063eab36ab711610083578063eab36ab714610d23578063f2fde38b14610d42578063f38cb16414610d61578063f50ebfcc14610d80578063fd190bfa14610d9f578063ff115a7e14610dbe575f80fd5b8063dd62ed3e14610c6d578063e030838914610cb1578063e4b7251614610cd0578063e8e1553f14610ce5578063e9d8a32a14610d04575f80fd5b8063bed9985011610104578063bed9985014610bfa578063c8b794c614610c0f578063ca0dcf1614610c2e578063cc90908814610c43578063d5d9e45e14610c58575f80fd5b8063a9059cbb14610b3f578063aa6b05e314610b5e578063ab0eda9e14610b73578063bd5d016914610b92578063bd9e0c4c14610bc6575f80fd5b806395d89b41116101cb5780639adce734116101905780639adce73414610ab85780639d3b466a14610ad7578063a29a608914610af6578063a2d53f1114610b15578063a683c6c414610b2a575f80fd5b806395d89b4114610a3157806396f0bd6114610a4557806397ddd1ed14610a59578063992c58e414610a6e5780639a6f716414610a8d575f80fd5b80638891cf0d116102115780638891cf0d146109c25780638a333b50146109d75780638b024bd5146109ec5780638b29990314610a005780638da5cb5b14610a15575f80fd5b806379e573a21461093e5780637a1d52321461095c57806381b3fa071461097157806384413b651461098a57806387678f8b146109a9575f80fd5b80634f91e48c1161036457806367970cc2116102e35780636f68ebae116102a85780636f68ebae1461089d578063706f6937146108b257806370a08231146108d1578063715018a6146108fc57806379831bb114610910575f80fd5b806367970cc2146107fc578063680df78914610811578063691ca5e914610826578063695d3a92146108455780636f36258b14610866575f80fd5b80635da4406f116103295780635da4406f146107735780635eae2cc71461079457806361c03d07146107a9578063627a91d9146107bd578063644d5373146107e8575f80fd5b80634f91e48c146106f957806350f760e91461070e5780635668af1a1461072d5780635b4f472a146107415780635b7c82101461075a575f80fd5b806333308281116103f057806347c73e75116103b557806347c73e751461065c578063482cd6c5146106705780634b17256b146106845780634b3f651c146106a35780634ba80033146106ce575f80fd5b806333308281146105d65780633a5ed677146105f25780633bbfe015146106075780633ffdfe161461061c5780634782f7791461063b575f80fd5b806318160ddd1161043657806318160ddd1461054b57806323b872dd1461055f57806324d2526f1461057e578063290c61fc146105ac578063313ce567146105c1575f80fd5b806306fdde031461047c578063095ea7b3146104a65780630bc87863146104d557806313a0e2d61461051757806316eee3ff14610536575f80fd5b3661047857005b5f80fd5b348015610487575f80fd5b50610490610ddd565b60405161049d9190613a46565b60405180910390f35b3480156104b1575f80fd5b506104c56104c0366004613aa5565b610e69565b604051901515815260200161049d565b3480156104e0575f80fd5b506105096104ef366004613acf565b6001600160a01b03165f90815260f7602052604090205490565b60405190815260200161049d565b348015610522575f80fd5b506104c5610531366004613aa5565b610e80565b348015610541575f80fd5b50610509600f5481565b348015610556575f80fd5b50600d54610509565b34801561056a575f80fd5b506104c5610579366004613aea565b610f4e565b348015610589575f80fd5b506104c5610598366004613acf565b60f56020525f908152604090205460ff1681565b3480156105b7575f80fd5b5061050960f35481565b3480156105cc575f80fd5b5061050960045481565b3480156105e1575f80fd5b5060ee54610100900460ff166104c5565b3480156105fd575f80fd5b5061050960175481565b348015610612575f80fd5b5061050960e95481565b348015610627575f80fd5b50610509610636366004613acf565b610f9e565b348015610646575f80fd5b5061065a610655366004613aa5565b611190565b005b348015610667575f80fd5b50601554610509565b34801561067b575f80fd5b50601154610509565b34801561068f575f80fd5b506104c561069e366004613acf565b6112d4565b3480156106ae575f80fd5b506105096106bd366004613acf565b600a6020525f908152604090205481565b3480156106d9575f80fd5b506105096106e8366004613acf565b60f86020525f908152604090205481565b348015610704575f80fd5b5061050960fc5481565b348015610719575f80fd5b5061065a610728366004613b28565b6118ce565b348015610738575f80fd5b5060eb54610509565b34801561074c575f80fd5b5060f4546104c59060ff1681565b348015610765575f80fd5b50600b546104c59060ff1681565b34801561077e575f80fd5b50610787611aea565b60405161049d9190613b5f565b34801561079f575f80fd5b5061050960f25481565b3480156107b4575f80fd5b506104c5611b4a565b3480156107c8575f80fd5b506105096107d7366004613acf565b60096020525f908152604090205481565b3480156107f3575f80fd5b5060ed54610509565b348015610807575f80fd5b5061050960f65481565b34801561081c575f80fd5b5061050960ea5481565b348015610831575f80fd5b5061065a610840366004613bab565b611b80565b348015610850575f80fd5b50610859611b8d565b60405161049d9190613bc2565b348015610871575f80fd5b5060e554610885906001600160a01b031681565b6040516001600160a01b03909116815260200161049d565b3480156108a8575f80fd5b5061050960fb5481565b3480156108bd575f80fd5b5061065a6108cc366004613c44565b611bcd565b3480156108dc575f80fd5b506105096108eb366004613acf565b60076020525f908152604090205481565b348015610907575f80fd5b5061065a611e38565b34801561091b575f80fd5b506104c561092a366004613acf565b60086020525f908152604090205460ff1681565b348015610949575f80fd5b5060f4546104c590610100900460ff1681565b348015610967575f80fd5b5061050960135481565b34801561097c575f80fd5b5060ec546104c59060ff1681565b348015610995575f80fd5b50600154610885906001600160a01b031681565b3480156109b4575f80fd5b5060ee546104c59060ff1681565b3480156109cd575f80fd5b50610509601b5481565b3480156109e2575f80fd5b5061050960055481565b3480156109f7575f80fd5b50601454610509565b348015610a0b575f80fd5b50610509600e5481565b348015610a20575f80fd5b505f546001600160a01b0316610885565b348015610a3c575f80fd5b50610490611e4b565b348015610a50575f80fd5b50601054610509565b348015610a64575f80fd5b5061050960065481565b348015610a79575f80fd5b5061065a610a88366004613cab565b611e58565b348015610a98575f80fd5b50610509610aa7366004613acf565b60f76020525f908152604090205481565b348015610ac3575f80fd5b5061065a610ad2366004613cf7565b611e87565b348015610ae2575f80fd5b506104c5610af1366004613d12565b611ead565b348015610b01575f80fd5b5061065a610b10366004613acf565b611f7d565b348015610b20575f80fd5b5061050960e75481565b348015610b35575f80fd5b5061050960125481565b348015610b4a575f80fd5b506104c5610b59366004613aa5565b611fa7565b348015610b69575f80fd5b5061050960eb5481565b348015610b7e575f80fd5b506104c5610b8d366004613acf565b611fb4565b348015610b9d575f80fd5b50610509610bac366004613acf565b6001600160a01b03165f908152600a602052604090205490565b348015610bd1575f80fd5b50610509610be0366004613acf565b6001600160a01b03165f9081526009602052604090205490565b348015610c05575f80fd5b50610509601a5481565b348015610c1a575f80fd5b5061065a610c29366004613d12565b61206e565b348015610c39575f80fd5b5061050960195481565b348015610c4e575f80fd5b5061050960165481565b348015610c63575f80fd5b5061050960e65481565b348015610c78575f80fd5b50610509610c87366004613b28565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b348015610cbc575f80fd5b506104c5610ccb366004613acf565b6120e5565b348015610cdb575f80fd5b50610509601c5481565b348015610cf0575f80fd5b5061065a610cff366004613d12565b6121b0565b348015610d0f575f80fd5b5061065a610d1e366004613cf7565b612226565b348015610d2e575f80fd5b50610885610d3d366004613bab565b612241565b348015610d4d575f80fd5b5061065a610d5c366004613acf565b612269565b348015610d6c575f80fd5b506104c5610d7b366004613d87565b6122a6565b348015610d8b575f80fd5b5060f4546104c59062010000900460ff1681565b348015610daa575f80fd5b50610509610db9366004613acf565b6124a4565b348015610dc9575f80fd5b506104c5610dd8366004613d12565b6124cf565b60028054610dea90613e3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1690613e3c565b8015610e615780601f10610e3857610100808354040283529160200191610e61565b820191905f5260205f20905b815481529060010190602001808311610e4457829003601f168201915b505050505081565b5f33610e76818585612594565b9150505b92915050565b5f610e896125fc565b6001600160a01b038316610eb85760405162461bcd60e51b8152600401610eaf90613e74565b60405180910390fd5b33610ed55760405162461bcd60e51b8152600401610eaf90613e74565b81600d5f828254610ee69190613eb1565b90915550506001600160a01b0383165f9081526007602052604081208054849290610f12908490613eb1565b90915550506040518281525f906001600160a01b038516905f8051602061409e833981519152906020015b60405180910390a350600192915050565b6001600160a01b0383165f908152600c60209081526040808320338452909152812080548391908390610f82908490613eb1565b90915550610f939050848484612628565b506001949350505050565b60f2546001600160a01b0382165f9081526009602052604081205490918291610fc79042613eb1565b610fd19190613ec4565b60f2546001600160a01b0385165f908152600a602052604081205492935091610ffa9042613eb1565b6110049190613ec4565b90505f60f354836110159190613ee3565b90505f60f354836110269190613ee3565b90505f6110338284613eb1565b90506103e88210611061575050506001600160a01b039093165f908152600760205260409020549392505050565b5f8411611070575f9550611186565b8484036110ee576001600160a01b0387165f908152600760205260409020546103e861109c8286613ee3565b6110a69190613ec4565b6001600160a01b0389165f9081526007602052604090205490975087116110cd57866110e6565b6001600160a01b0388165f908152600760205260409020545b965050611186565b5f6110fb826103e8613eb1565b6001600160a01b0389165f9081526007602052604090205461111f906103e8613ee3565b6111299190613ec4565b90506103e86111388285613ee3565b6111429190613ec4565b6001600160a01b0389165f9081526007602052604090205490975087116111695786611182565b6001600160a01b0388165f908152600760205260409020545b9650505b5050505050919050565b6111986125fc565b6001600160a01b0382166111ea5760405162461bcd60e51b8152602060048201526019602482015278496e76616c696420726563697069656e74206164647265737360381b6044820152606401610eaf565b8047101561123a5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610eaf565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611283576040519150601f19603f3d011682016040523d82523d5f602084013e611288565b606091505b50509050806112cf5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610eaf565b505050565b5f6001600160a01b0382166112fb5760405162461bcd60e51b8152600401610eaf90613e74565b60f45460ff6101009091041615156001146113515760405162461bcd60e51b8152602060048201526016602482015275447261676f6e2048756e74206e6f742061637469766560501b6044820152606401610eaf565b813b156113db5760405162461bcd60e51b815260206004820152604c60248201527f54686973206973206120636f6e747261637420616464726573732e205573652060448201527f746865206275726e20696e61637469766520636f6e74726163742066756e637460648201526b34b7b71034b739ba32b0b21760a11b608482015260a401610eaf565b6001600160a01b0382165f9081526008602052604090205460ff1615801561141b57506001600160a01b0382165f90815260f5602052604090205460ff16155b61145d5760405162461bcd60e51b815260206004820152601360248201527257616c6c6574206e6f742068756e7461626c6560681b6044820152606401610eaf565b60f654335f9081526007602052604090205410156114cb5760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e742062616c616e636520746f20696e697469617465604482015264081a1d5b9d60da1b6064820152608401610eaf565b60f2546001600160a01b0383165f90815260096020526040902054600191906114f49042613eb1565b6114fe9190613ec4565b10156115585760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574207374696c6c2077697468696e206163746976697479207065726044820152621a5bd960ea1b6064820152608401610eaf565b60f2546001600160a01b0383165f908152600a6020526040902054600191906115819042613eb1565b61158b9190613ec4565b10156115d25760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081c9958d95b9d1b1e481a1d5b9d195960521b6044820152606401610eaf565b336001600160a01b038316036116205760405162461bcd60e51b8152602060048201526013602482015272155b98589b19481d1bc81cd95b198b5a1d5b9d606a1b6044820152606401610eaf565b60e8546001600160a01b03908116908316036116725760405162461bcd60e51b81526020600482015260116024820152700556e61626c6520746f2068756e74204c5607c1b6044820152606401610eaf565b5f61167c83610f9e565b90505f606461168c836014613ee3565b6116969190613ec4565b90505f60646116a6846046613ee3565b6116b09190613ec4565b90505f60646116c085600a613ee3565b6116ca9190613ec4565b90506116d68684612e9a565b506001600160a01b0386165f90815260076020526040812080548492906116fe908490613eb1565b9091555050335f9081526007602052604081208054849290611721908490613efa565b909155505060405182815233906001600160a01b038816905f8051602061409e8339815191529060200160405180910390a36001600160a01b0386165f908152600760205260408120805483929061177a908490613eb1565b909155505060f15461010090046001600160a01b03165f90815260076020526040812080548392906117ad908490613efa565b909155505060f1546040516001600160a01b036101009092048216918816905f8051602061409e833981519152906117e89085815260200190565b60405180910390a36001600160a01b0386165f908152600a6020908152604080832042905533835260f890915281208054869290611827908490613efa565b9091555050335f90815260f76020526040812080546001929061184b908490613efa565b9091555050335f90815260fa602052604090205460ff166118c257335f81815260fa60205260408120805460ff1916600190811790915560f9805491820181559091527f168c8166292b85070409830617e84bdd7e3518b38e5ac430dc35ed7d16b07a860180546001600160a01b03191690911790555b50600195945050505050565b6118d66125fc565b6001600160a01b0382166119245760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610eaf565b6001600160a01b0381166119765760405162461bcd60e51b8152602060048201526019602482015278496e76616c696420726563697069656e74206164647265737360381b6044820152606401610eaf565b6040516370a0823160e01b815230600482015282905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156119bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e09190613f0d565b90505f8111611a295760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606401610eaf565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390525f919084169063a9059cbb906044016020604051808303815f875af1158015611a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9c9190613f24565b905080611ae35760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610eaf565b5050505050565b606060f9805480602002602001604051908101604052809291908181526020018280548015611b4057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b22575b5050505050905090565b5f611b536125fc565b33611b705760405162461bcd60e51b8152600401610eaf90613e74565b5060ee805460ff19169055600190565b611b886125fc565b60f655565b611b95613a27565b60408051611900810191829052601d80546001600160a01b03168252909160c890601e60208501808311611b22575050505050905090565b828114611c1c5760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368656420696e707574206172726179730000000000000000006044820152606401610eaf565b5f5b83811015611ae3575f858583818110611c3957611c39613f3f565b9050602002016020810190611c4e9190613acf565b6001600160a01b031603611ca45760405162461bcd60e51b815260206004820152601b60248201527f41697264726f7020746f20746865207a65726f206164647265737300000000006044820152606401610eaf565b5f600454600a611cb49190614033565b848484818110611cc657611cc6613f3f565b90506020020135611cd79190613ee3565b335f90815260076020526040902054909150811115611d435760405162461bcd60e51b815260206004820152602260248201527f43616c6c657220646f6573206e6f74206861766520656e6f75676820746f6b656044820152616e7360f01b6064820152608401610eaf565b335f9081526007602052604081208054839290611d61908490613eb1565b9091555081905060075f888886818110611d7d57611d7d613f3f565b9050602002016020810190611d929190613acf565b6001600160a01b03166001600160a01b031681526020019081526020015f205f828254611dbf9190613efa565b909155508690508583818110611dd757611dd7613f3f565b9050602002016020810190611dec9190613acf565b6001600160a01b0316336001600160a01b03165f8051602061409e83398151915283604051611e1d91815260200190565b60405180910390a35080611e308161403e565b915050611c1e565b611e406125fc565b611e495f612ec1565b565b60038054610dea90613e3c565b611e606125fc565b60139590955560129390935560118290556010919091556017556016556015819055601455565b611e8f6125fc565b60f18054911515600160a81b0260ff60a81b19909216919091179055565b5f611eb66125fc565b5f5b82811015611f73575f848483818110611ed357611ed3613f3f565b9050602002016020810190611ee89190613acf565b6001600160a01b031603611f0e5760405162461bcd60e51b8152600401610eaf90613e74565b600160085f868685818110611f2557611f25613f3f565b9050602002016020810190611f3a9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580611f6b8161403e565b915050611eb8565b5060019392505050565b611f856125fc565b60e880546001600160a01b0319166001600160a01b0392909216919091179055565b5f33610f93818585612628565b5f611fbd6125fc565b33611fda5760405162461bcd60e51b8152600401610eaf90613e74565b6001600160a01b0382166120005760405162461bcd60e51b8152600401610eaf90613e74565b6001546001600160a01b0316331461204b5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610eaf565b50600180546001600160a01b0383166001600160a01b0319909116178155919050565b6120766125fc565b5f5b818110156112cf57600160f55f85858581811061209757612097613f3f565b90506020020160208101906120ac9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806120dd8161403e565b915050612078565b5f6001600160a01b03821661210c5760405162461bcd60e51b8152600401610eaf90613e74565b813b61215a5760405162461bcd60e51b815260206004820152601760248201527f4e6f74206120636f6e747261637420616464726573732e0000000000000000006044820152606401610eaf565b60f45460ff6101009091041615156001146113db5760405162461bcd60e51b8152602060048201526016602482015275447261676f6e2048756e74206e6f742061637469766560501b6044820152606401610eaf565b6121b86125fc565b5f5b818110156112cf575f60f55f8585858181106121d8576121d8613f3f565b90506020020160208101906121ed9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061221e8161403e565b9150506121ba565b61222e6125fc565b60f4805460ff1916911515919091179055565b60f98181548110612250575f80fd5b5f918252602090912001546001600160a01b0316905081565b6122716125fc565b6001600160a01b03811661229a57604051631e4fbdf760e01b81525f6004820152602401610eaf565b6122a381612ec1565b50565b5f6122af6125fc565b336122cc5760405162461bcd60e51b8152600401610eaf90613e74565b5f5b610103811015611f73575f848261010381106122ec576122ec613f3f565b60200201516001600160a01b031614612492578281610103811061231257612312613f3f565b602002015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546123489190613eb1565b9091555083905081610103811061236157612361613f3f565b602002015160075f8684610103811061237c5761237c613f3f565b60200201516001600160a01b03166001600160a01b031681526020019081526020015f205f8282546123ae9190613efa565b9091555042905060095f868461010381106123cb576123cb613f3f565b60200201516001600160a01b03166001600160a01b031681526020019081526020015f208190555042600a5f8684610103811061240a5761240a613f3f565b60200201516001600160a01b03166001600160a01b031681526020019081526020015f20819055508381610103811061244557612445613f3f565b60200201516001600160a01b0316335f8051602061409e8339815191528584610103811061247557612475613f3f565b602002015160405161248991815260200190565b60405180910390a35b8061249c8161403e565b9150506122ce565b6001600160a01b0381165f90815260f86020526040812054610e7a90678ac7230489e8000090613ec4565b5f6124d86125fc565b5f5b82811015611f73575f8484838181106124f5576124f5613f3f565b905060200201602081019061250a9190613acf565b6001600160a01b0316036125305760405162461bcd60e51b8152600401610eaf90613e74565b5f60085f86868581811061254657612546613f3f565b905060200201602081019061255b9190613acf565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061258c8161403e565b9150506124da565b6001600160a01b038381165f818152600c6020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b5f546001600160a01b03163314611e495760405163118cdaa760e01b8152336004820152602401610eaf565b5f815f036126785760405162461bcd60e51b815260206004820152601e60248201527f4e6f207a65726f2076616c7565207472616e7366657220616c6c6f77656400006044820152606401610eaf565b6001600160a01b0383166126c05760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610eaf565b60f154600160a81b900460ff161561288d576001600160a01b0384165f90815260f5602052604090205460ff1615801561271257506001600160a01b0383165f90815260f5602052604090205460ff16155b1561288d5760f15460ff16158015612737575060e8546001600160a01b038581169116145b801561275057505f546001600160a01b03848116911614155b156127a9576064600d546127649190613ec4565b6001600160a01b0384165f908152600760205260409020546127869084613efa565b11156127a45760405162461bcd60e51b8152600401610eaf90614056565b61288d565b60f15460ff161580156127c9575060e8546001600160a01b038481169116145b80156127e257505f546001600160a01b03858116911614155b1561283e576103e8600d546127f79190613ec4565b8211156127a45760405162461bcd60e51b81526020600482015260156024820152741b585e080c0b8c49481cd95b1b08185b1b1bddd959605a1b6044820152606401610eaf565b6064600d5461284d9190613ec4565b6001600160a01b0384165f9081526007602052604090205461286f9084613efa565b111561288d5760405162461bcd60e51b8152600401610eaf90614056565b6001600160a01b0384165f90815260f5602052604090205460ff16806128ca57506001600160a01b0383165f90815260f5602052604090205460ff165b806128fc575060e8546001600160a01b038581169116148015906128fc575060e8546001600160a01b03848116911614155b156129125761290c848484612f10565b50612e40565b60ed5461292090603c613efa565b421115612a5257600554600d54106129c457600b805460ff19166001179055612947612f9e565b5060ec5460ff166129bf575f600554600d546129639190613eb1565b90505f612971826002613ee3565b6001546001600160a01b03165f908152600760205260409020546129959190613eb1565b11156129bd576001546129bb906001600160a01b03166129b6836002613ee3565b612e9a565b505b505b612a52565b600654600d5411612a5257600b805460ff191690556129e1612f9e565b505f600d546006546129f39190613eb1565b600154909150612a16906001600160a01b0316612a11836002613ee3565b612fc0565b50612a22816002613ee3565b6001546001600160a01b03165f9081526007602052604081208054909190612a4b908490613efa565b9091555050505b60e6545f03612a6557612a63613027565b505b60e8546018805460ff19166001600160a01b03868116931692909214918217905560ff16612a9557601054612a99565b6014545b60195560185460ff16612aae57601154612ab2565b6015545b601a5560185460ff16612ac757601254612acb565b6016545b601b5560185460ff16612ae057601354612ae4565b6017545b601c55600b5460ff168015612b00575060f45460ff1615156001145b15612d4b575f612b1283601a54613596565b90505f612b2184601b54613596565b90505f612b3085601c54613596565b90505f8183612b3f8689613eb1565b612b499190613eb1565b612b539190613eb1565b9050612b5f8885612e9a565b506001600160a01b0388165f9081526007602052604081208054839290612b87908490613eb1565b90915550506001600160a01b0387165f9081526007602052604081208054839290612bb3908490613efa565b92505081905550866001600160a01b0316886001600160a01b03165f8051602061409e83398151915283604051612bec91815260200190565b60405180910390a36001600160a01b0388165f9081526007602052604081208054849290612c1b908490613eb1565b909155505060f15461010090046001600160a01b03165f9081526007602052604081208054849290612c4e908490613efa565b909155505060f1546040516001600160a01b036101009092048216918a16905f8051602061409e83398151915290612c899086815260200190565b60405180910390a36001600160a01b0388165f9081526007602052604081208054859290612cb8908490613eb1565b90915550506001546001600160a01b03165f9081526007602052604081208054859290612ce6908490613efa565b90915550506001546040518481526001600160a01b03918216918a16905f8051602061409e8339815191529060200160405180910390a36001600f5f828254612d2f9190613efa565b90915550612d41905086328a8a6135c1565b5050505050612e40565b600b5460ff16158015612d65575060f45460ff1615156001145b15612e04575f612d7783601954613596565b90505f612d8684601b54613596565b90505f612d9585601c54613596565b90505f81612da38488613eb1565b612dad9190613eb1565b9050612db93385612fc0565b50335f9081526007602052604081208054869290612dd8908490613efa565b90915550506001600160a01b0388165f9081526007602052604081208054839290612b87908490613eb1565b60405162461bcd60e51b81526020600482015260116024820152704572726f7220617420545820426c6f636b60781b6044820152606401610eaf565b5050325f81815260096020908152604080832042908190556001600160a01b0396871680855282852082905595909616808452818420879055938352600a9091528082208590559281528281208490559081522055600190565b5f6001600160a01b038316610ed55760405162461bcd60e51b8152600401610eaf90613e74565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f90815260076020526040812080548391908390612f39908490613eb1565b90915550506001600160a01b0383165f9081526007602052604081208054849290612f65908490613efa565b92505081905550826001600160a01b0316846001600160a01b03165f8051602061409e833981519152846040516125ea91815260200190565b5f6001600e5f828254612fb19190613efa565b90915550504260ed5550600190565b5f6001600160a01b038316612fe75760405162461bcd60e51b8152600401610eaf90613e74565b81600d5f828254612ff89190613efa565b90915550506040518281526001600160a01b038416905f905f8051602061409e83398151915290602001610f3d565b600b545f9060ff161561315a57600a6011546130439190613ec4565b60115f8282546130539190613efa565b909155505060105461306790600a90613ec4565b60105f8282546130779190613efa565b909155505060125461308b90600a90613ec4565b60125f82825461309b9190613efa565b90915550506013546130af90600a90613ec4565b60135f8282546130bf9190613efa565b90915550506015546130d390600a90613ec4565b60155f8282546130e39190613efa565b90915550506014546130f790600a90613ec4565b60145f8282546131079190613efa565b909155505060165461311b90600a90613ec4565b60165f82825461312b9190613efa565b909155505060175461313f90600a90613ec4565b60175f82825461314f9190613efa565b9091555061327b9050565b600a6011546131699190613ec4565b60115f8282546131799190613eb1565b909155505060105461318d90600a90613ec4565b60105f82825461319d9190613efa565b90915550506012546131b190600a90613ec4565b60125f8282546131c19190613eb1565b90915550506013546131d590600a90613ec4565b60135f8282546131e59190613eb1565b90915550506015546131f990600a90613ec4565b60155f8282546132099190613eb1565b909155505060145461321d90600a90613ec4565b60145f82825461322d9190613efa565b909155505060165461324190600a90613ec4565b60165f8282546132519190613eb1565b909155505060175461326590600a90613ec4565b60175f8282546132759190613eb1565b90915550505b60e954613289906006613ee3565b60115411156132b65760e9546132a0906002613ee3565b60115f8282546132b09190613eb1565b90915550505b60e9546132c4906006613ee3565b60105411156132f15760e9546132db906002613ee3565b60105f8282546132eb9190613eb1565b90915550505b60e9546132ff906003613ee3565b60125411156133215760e95460125f82825461331b9190613eb1565b90915550505b60e95461332f906004613ee3565b60135411156133515760e95460135f82825461334b9190613eb1565b90915550505b60e95461335f906006613ee3565b601554111561338c5760e954613376906002613ee3565b60155f8282546133869190613eb1565b90915550505b60e95461339a906006613ee3565b60145411156133c75760e9546133b1906002613ee3565b60145f8282546133c19190613eb1565b90915550505b60e9546133d5906003613ee3565b60165411156133f75760e95460165f8282546133f19190613eb1565b90915550505b60e954613405906006613ee3565b60175411156134275760e95460175f8282546134219190613eb1565b90915550505b60e954601154108061343c575060e954601054105b806134565750600260e9546134519190613ec4565b601254105b156134db575f600454600a61346b9190614033565b905061271061347b826034613ee3565b6134859190613ec4565b601055612710613496826034613ee3565b6134a09190613ec4565b6011556127106134b1826058613ee3565b6134bb9190613ec4565b6012556127106134cc8260f8613ee3565b6134d69190613ec4565b601355505b60e95460155410806134f0575060e954601454105b8061350a5750600260e9546135059190613ec4565b601654105b15613590575f600454600a61351f9190614033565b905061271061352f826096613ee3565b6135399190613ec4565b60145561271061354a826096613ee3565b6135549190613ec4565b6015556127106135658260fa613ee3565b61356f9190613ec4565b601655612710613581826101e8613ee3565b61358b9190613ec4565b601755505b50600190565b5f600454600a6135a69190614033565b6135b08385613ee3565b6135ba9190613ec4565b9392505050565b6001546001600160a01b03165f9081526007602052604081205460eb546135e89190613596565b60e7819055851080159061360457506001600160a01b03841615155b15610f9357833b61362f5760e580546001600160a01b0319166001600160a01b038616179055613672565b823b156136565760e580546001600160a01b0319166001600160a01b038416179055613672565b60e580546001600160a01b0319166001600160a01b0385161790555b60ec5460ff161561376a5760c760e65410156136ee5760e55460e6546001600160a01b0390911690601d9060c881106136ad576136ad613f3f565b015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160e65f8282546136e39190613efa565b90915550610f939050565b60e65460c7036137655760ec805460ff1916905560e55460e6546001600160a01b0390911690601d9060c8811061372757613727613f3f565b0180546001600160a01b0319166001600160a01b03929092169190911790555f60e655613752613809565b50600160e65f8282546136e39190613efa565b610f93565b60c760e65410156137a35761377d613809565b5060e55460e6546001600160a01b0390911690601d9060c881106136ad576136ad613f3f565b60e65460c703610f93576137b5613809565b5060e55460e6546001600160a01b0390911690601d9060c881106137db576137db613f3f565b0180546001600160a01b0319166001600160a01b03929092169190911790555f60e655506001949350505050565b6001546001600160a01b03165f9081526007602052604081205460e954829161383191613596565b6001546001600160a01b03165f90815260076020526040812054919250908210613882576001546001600160a01b03165f9081526007602052604090205461387b90600590613ec4565b90506138fc565b61388d826002613ee3565b6001546001600160a01b03165f9081526007602052604090205411156138d3576001546001600160a01b03165f9081526007602052604090205461387b90600390613ec4565b6001546001600160a01b03165f908152600760205260409020546138f990600490613ec4565b90505b6001546001600160a01b03165f90815260076020526040812054613921908390613eb1565b1115613a1e576001546001600160a01b03165f9081526007602052604081208054839290613950908490613eb1565b925050819055508060075f601d60e65460c8811061397057613970613f3f565b01546001600160a01b0316815260208101919091526040015f908120805490919061399c908490613efa565b9091555050600180546001600160a01b039081165f908152600960209081526040808320429081905594549093168252600a9052205560e654601d9060c881106139e8576139e8613f3f565b01546001546040518381526001600160a01b0392831692909116905f8051602061409e8339815191529060200160405180910390a35b60019250505090565b60405180611900016040528060c8906020820280368337509192915050565b5f6020808352835180828501525f5b81811015613a7157858101830151858201604001528201613a55565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146122a3575f80fd5b5f8060408385031215613ab6575f80fd5b8235613ac181613a91565b946020939093013593505050565b5f60208284031215613adf575f80fd5b81356135ba81613a91565b5f805f60608486031215613afc575f80fd5b8335613b0781613a91565b92506020840135613b1781613a91565b929592945050506040919091013590565b5f8060408385031215613b39575f80fd5b8235613b4481613a91565b91506020830135613b5481613a91565b809150509250929050565b602080825282518282018190525f9190848201906040850190845b81811015613b9f5783516001600160a01b031683529284019291840191600101613b7a565b50909695505050505050565b5f60208284031215613bbb575f80fd5b5035919050565b611900810181835f5b60c8811015613bf35781516001600160a01b0316835260209283019290910190600101613bcb565b50505092915050565b5f8083601f840112613c0c575f80fd5b50813567ffffffffffffffff811115613c23575f80fd5b6020830191508360208260051b8501011115613c3d575f80fd5b9250929050565b5f805f8060408587031215613c57575f80fd5b843567ffffffffffffffff80821115613c6e575f80fd5b613c7a88838901613bfc565b90965094506020870135915080821115613c92575f80fd5b50613c9f87828801613bfc565b95989497509550505050565b5f805f805f8060c08789031215613cc0575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80151581146122a3575f80fd5b5f60208284031215613d07575f80fd5b81356135ba81613cea565b5f8060208385031215613d23575f80fd5b823567ffffffffffffffff811115613d39575f80fd5b613d4585828601613bfc565b90969095509350505050565b604051612060810167ffffffffffffffff81118282101715613d8157634e487b7160e01b5f52604160045260245ffd5b60405290565b5f806140c0808486031215613d9a575f80fd5b84601f850112613da8575f80fd5b613db0613d51565b80612060860187811115613dc2575f80fd5b865b81811015613de5578035613dd781613a91565b845260209384019301613dc4565b508195508761207f880112613df8575f80fd5b613e00613d51565b93870193925082915087841115613e15575f80fd5b5b83811015613e2e578035835260209283019201613e16565b508093505050509250929050565b600181811c90821680613e5057607f821691505b602082108103613e6e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610e7a57610e7a613e9d565b5f82613ede57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610e7a57610e7a613e9d565b80820180821115610e7a57610e7a613e9d565b5f60208284031215613f1d575f80fd5b5051919050565b5f60208284031215613f34575f80fd5b81516135ba81613cea565b634e487b7160e01b5f52603260045260245ffd5b600181815b80851115613f8d57815f1904821115613f7357613f73613e9d565b80851615613f8057918102915b93841c9390800290613f58565b509250929050565b5f82613fa357506001610e7a565b81613faf57505f610e7a565b8160018114613fc55760028114613fcf57613feb565b6001915050610e7a565b60ff841115613fe057613fe0613e9d565b50506001821b610e7a565b5060208310610133831016604e8410600b841016171561400e575081810a610e7a565b6140188383613f53565b805f190482111561402b5761402b613e9d565b029392505050565b5f6135ba8383613f95565b5f6001820161404f5761404f613e9d565b5060010190565b60208082526027908201527f6d617820312520686f6c64696e67206c696d6974207065722077616c6c657420604082015266185b1b1bddd95960ca1b60608201526080019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b0616cdb0b4bebf8b342b6803a939d154f6ca84a22b78755d6d8acb89a2e8ff164736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000e4e1c0000000000000000000000000000000000000000000000000000000000016e3600000000000000000000000000000000000000000000000000000000000e4e1c00000000000000000000000009b727cea7bfe9beddabacbc55bfb20864c7b2ddd000000000000000000000000000000000000000000000000000000000000000c4379636c69782047616d6573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034359470000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Cyclix Games
Arg [1] : _symbol (string): CYG
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 15000000
Arg [4] : _min_supply (uint256): 1500000
Arg [5] : _max_supply (uint256): 15000000
Arg [6] : _treasuryAddr (address): 0x9b727cEa7bFe9beddAbACBC55BFb20864C7B2dDd
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000e4e1c0
Arg [4] : 000000000000000000000000000000000000000000000000000000000016e360
Arg [5] : 0000000000000000000000000000000000000000000000000000000000e4e1c0
Arg [6] : 0000000000000000000000009b727cea7bfe9beddabacbc55bfb20864c7b2ddd
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [8] : 4379636c69782047616d65730000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 4359470000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
7343:27706:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32106:161;;;;;;;;;;-1:-1:-1;32106:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;32106:161:0;1023:187:1;32477:107:0;;;;;;;;;;-1:-1:-1;32477:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;32561:19:0;32538:7;32561:19;;;:12;:19;;;;;;;32477:107;;;;1613:25:1;;;1601:2;1586:18;32477:107:0;1467:177:1;23956:353:0;;;;;;;;;;-1:-1:-1;23956:353:0;;;;;:::i;:::-;;:::i;7943:19::-;;;;;;;;;;;;;;;;13110:101;;;;;;;;;;-1:-1:-1;13191:12:0;;13110:101;;31908:194;;;;;;;;;;-1:-1:-1;31908:194:0;;;;;:::i;:::-;;:::i;9160:45::-;;;;;;;;;;-1:-1:-1;9160:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9030:25;;;;;;;;;;;;;;;;7479:23;;;;;;;;;;;;;;;;14428:100;;;;;;;;;;-1:-1:-1;14503:17:0;;;;;;;14428:100;;8208:32;;;;;;;;;;;;;;;;8599:21;;;;;;;;;;;;;;;;32707:1404;;;;;;;;;;-1:-1:-1;32707:1404:0;;;;;:::i;:::-;;:::i;34115:314::-;;;;;;;;;;-1:-1:-1;34115:314:0;;;;;:::i;:::-;;:::i;:::-;;13568:98;;;;;;;;;;-1:-1:-1;13645:13:0;;13568:98;;13374:89;;;;;;;;;;-1:-1:-1;13447:8:0;;13374:89;;18749:1808;;;;;;;;;;-1:-1:-1;18749:1808:0;;;;;:::i;:::-;;:::i;7722:52::-;;;;;;;;;;-1:-1:-1;7722:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;9301:47;;;;;;;;;;-1:-1:-1;9301:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;9465:24;;;;;;;;;;;;;;;;34433:487;;;;;;;;;;-1:-1:-1;34433:487:0;;;;;:::i;:::-;;:::i;13780:107::-;;;;;;;;;;-1:-1:-1;13862:17:0;;13780:107;;9062:26;;;;;;;;;;-1:-1:-1;9062:26:0;;;;;;;;7781:21;;;;;;;;;;-1:-1:-1;7781:21:0;;;;;;;;34924:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8997:26::-;;;;;;;;;;;;;;;;24317:194;;;;;;;;;;;;;:::i;7669:46::-;;;;;;;;;;-1:-1:-1;7669:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;14325:95;;;;;;;;;;-1:-1:-1;14399:13:0;;14325:95;;9212:28;;;;;;;;;;;;;;;;8627;;;;;;;;;;;;;;;;26906:93;;;;;;;;;;-1:-1:-1;26906:93:0;;;;;:::i;:::-;;:::i;13895:130::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8454:37::-;;;;;;;;;;-1:-1:-1;8454:37:0;;;;-1:-1:-1;;;;;8454:37:0;;;;;;-1:-1:-1;;;;;4374:32:1;;;4356:51;;4344:2;4329:18;8454:37:0;4210:203:1;9434:24:0;;;;;;;;;;;;;;;;11724:689;;;;;;;;;;-1:-1:-1;11724:689:0;;;;;:::i;:::-;;:::i;7573:44::-;;;;;;;;;;-1:-1:-1;7573:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;6447:103;;;;;;;;;;;;;:::i;7624:38::-;;;;;;;;;;-1:-1:-1;7624:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9095:28;;;;;;;;;;-1:-1:-1;9095:28:0;;;;;;;;;;;8064:27;;;;;;;;;;;;;;;;8701:20;;;;;;;;;;-1:-1:-1;8701:20:0;;;;;;;;7391:29;;;;;;;;;;-1:-1:-1;7391:29:0;;;;-1:-1:-1;;;;;7391:29:0;;;8764:25;;;;;;;;;;-1:-1:-1;8764:25:0;;;;;;;;8333:26;;;;;;;;;;;;;;;;7509:25;;;;;;;;;;;;;;;;13674:98;;;;;;;;;;-1:-1:-1;13751:13:0;;13674:98;;7917:19;;;;;;;;;;;;;;;;5772:87;;;;;;;;;;-1:-1:-1;5818:7:0;5845:6;-1:-1:-1;;;;;5845:6:0;5772:87;;7452:20;;;;;;;;;;;;;:::i;13471:89::-;;;;;;;;;;-1:-1:-1;13544:8:0;;13471:89;;7541:25;;;;;;;;;;;;;;;;12421:526;;;;;;;;;;-1:-1:-1;12421:526:0;;;;;:::i;:::-;;:::i;9247:47::-;;;;;;;;;;-1:-1:-1;9247:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;26816:86;;;;;;;;;;-1:-1:-1;26816:86:0;;;;;:::i;:::-;;:::i;22949:294::-;;;;;;;;;;-1:-1:-1;22949:294:0;;;;;:::i;:::-;;:::i;11498:91::-;;;;;;;;;;-1:-1:-1;11498:91:0;;;;;:::i;:::-;;:::i;8539:34::-;;;;;;;;;;;;;;;;8031:26;;;;;;;;;;;;;;;;27003:163;;;;;;;;;;-1:-1:-1;27003:163:0;;;;;:::i;:::-;;:::i;8662:32::-;;;;;;;;;;;;;;;;24519:358;;;;;;;;;;-1:-1:-1;24519:358:0;;;;;:::i;:::-;;:::i;14177:140::-;;;;;;;;;;-1:-1:-1;14177:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14282:27:0;14255:7;14282:27;;;:17;:27;;;;;;;14177:140;14033:136;;;;;;;;;;-1:-1:-1;14033:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;14141:20:0;14114:7;14141:20;;;:10;:20;;;;;;;14033:136;8303:23;;;;;;;;;;;;;;;;23554:191;;;;;;;;;;-1:-1:-1;23554:191:0;;;;;:::i;:::-;;:::i;8273:23::-;;;;;;;;;;;;;;;;8170:31;;;;;;;;;;;;;;;;8498:34;;;;;;;;;;;;;;;;13219:147;;;;;;;;;;-1:-1:-1;13219:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;13330:18:0;;;13303:7;13330:18;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;13219:147;20565:1755;;;;;;;;;;-1:-1:-1;20565:1755:0;;;;;:::i;:::-;;:::i;8366:27::-;;;;;;;;;;;;;;;;23753:195;;;;;;;;;;-1:-1:-1;23753:195:0;;;;;:::i;:::-;;:::i;11597:119::-;;;;;;;;;;-1:-1:-1;11597:119:0;;;;;:::i;:::-;;:::i;9355:24::-;;;;;;;;;;-1:-1:-1;9355:24:0;;;;;:::i;:::-;;:::i;6705:220::-;;;;;;;;;;-1:-1:-1;6705:220:0;;;;;:::i;:::-;;:::i;22328:613::-;;;;;;;;;;-1:-1:-1;22328:613:0;;;;;:::i;:::-;;:::i;9130:23::-;;;;;;;;;;-1:-1:-1;9130:23:0;;;;;;;;;;;32588:115;;;;;;;;;;-1:-1:-1;32588:115:0;;;;;:::i;:::-;;:::i;23251:295::-;;;;;;;;;;-1:-1:-1;23251:295:0;;;;;:::i;:::-;;:::i;7427:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32106:161::-;32175:4;32205:10;32229:34;32205:10;32246:8;32256:6;32229:8;:34::i;:::-;32222:41;;;32106:161;;;;;:::o;23956:353::-;24035:4;5658:13;:11;:13::i;:::-;-1:-1:-1;;;;;24060:17:0;::::1;24052:45;;;;-1:-1:-1::0;;;24052:45:0::1;;;;;;;:::i;:::-;;;;;;;;;24116:10;24108:52;;;;-1:-1:-1::0;;;24108:52:0::1;;;;;;;:::i;:::-;24189:6;24173:12;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;24206:14:0;::::1;;::::0;;;:9:::1;:14;::::0;;;;:24;;24224:6;;24206:14;:24:::1;::::0;24224:6;;24206:24:::1;:::i;:::-;::::0;;;-1:-1:-1;;24246:33:0::1;::::0;1613:25:1;;;24268:1:0::1;::::0;-1:-1:-1;;;;;24246:33:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;24246:33:0;1601:2:1;1586:18;24246:33:0::1;;;;;;;;-1:-1:-1::0;24297:4:0::1;23956:353:::0;;;;:::o;31908:194::-;-1:-1:-1;;;;;32005:17:0;;31992:4;32005:17;;;:10;:17;;;;;;;;32023:10;32005:29;;;;;;;:39;;32038:6;;32005:29;31992:4;;32005:39;;32038:6;;32005:39;:::i;:::-;;;;-1:-1:-1;32051:29:0;;-1:-1:-1;32061:5:0;32068:3;32073:6;32051:9;:29::i;:::-;-1:-1:-1;32094:4:0;;31908:194;-1:-1:-1;;;;31908:194:0:o;32707:1404::-;32908:11;;-1:-1:-1;;;;;32884:20:0;;32780;32884;;;:10;:20;;;;;;32780;;;;32866:38;;:15;:38;:::i;:::-;32865:54;;;;:::i;:::-;33009:11;;-1:-1:-1;;;;;32978:27:0;;32928:28;32978:27;;;:17;:27;;;;;;32832:87;;-1:-1:-1;32928:28:0;32960:45;;:15;:45;:::i;:::-;32959:61;;;;:::i;:::-;32928:92;;33028:34;33090:10;;33065:22;:35;;;;:::i;:::-;33028:72;;33108:32;33166:10;;33143:20;:33;;;;:::i;:::-;33108:68;-1:-1:-1;33183:30:0;33216:53;33108:68;33216:26;:53;:::i;:::-;33183:86;;33310:4;33282:24;:32;33278:100;;-1:-1:-1;;;;;;;;33350:19:0;;;;;;;:9;:19;;;;;;;32707:1404;-1:-1:-1;;;32707:1404:0:o;33278:100::-;33418:1;33394:20;:25;33390:680;;33446:1;33431:16;;33390:680;;;33500:22;33476:20;:46;33472:598;;-1:-1:-1;;;;;33561:19:0;;33535:23;33561:19;;;:9;:19;;;;;;33656:4;33607:46;33561:19;33608:26;33607:46;:::i;:::-;:53;;;;:::i;:::-;-1:-1:-1;;;;;33702:19:0;;;;;;:9;:19;;;;;;33592:68;;-1:-1:-1;33687:34:0;;33686:73;;33747:12;33686:73;;;-1:-1:-1;;;;;33725:19:0;;;;;;:9;:19;;;;;;33686:73;33671:88;;33524:243;33472:598;;;33799:23;33855:29;33861:22;33855:4;:29;:::i;:::-;-1:-1:-1;;;;;33825:19:0;;;;;;:9;:19;;;;;;:26;;33847:4;33825:26;:::i;:::-;:60;;;;:::i;:::-;33799:86;-1:-1:-1;33958:4:0;33911:44;33799:86;33912:24;33911:44;:::i;:::-;:51;;;;:::i;:::-;-1:-1:-1;;;;;34005:19:0;;;;;;:9;:19;;;;;;33896:66;;-1:-1:-1;33990:34:0;;33989:73;;34050:12;33989:73;;;-1:-1:-1;;;;;34028:19:0;;;;;;:9;:19;;;;;;33989:73;33974:88;;33778:292;33472:598;34084:21;;;;;32707:1404;;;:::o;34115:314::-;5658:13;:11;:13::i;:::-;-1:-1:-1;;;;;34206:16:0;::::1;34198:54;;;::::0;-1:-1:-1;;;34198:54:0;;10042:2:1;34198:54:0::1;::::0;::::1;10024:21:1::0;10081:2;10061:18;;;10054:30;-1:-1:-1;;;10100:18:1;;;10093:55;10165:18;;34198:54:0::1;9840:349:1::0;34198:54:0::1;34292:6;34267:21;:31;;34259:68;;;::::0;-1:-1:-1;;;34259:68:0;;10396:2:1;34259:68:0::1;::::0;::::1;10378:21:1::0;10435:2;10415:18;;;10408:30;10474:26;10454:18;;;10447:54;10518:18;;34259:68:0::1;10194:348:1::0;34259:68:0::1;34341:9;34356:2;-1:-1:-1::0;;;;;34356:7:0::1;34371:6;34356:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34340:42;;;34397:4;34389:36;;;::::0;-1:-1:-1;;;34389:36:0;;10959:2:1;34389:36:0::1;::::0;::::1;10941:21:1::0;10998:2;10978:18;;;10971:30;-1:-1:-1;;;11017:18:1;;;11010:49;11076:18;;34389:36:0::1;10757:343:1::0;34389:36:0::1;34191:238;34115:314:::0;;:::o;18749:1808::-;18816:4;-1:-1:-1;;;;;18841:22:0;;18833:50;;;;-1:-1:-1;;;18833:50:0;;;;;;;:::i;:::-;18902:16;;;;;;;;:24;;:16;:24;18894:59;;;;-1:-1:-1;;;18894:59:0;;11307:2:1;18894:59:0;;;11289:21:1;11346:2;11326:18;;;11319:30;-1:-1:-1;;;11365:18:1;;;11358:52;11427:18;;18894:59:0;11105:346:1;18894:59:0;18675:20;;18725:8;18964:110;;;;-1:-1:-1;;;18964:110:0;;11658:2:1;18964:110:0;;;11640:21:1;11697:2;11677:18;;;11670:30;11736:34;11716:18;;;11709:62;11807:34;11787:18;;;11780:62;-1:-1:-1;;;11858:19:1;;;11851:43;11911:19;;18964:110:0;11456:480:1;18964:110:0;-1:-1:-1;;;;;19094:16:0;;;;;;:6;:16;;;;;;;;19093:17;:45;;;;-1:-1:-1;;;;;;19115:23:0;;;;;;:13;:23;;;;;;;;19114:24;19093:45;19085:77;;;;-1:-1:-1;;;19085:77:0;;12143:2:1;19085:77:0;;;12125:21:1;12182:2;12162:18;;;12155:30;-1:-1:-1;;;12201:18:1;;;12194:49;12260:18;;19085:77:0;11941:343:1;19085:77:0;19206:13;;19191:10;19181:21;;;;:9;:21;;;;;;:38;;19173:88;;;;-1:-1:-1;;;19173:88:0;;12491:2:1;19173:88:0;;;12473:21:1;12530:2;12510:18;;;12503:30;12569:34;12549:18;;;12542:62;-1:-1:-1;;;12620:18:1;;;12613:35;12665:19;;19173:88:0;12289:401:1;19173:88:0;19322:11;;-1:-1:-1;;;;;19300:20:0;;;;;;:10;:20;;;;;;19337:1;;19322:11;19282:38;;:15;:38;:::i;:::-;19281:52;;;;:::i;:::-;:57;;19272:106;;;;-1:-1:-1;;;19272:106:0;;12897:2:1;19272:106:0;;;12879:21:1;12936:2;12916:18;;;12909:30;12975:34;12955:18;;;12948:62;-1:-1:-1;;;13026:18:1;;;13019:33;13069:19;;19272:106:0;12695:399:1;19272:106:0;19446:11;;-1:-1:-1;;;;;19416:27:0;;;;;;:17;:27;;;;;;19461:1;;19446:11;19398:45;;:15;:45;:::i;:::-;19397:60;;;;:::i;:::-;:65;;19389:101;;;;-1:-1:-1;;;19389:101:0;;13301:2:1;19389:101:0;;;13283:21:1;13340:2;13320:18;;;13313:30;-1:-1:-1;;;13359:18:1;;;13352:52;13421:18;;19389:101:0;13099:346:1;19389:101:0;19521:10;-1:-1:-1;;;;;19509:22:0;;;19501:54;;;;-1:-1:-1;;;19501:54:0;;13652:2:1;19501:54:0;;;13634:21:1;13691:2;13671:18;;;13664:30;-1:-1:-1;;;13710:18:1;;;13703:49;13769:18;;19501:54:0;13450:343:1;19501:54:0;19586:4;;-1:-1:-1;;;;;19586:4:0;;;19574:16;;;;19566:46;;;;-1:-1:-1;;;19566:46:0;;14000:2:1;19566:46:0;;;13982:21:1;14039:2;14019:18;;;14012:30;-1:-1:-1;;;14058:18:1;;;14051:47;14115:18;;19566:46:0;13798:341:1;19566:46:0;19625:20;19650:34;19675:8;19650:24;:34::i;:::-;19624:60;-1:-1:-1;19697:18:0;19740:3;19719:17;19624:60;19734:2;19719:17;:::i;:::-;19718:25;;;;:::i;:::-;19697:46;-1:-1:-1;19757:20:0;19801:3;19780:17;:12;19795:2;19780:17;:::i;:::-;19779:25;;;;:::i;:::-;19757:47;-1:-1:-1;19819:22:0;19866:3;19845:17;:12;19860:2;19845:17;:::i;:::-;19844:25;;;;:::i;:::-;19819:50;;19883:27;19889:8;19899:10;19883:5;:27::i;:::-;-1:-1:-1;;;;;;19931:19:0;;;;;;:9;:19;;;;;:35;;19954:12;;19931:19;:35;;19954:12;;19931:35;:::i;:::-;;;;-1:-1:-1;;19987:10:0;19977:21;;;;:9;:21;;;;;:37;;20002:12;;19977:21;:37;;20002:12;;19977:37;:::i;:::-;;;;-1:-1:-1;;20030:44:0;;1613:25:1;;;20049:10:0;;-1:-1:-1;;;;;20030:44:0;;;-1:-1:-1;;;;;;;;;;;20030:44:0;1601:2:1;1586:18;20030:44:0;;;;;;;-1:-1:-1;;;;;20087:19:0;;;;;;:9;:19;;;;;:37;;20110:14;;20087:19;:37;;20110:14;;20087:37;:::i;:::-;;;;-1:-1:-1;;20145:12:0;;;;;-1:-1:-1;;;;;20145:12:0;20135:23;;;;:9;:23;;;;;:41;;20162:14;;20135:23;:41;;20162:14;;20135:41;:::i;:::-;;;;-1:-1:-1;;20211:12:0;;20192:48;;-1:-1:-1;;;;;20211:12:0;;;;;;;20192:48;;;-1:-1:-1;;;;;;;;;;;20192:48:0;;;20225:14;1613:25:1;;1601:2;1586:18;;1467:177;20192:48:0;;;;;;;;-1:-1:-1;;;;;20253:27:0;;;;;;:17;:27;;;;;;;;20283:15;20253:45;;20324:10;20311:24;;:12;:24;;;;;:40;;20339:12;;20253:27;20311:40;;20339:12;;20311:40;:::i;:::-;;;;-1:-1:-1;;20375:10:0;20362:24;;;;:12;:24;;;;;:29;;20390:1;;20362:24;:29;;20390:1;;20362:29;:::i;:::-;;;;-1:-1:-1;;20418:10:0;20409:20;;;;:8;:20;;;;;;;;20404:120;;20455:10;20446:20;;;;:8;:20;;;;;:27;;-1:-1:-1;;20446:27:0;20469:4;20446:27;;;;;;20488:7;:24;;;;;;;;;;;;;;-1:-1:-1;;;;;;20488:24:0;;;;;;20404:120;-1:-1:-1;20543:4:0;;18749:1808;-1:-1:-1;;;;;18749:1808:0:o;34433:487::-;5658:13;:11;:13::i;:::-;-1:-1:-1;;;;;34528:26:0;::::1;34520:60;;;::::0;-1:-1:-1;;;34520:60:0;;14476:2:1;34520:60:0::1;::::0;::::1;14458:21:1::0;14515:2;14495:18;;;14488:30;-1:-1:-1;;;14534:18:1;;;14527:51;14595:18;;34520:60:0::1;14274:345:1::0;34520:60:0::1;-1:-1:-1::0;;;;;34595:16:0;::::1;34587:54;;;::::0;-1:-1:-1;;;34587:54:0;;10042:2:1;34587:54:0::1;::::0;::::1;10024:21:1::0;10081:2;10061:18;;;10054:30;-1:-1:-1;;;10100:18:1;;;10093:55;10165:18;;34587:54:0::1;9840:349:1::0;34587:54:0::1;34723:30;::::0;-1:-1:-1;;;34723:30:0;;34747:4:::1;34723:30;::::0;::::1;4356:51:1::0;34676:12:0;;34654::::1;::::0;-1:-1:-1;;;;;34723:15:0;::::1;::::0;::::1;::::0;4329:18:1;;34723:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34696:57;;34787:1;34768:16;:20;34760:54;;;::::0;-1:-1:-1;;;34760:54:0;;15015:2:1;34760:54:0::1;::::0;::::1;14997:21:1::0;15054:2;15034:18;;;15027:30;-1:-1:-1;;;15073:18:1;;;15066:51;15134:18;;34760:54:0::1;14813:345:1::0;34760:54:0::1;34835:36;::::0;-1:-1:-1;;;34835:36:0;;-1:-1:-1;;;;;15355:32:1;;;34835:36:0::1;::::0;::::1;15337:51:1::0;15404:18;;;15397:34;;;34823:9:0::1;::::0;34835:14;;::::1;::::0;::::1;::::0;15310:18:1;;34835:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34823:48;;34886:4;34878:38;;;::::0;-1:-1:-1;;;34878:38:0;;15894:2:1;34878:38:0::1;::::0;::::1;15876:21:1::0;15933:2;15913:18;;;15906:30;-1:-1:-1;;;15952:18:1;;;15945:51;16013:18;;34878:38:0::1;15692:345:1::0;34878:38:0::1;34513:407;;;34433:487:::0;;:::o;34924:89::-;34970:16;35002:7;34995:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34995:14:0;;;;;;;;;;;;;;;;;;;;;;;34924:89;:::o;24317:194::-;24378:4;5658:13;:11;:13::i;:::-;24403:10:::1;24395:52;;;;-1:-1:-1::0;;;24395:52:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;24460:13:0::1;:21:::0;;-1:-1:-1;;24460:21:0::1;::::0;;;24317:194;:::o;26906:93::-;5658:13;:11;:13::i;:::-;26971::::1;:24:::0;26906:93::o;13895:130::-;13952:19;;:::i;:::-;13985:32;;;;;;;;;;13992:25;13985:32;;-1:-1:-1;;;;;13985:32:0;;;;;;;;;;;;;;;;;;;;;;;13895:130;:::o;11724:689::-;11832:35;;;11824:71;;;;-1:-1:-1;;;11824:71:0;;16244:2:1;11824:71:0;;;16226:21:1;16283:2;16263:18;;;16256:30;16322:25;16302:18;;;16295:53;16365:18;;11824:71:0;16042:347:1;11824:71:0;11913:9;11908:498;11928:21;;;11908:498;;;12004:1;11979:10;;11990:1;11979:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11979:27:0;;11971:67;;;;-1:-1:-1;;;11971:67:0;;16728:2:1;11971:67:0;;;16710:21:1;16767:2;16747:18;;;16740:30;16806:29;16786:18;;;16779:57;16853:18;;11971:67:0;16526:351:1;11971:67:0;12053:22;12098:8;;12092:2;:14;;;;:::i;:::-;12078:7;;12086:1;12078:10;;;;;;;:::i;:::-;;;;;;;:29;;;;:::i;:::-;12158:10;12148:21;;;;:9;:21;;;;;;12053:54;;-1:-1:-1;12130:39:0;;;12122:86;;;;-1:-1:-1;;;12122:86:0;;18458:2:1;12122:86:0;;;18440:21:1;18497:2;18477:18;;;18470:30;18536:34;18516:18;;;18509:62;-1:-1:-1;;;18587:18:1;;;18580:32;18629:19;;12122:86:0;18256:398:1;12122:86:0;12235:10;12225:21;;;;:9;:21;;;;;:39;;12250:14;;12225:21;:39;;12250:14;;12225:39;:::i;:::-;;;;-1:-1:-1;12307:14:0;;-1:-1:-1;12279:9:0;:24;12289:10;;12300:1;12289:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12279:24:0;-1:-1:-1;;;;;12279:24:0;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;12364:10:0;;-1:-1:-1;12364:10:0;12375:1;12364:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12343:51:0;12352:10;-1:-1:-1;;;;;12343:51:0;-1:-1:-1;;;;;;;;;;;12379:14:0;12343:51;;;;1613:25:1;;1601:2;1586:18;;1467:177;12343:51:0;;;;;;;;-1:-1:-1;11951:3:0;;;;:::i;:::-;;;;11908:498;;6447:103;5658:13;:11;:13::i;:::-;6512:30:::1;6539:1;6512:18;:30::i;:::-;6447:103::o:0;7452:20::-;;;;;;;:::i;12421:526::-;5658:13;:11;:13::i;:::-;12617:12:::1;:27:::0;;;;12655:11:::1;:26:::0;;;;12692:8:::1;:23:::0;;;12726:8:::1;:23:::0;;;;12761:17:::1;:37:::0;12809:16:::1;:36:::0;12856:13:::1;:33:::0;;;12900:13:::1;:33:::0;12421:526::o;26816:86::-;5658:13;:11;:13::i;:::-;26875::::1;:23:::0;;;::::1;;-1:-1:-1::0;;;26875:23:0::1;-1:-1:-1::0;;;;26875:23:0;;::::1;::::0;;;::::1;::::0;;26816:86::o;22949:294::-;23027:4;5658:13;:11;:13::i;:::-;23049:6:::1;23044:170;23061:21:::0;;::::1;23044:170;;;23137:1;23112:10:::0;;23123:1;23112:13;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23112:27:0::1;::::0;23104:55:::1;;;;-1:-1:-1::0;;;23104:55:0::1;;;;;;;:::i;:::-;23198:4;23174:6;:21;23181:10;;23192:1;23181:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23174:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23174:21:0;:28;;-1:-1:-1;;23174:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23084:3;::::1;::::0;::::1;:::i;:::-;;;;23044:170;;;-1:-1:-1::0;23231:4:0::1;::::0;22949:294;-1:-1:-1;;;22949:294:0:o;11498:91::-;5658:13;:11;:13::i;:::-;11569:4:::1;:12:::0;;-1:-1:-1;;;;;;11569:12:0::1;-1:-1:-1::0;;;;;11569:12:0;;;::::1;::::0;;;::::1;::::0;;11498:91::o;27003:163::-;27067:4;27097:10;27114:30;27097:10;27132:3;27137:6;27114:9;:30::i;24519:358::-;24599:4;5658:13;:11;:13::i;:::-;24624:10:::1;24616:52;;;;-1:-1:-1::0;;;24616:52:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24687:29:0;::::1;24679:57;;;;-1:-1:-1::0;;;24679:57:0::1;;;;;;;:::i;:::-;24769:14;::::0;-1:-1:-1;;;;;24769:14:0::1;24755:10;:28;24747:55;;;::::0;-1:-1:-1;;;24747:55:0;;19001:2:1;24747:55:0::1;::::0;::::1;18983:21:1::0;19040:2;19020:18;;;19013:30;-1:-1:-1;;;19059:18:1;;;19052:44;19113:18;;24747:55:0::1;18799:338:1::0;24747:55:0::1;-1:-1:-1::0;24815:14:0::1;:32:::0;;-1:-1:-1;;;;;24815:32:0;::::1;-1:-1:-1::0;;;;;;24815:32:0;;::::1;;::::0;;24519:358;;;:::o;23554:191::-;5658:13;:11;:13::i;:::-;23642:6:::1;23638:100;23654:18:::0;;::::1;23638:100;;;23722:4;23694:13;:25;23708:7;;23716:1;23708:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23694:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23694:25:0;:32;;-1:-1:-1;;23694:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23674:3;::::1;::::0;::::1;:::i;:::-;;;;23638:100;;20565:1755:::0;20633:4;-1:-1:-1;;;;;20658:22:0;;20650:50;;;;-1:-1:-1;;;20650:50:0;;;;;;;:::i;:::-;18675:20;;20711:56;;;;-1:-1:-1;;;20711:56:0;;19344:2:1;20711:56:0;;;19326:21:1;19383:2;19363:18;;;19356:30;19422:25;19402:18;;;19395:53;19465:18;;20711:56:0;19142:347:1;20711:56:0;20786:16;;;;;;;;:24;;:16;:24;20778:59;;;;-1:-1:-1;;;20778:59:0;;11307:2:1;20778:59:0;;;11289:21:1;11346:2;11326:18;;;11319:30;-1:-1:-1;;;11365:18:1;;;11358:52;11427:18;;20778:59:0;11105:346:1;23753:195:0;5658:13;:11;:13::i;:::-;23844:6:::1;23840:101;23856:18:::0;;::::1;23840:101;;;23924:5;23896:13;:25;23910:7;;23918:1;23910:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23896:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23896:25:0;:33;;-1:-1:-1;;23896:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23876:3;::::1;::::0;::::1;:::i;:::-;;;;23840:101;;11597:119:::0;5658:13;:11;:13::i;:::-;11676:14:::1;:32:::0;;-1:-1:-1;;11676:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11597:119::o;9355:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9355:24:0;;-1:-1:-1;9355:24:0;:::o;6705:220::-;5658:13;:11;:13::i;:::-;-1:-1:-1;;;;;6790:22:0;::::1;6786:93;;6836:31;::::0;-1:-1:-1;;;6836:31:0;;6864:1:::1;6836:31;::::0;::::1;4356:51:1::0;4329:18;;6836:31:0::1;4210:203:1::0;6786:93:0::1;6889:28;6908:8;6889:18;:28::i;:::-;6705:220:::0;:::o;22328:613::-;22431:4;5658:13;:11;:13::i;:::-;22456:10:::1;22448:52;;;;-1:-1:-1::0;;;22448:52:0::1;;;;;;;:::i;:::-;22518:9;22513:397;22537:3;22533:1;:7;22513:397;;;22586:1;22566:5:::0;22572:1;22566:8:::1;::::0;::::1;;;;;:::i;:::-;;;;;-1:-1:-1::0;;;;;22566:22:0::1;;22562:337;;22634:7;22642:1;22634:10;;;;;;;:::i;:::-;;;;;22609:9;:21;22619:10;-1:-1:-1::0;;;;;22609:21:0::1;-1:-1:-1::0;;;;;22609:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;22686:7:0;;-1:-1:-1;22694:1:0;22686:10:::1;::::0;::::1;;;;;:::i;:::-;;;;;22663:9;:19;22673:5;22679:1;22673:8;;;;;;;:::i;:::-;;;;;-1:-1:-1::0;;;;;22663:19:0::1;-1:-1:-1::0;;;;;22663:19:0::1;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;22738:15:0::1;::::0;-1:-1:-1;22715:10:0::1;:20;22726:5:::0;22732:1;22726:8:::1;::::0;::::1;;;;;:::i;:::-;;;;;-1:-1:-1::0;;;;;22715:20:0::1;-1:-1:-1::0;;;;;22715:20:0::1;;;;;;;;;;;;:38;;;;22802:15;22772:17;:27;22790:5;22796:1;22790:8;;;;;;;:::i;:::-;;;;;-1:-1:-1::0;;;;;22772:27:0::1;-1:-1:-1::0;;;;;22772:27:0::1;;;;;;;;;;;;:45;;;;22862:5;22868:1;22862:8;;;;;;;:::i;:::-;;;;::::0;-1:-1:-1;;;;;22841:42:0::1;22850:10;-1:-1:-1::0;;;;;;;;;;;22872:7:0;22880:1;22872:10:::1;::::0;::::1;;;;;:::i;:::-;;;;;22841:42;;;;1613:25:1::0;;1601:2;1586:18;;1467:177;22841:42:0::1;;;;;;;;22562:337;22542:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22513:397;;32588:115:::0;-1:-1:-1;;;;;32672:19:0;;32649:7;32672:19;;;:12;:19;;;;;;:27;;32694:5;;32672:27;:::i;23251:295::-;23329:4;5658:13;:11;:13::i;:::-;23351:6:::1;23346:171;23363:21:::0;;::::1;23346:171;;;23439:1;23414:10:::0;;23425:1;23414:13;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23414:27:0::1;::::0;23406:55:::1;;;;-1:-1:-1::0;;;23406:55:0::1;;;;;;;:::i;:::-;23500:5;23476:6;:21;23483:10;;23494:1;23483:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23476:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23476:21:0;:29;;-1:-1:-1;;23476:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23386:3;::::1;::::0;::::1;:::i;:::-;;;;23346:171;;32271:202:::0;-1:-1:-1;;;;;32368:18:0;;;32355:4;32368:18;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;:37;;;32417:34;1613:25:1;;;32355:4:0;;32368:28;:18;32417:34;;1586:18:1;32417:34:0;;;;;;;;-1:-1:-1;32465:4:0;32271:202;;;;;:::o;5937:166::-;5818:7;5845:6;-1:-1:-1;;;;;5845:6:0;3861:10;5997:23;5993:103;;6044:40;;-1:-1:-1;;;6044:40:0;;3861:10;6044:40;;;4356:51:1;4329:18;;6044:40:0;4210:203:1;27170:4513:0;27251:4;27272:6;27282:1;27272:11;27264:54;;;;-1:-1:-1;;;27264:54:0;;19696:2:1;27264:54:0;;;19678:21:1;19735:2;19715:18;;;19708:30;19774:32;19754:18;;;19747:60;19824:18;;27264:54:0;19494:354:1;27264:54:0;-1:-1:-1;;;;;27333:17:0;;27325:45;;;;-1:-1:-1;;;27325:45:0;;20055:2:1;27325:45:0;;;20037:21:1;20094:2;20074:18;;;20067:30;-1:-1:-1;;;20113:18:1;;;20106:45;20168:18;;27325:45:0;19853:339:1;27325:45:0;27382:13;;-1:-1:-1;;;27382:13:0;;;;27379:651;;;-1:-1:-1;;;;;27422:20:0;;;;;;:13;:20;;;;;;;;27421:21;:44;;;;-1:-1:-1;;;;;;27447:18:0;;;;;;:13;:18;;;;;;;;27446:19;27421:44;27417:606;;;27487:8;;;;27486:9;:26;;;;-1:-1:-1;27508:4:0;;-1:-1:-1;;;;;27499:13:0;;;27508:4;;27499:13;27486:26;:44;;;;-1:-1:-1;5818:7:0;5845:6;-1:-1:-1;;;;;27516:14:0;;;5845:6;;27516:14;;27486:44;27483:529;;;27601:3;27588:12;;:16;;;;:::i;:::-;-1:-1:-1;;;;;27569:14:0;;;;;;:9;:14;;;;;;27560:23;;:6;:23;:::i;:::-;:44;;27552:96;;;;-1:-1:-1;;;27552:96:0;;;;;;;:::i;:::-;27483:529;;;27675:8;;;;27674:9;:24;;;;-1:-1:-1;27694:4:0;;-1:-1:-1;;;;;27687:11:0;;;27694:4;;27687:11;27674:24;:44;;;;-1:-1:-1;5818:7:0;5845:6;-1:-1:-1;;;;;27702:16:0;;;5845:6;;27702:16;;27674:44;27671:341;;;27829:4;27816:12;;:17;;;;:::i;:::-;27806:6;:27;;27798:60;;;;-1:-1:-1;;;27798:60:0;;20807:2:1;27798:60:0;;;20789:21:1;20846:2;20826:18;;;20819:30;-1:-1:-1;;;20865:18:1;;;20858:51;20926:18;;27798:60:0;20605:345:1;27671:341:0;27948:3;27935:12;;:16;;;;:::i;:::-;-1:-1:-1;;;;;27916:14:0;;;;;;:9;:14;;;;;;27907:23;;:6;:23;:::i;:::-;:44;;27899:96;;;;-1:-1:-1;;;27899:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28055:20:0;;;;;;:13;:20;;;;;;;;;28054:46;;-1:-1:-1;;;;;;28081:18:0;;;;;;:13;:18;;;;;;;;28054:46;:80;;;-1:-1:-1;28114:4:0;;-1:-1:-1;;;;;28105:13:0;;;28114:4;;28105:13;;;;:28;;-1:-1:-1;28129:4:0;;-1:-1:-1;;;;;28122:11:0;;;28129:4;;28122:11;;28105:28;28040:3341;;;28156:35;28172:5;28179:3;28184:6;28156:15;:35::i;:::-;;28040:3341;;;28238:13;;:18;;28254:2;28238:18;:::i;:::-;28220:15;:36;28216:756;;;28293:10;;28277:12;;:26;28273:688;;28325:9;:16;;-1:-1:-1;;28325:16:0;28337:4;28325:16;;;28360:7;:5;:7::i;:::-;-1:-1:-1;28391:8:0;;;;28386:263;;28424:17;28459:10;;28444:12;;:25;;;;:::i;:::-;28424:45;-1:-1:-1;28540:1:0;28524:13;28424:45;28536:1;28524:13;:::i;:::-;28506:14;;-1:-1:-1;;;;;28506:14:0;28496:25;;;;:9;:25;;;;;;:41;;;;:::i;:::-;:45;28492:138;;;28576:14;;28570:36;;-1:-1:-1;;;;;28576:14:0;28592:13;:9;28604:1;28592:13;:::i;:::-;28570:5;:36::i;:::-;;28492:138;28401:248;28386:263;28273:688;;;28690:10;;28674:12;;:26;28670:291;;28721:9;:17;;-1:-1:-1;;28721:17:0;;;28757:7;:5;:7::i;:::-;;28783:17;28816:12;;28803:10;;:25;;;;:::i;:::-;28853:14;;28783:45;;-1:-1:-1;28847:36:0;;-1:-1:-1;;;;;28853:14:0;28869:13;28783:45;28881:1;28869:13;:::i;:::-;28847:5;:36::i;:::-;-1:-1:-1;28933:11:0;:9;28943:1;28933:11;:::i;:::-;28913:14;;-1:-1:-1;;;;;28913:14:0;28903:25;;;;:9;:25;;;;;:42;;:25;;;:42;;;;;:::i;:::-;;;;-1:-1:-1;;;28670:291:0;28988:19;;29011:1;28988:24;28984:67;;29029:10;:8;:10::i;:::-;;28984:67;29079:4;;29063:6;:20;;-1:-1:-1;;29063:20:0;-1:-1:-1;;;;;29072:11:0;;;29079:4;;29072:11;;;;29063:20;;;;;;29105:6;:33;;29130:8;;29105:33;;;29114:13;;29105:33;29094:8;:44;29161:6;;;;:33;;29186:8;;29161:33;;;29170:13;;29161:33;29150:8;:44;29220:6;;;;:39;;29248:11;;29220:39;;;29229:16;;29220:39;29206:11;:53;29286:6;;;;:41;;29315:12;;29286:41;;;29295:17;;29286:41;29271:12;:56;29345:9;;;;:35;;;;-1:-1:-1;29358:14:0;;;;:22;;:14;:22;29345:35;29341:2033;;;29397:16;29416:37;29436:6;29444:8;;29416:19;:37::i;:::-;29397:56;;29468:19;29490:40;29510:6;29518:11;;29490:19;:40::i;:::-;29468:62;;29545:20;29568:41;29588:6;29596:12;;29568:19;:41::i;:::-;29545:64;-1:-1:-1;29624:14:0;29545:64;29661:11;29641:17;29650:8;29641:6;:17;:::i;:::-;:31;;;;:::i;:::-;:46;;;;:::i;:::-;29624:63;;29704:22;29710:5;29717:8;29704:5;:22::i;:::-;-1:-1:-1;;;;;;29741:16:0;;;;;;:9;:16;;;;;:26;;29761:6;;29741:16;:26;;29761:6;;29741:26;:::i;:::-;;;;-1:-1:-1;;;;;;;29782:14:0;;;;;;:9;:14;;;;;:24;;29800:6;;29782:14;:24;;29800:6;;29782:24;:::i;:::-;;;;;;;;29842:3;-1:-1:-1;;;;;29826:28:0;29835:5;-1:-1:-1;;;;;29826:28:0;-1:-1:-1;;;;;;;;;;;29847:6:0;29826:28;;;;1613:25:1;;1601:2;1586:18;;1467:177;29826:28:0;;;;;;;;-1:-1:-1;;;;;29871:16:0;;;;;;:9;:16;;;;;:32;;29891:12;;29871:16;:32;;29891:12;;29871:32;:::i;:::-;;;;-1:-1:-1;;29928:12:0;;;;;-1:-1:-1;;;;;29928:12:0;29918:23;;;;:9;:23;;;;;:39;;29945:12;;29918:23;:39;;29945:12;;29918:39;:::i;:::-;;;;-1:-1:-1;;29993:12:0;;29977:43;;-1:-1:-1;;;;;29993:12:0;;;;;;;29977:43;;;-1:-1:-1;;;;;;;;;;;29977:43:0;;;30007:12;1613:25:1;;1601:2;1586:18;;1467:177;29977:43:0;;;;;;;;-1:-1:-1;;;;;30049:16:0;;;;;;:9;:16;;;;;:31;;30069:11;;30049:16;:31;;30069:11;;30049:31;:::i;:::-;;;;-1:-1:-1;;30105:14:0;;-1:-1:-1;;;;;30105:14:0;30095:25;;;;:9;:25;;;;;:40;;30124:11;;30095:25;:40;;30124:11;;30095:40;:::i;:::-;;;;-1:-1:-1;;30171:14:0;;30155:44;;1613:25:1;;;-1:-1:-1;;;;;30171:14:0;;;;30155:44;;;-1:-1:-1;;;;;;;;;;;30155:44:0;1601:2:1;1586:18;30155:44:0;;;;;;;30238:1;30230:4;;:9;;;;;;;:::i;:::-;;;;-1:-1:-1;30254:45:0;;-1:-1:-1;30269:6:0;30277:9;30288:5;30295:3;30254:14;:45::i;:::-;;29382:929;;;;29341:2033;;;30332:9;;;;30331:10;:36;;;;-1:-1:-1;30345:14:0;;;;:22;;:14;:22;30331:36;30327:1047;;;30384:16;30403:37;30423:6;30431:8;;30403:19;:37::i;:::-;30384:56;;30455:19;30477:40;30497:6;30505:11;;30477:19;:40::i;:::-;30455:62;;30532:20;30555:41;30575:6;30583:12;;30555:19;:41::i;:::-;30532:64;-1:-1:-1;30611:14:0;30532:64;30628:20;30637:11;30628:6;:20;:::i;:::-;:35;;;;:::i;:::-;30611:52;;30680:27;30686:10;30698:8;30680:5;:27::i;:::-;-1:-1:-1;30732:10:0;30722:21;;;;:9;:21;;;;;:33;;30747:8;;30722:21;:33;;30747:8;;30722:33;:::i;:::-;;;;-1:-1:-1;;;;;;;30770:16:0;;;;;;:9;:16;;;;;:26;;30790:6;;30770:16;:26;;30790:6;;30770:26;:::i;30327:1047::-;31335:27;;-1:-1:-1;;;31335:27:0;;21157:2:1;31335:27:0;;;21139:21:1;21196:2;21176:18;;;21169:30;-1:-1:-1;;;21215:18:1;;;21208:47;21272:18;;31335:27:0;20955:341:1;30327:1047:0;-1:-1:-1;;31400:9:0;31389:21;;;;:10;:21;;;;;;;;31413:15;31389:39;;;;-1:-1:-1;;;;;31435:17:0;;;;;;;;;:35;;;31477:15;;;;;;;;;;:33;;;31517:28;;;:17;:28;;;;;;:46;;;31570:24;;;;;;:42;;;31619:22;;;;:40;31675:4;;27170:4513::o;18266:271::-;18328:4;-1:-1:-1;;;;;18353:17:0;;18345:45;;;;-1:-1:-1;;;18345:45:0;;;;;;;:::i;7085:191::-;7159:16;7178:6;;-1:-1:-1;;;;;7195:17:0;;;-1:-1:-1;;;;;;7195:17:0;;;;;;7228:40;;7178:6;;;;;;;7228:40;;7159:16;7228:40;7148:128;7085:191;:::o;31687:217::-;-1:-1:-1;;;;;31785:16:0;;31772:4;31785:16;;;:9;:16;;;;;:26;;31805:6;;31785:16;31772:4;;31785:26;;31805:6;;31785:26;:::i;:::-;;;;-1:-1:-1;;;;;;;31818:14:0;;;;;;:9;:14;;;;;:24;;31836:6;;31818:14;:24;;31836:6;;31818:24;:::i;:::-;;;;;;;;31870:3;-1:-1:-1;;;;;31854:28:0;31863:5;-1:-1:-1;;;;;31854:28:0;-1:-1:-1;;;;;;;;;;;31875:6:0;31854:28;;;;1613:25:1;;1601:2;1586:18;;1467:177;18125:133:0;18160:4;18185:1;18177:4;;:9;;;;;;;:::i;:::-;;;;-1:-1:-1;;18213:15:0;18197:13;:31;-1:-1:-1;18246:4:0;;18125:133::o;17871:246::-;17933:4;-1:-1:-1;;;;;17958:17:0;;17950:45;;;;-1:-1:-1;;;17950:45:0;;;;;;;:::i;:::-;18022:6;18006:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;18054:33:0;;1613:25:1;;;-1:-1:-1;;;;;18054:33:0;;;18071:1;;-1:-1:-1;;;;;;;;;;;18054:33:0;1601:2:1;1586:18;18054:33:0;1467:177:1;14536:2391:0;14595:9;;14574:4;;14595:9;;14591:821;;;14644:2;14633:8;;:13;;;;:::i;:::-;14621:8;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;14673:8:0;;:13;;14684:2;;14673:13;:::i;:::-;14661:8;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;14716:11:0;;:16;;14730:2;;14716:16;:::i;:::-;14701:11;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;14763:12:0;;:17;;14778:2;;14763:17;:::i;:::-;14747:12;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;14812:13:0;;:18;;14828:2;;14812:18;:::i;:::-;14795:13;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;14862:13:0;;:18;;14878:2;;14862:18;:::i;:::-;14845:13;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;14915:16:0;;:21;;14934:2;;14915:21;:::i;:::-;14895:16;;:41;;;;;;;:::i;:::-;;;;-1:-1:-1;;14972:17:0;;:22;;14992:2;;14972:22;:::i;:::-;14951:17;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;14591:821:0;;-1:-1:-1;14591:821:0;;15050:2;15039:8;;:13;;;;:::i;:::-;15027:8;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;15079:8:0;;:13;;15090:2;;15079:13;:::i;:::-;15067:8;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;15122:11:0;;:16;;15136:2;;15122:16;:::i;:::-;15107:11;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;15169:12:0;;:17;;15184:2;;15169:17;:::i;:::-;15153:12;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;15218:13:0;;:18;;15234:2;;15218:18;:::i;:::-;15201:13;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;15268:13:0;;:18;;15284:2;;15268:18;:::i;:::-;15251:13;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;15321:16:0;;:21;;15340:2;;15321:21;:::i;:::-;15301:16;;:41;;;;;;;:::i;:::-;;;;-1:-1:-1;;15378:17:0;;:22;;15398:2;;15378:22;:::i;:::-;15357:17;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;14591:821:0;15439:6;;:10;;15448:1;15439:10;:::i;:::-;15428:8;;:21;15424:76;;;15478:6;;:10;;15487:1;15478:10;:::i;:::-;15466:8;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15424:76:0;15527:6;;:10;;15536:1;15527:10;:::i;:::-;15516:8;;:21;15512:76;;;15566:6;;:10;;15575:1;15566:10;:::i;:::-;15554:8;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15512:76:0;15618:6;;:10;;15627:1;15618:10;:::i;:::-;15604:11;;:24;15600:78;;;15660:6;;15645:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;15600:78:0;15709:6;;:10;;15718:1;15709:10;:::i;:::-;15694:12;;:25;15690:80;;;15752:6;;15736:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15690:80:0;15802:6;;:10;;15811:1;15802:10;:::i;:::-;15786:13;;:26;15782:86;;;15846:6;;:10;;15855:1;15846:10;:::i;:::-;15829:13;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;15782:86:0;15900:6;;:10;;15909:1;15900:10;:::i;:::-;15884:13;;:26;15880:86;;;15944:6;;:10;;15953:1;15944:10;:::i;:::-;15927:13;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;15880:86:0;16001:6;;:10;;16010:1;16001:10;:::i;:::-;15982:16;;:29;15978:88;;;16048:6;;16028:16;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;15978:88:0;16102:6;;:10;;16111:1;16102:10;:::i;:::-;16082:17;;:30;16078:90;;;16150:6;;16129:17;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;16078:90:0;16195:6;;16184:8;;:17;:38;;;;16216:6;;16205:8;;:17;16184:38;:66;;;;16249:1;16240:6;;:10;;;;:::i;:::-;16226:11;;:24;16184:66;16180:334;;;16267:16;16290:8;;16286:2;:12;;;;:::i;:::-;16267:31;-1:-1:-1;16341:5:0;16325:13;16267:31;16325:2;:13;:::i;:::-;16324:22;;;;:::i;:::-;16313:8;:33;16391:5;16375:13;16380:8;16375:2;:13;:::i;:::-;16374:22;;;;:::i;:::-;16363:8;:33;16443:5;16427:13;16432:8;16427:2;:13;:::i;:::-;16426:22;;;;:::i;:::-;16412:11;:36;16497:5;16480:14;16486:8;16480:3;:14;:::i;:::-;16479:23;;;;:::i;:::-;16464:12;:38;-1:-1:-1;16180:334:0;16546:6;;16530:13;;:22;:48;;;;16572:6;;16556:13;;:22;16530:48;:81;;;;16610:1;16601:6;;:10;;;;:::i;:::-;16582:16;;:29;16530:81;16526:372;;;16628:16;16651:8;;16647:2;:12;;;;:::i;:::-;16628:31;-1:-1:-1;16708:5:0;16691:14;16628:31;16691:3;:14;:::i;:::-;16690:23;;;;:::i;:::-;16674:13;:39;16764:5;16747:14;16753:8;16747:3;:14;:::i;:::-;16746:23;;;;:::i;:::-;16730:13;:39;16822:5;16805:14;16811:8;16805:3;:14;:::i;:::-;16804:23;;;;:::i;:::-;16785:16;:42;16881:5;16864:14;16870:8;16864:3;:14;:::i;:::-;16863:23;;;;:::i;:::-;16843:17;:43;-1:-1:-1;16526:372:0;-1:-1:-1;16915:4:0;;14536:2391::o;12955:147::-;13037:7;13086:8;;13082:2;:12;;;;:::i;:::-;13065:13;13074:4;13065:6;:13;:::i;:::-;13064:30;;;;:::i;:::-;13057:37;12955:147;-1:-1:-1;;;12955:147:0:o;24885:1927::-;25068:14;;-1:-1:-1;;;;;25068:14:0;24999:4;25058:25;;;:9;:25;;;;;;25085:17;;25038:65;;25058:25;25038:19;:65::i;:::-;25016:19;:87;;;25118:30;;;;;:57;;-1:-1:-1;;;;;;25152:23:0;;;;25118:57;25114:1673;;;18675:20;;25196:406;;25265:22;:34;;-1:-1:-1;;;;;;25265:34:0;-1:-1:-1;;;;;25265:34:0;;;;;25196:406;;;18675:20;;18725:8;25384:199;;25436:22;:34;;-1:-1:-1;;;;;;25436:34:0;-1:-1:-1;;;;;25436:34:0;;;;;25384:199;;;25527:22;:32;;-1:-1:-1;;;;;;25527:32:0;-1:-1:-1;;;;;25527:32:0;;;;;25384:199;25626:8;;;;25622:1140;;;25685:3;25663:19;;:25;25659:547;;;25767:22;;25744:19;;-1:-1:-1;;;;;25767:22:0;;;;25718:25;;:46;;;;;;;:::i;:::-;;;:71;;;;;-1:-1:-1;;;;;25718:71:0;;;;;-1:-1:-1;;;;;25718:71:0;;;;;;25839:1;25816:19;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;25622:1140:0;;-1:-1:-1;25622:1140:0;25659:547;25874:19;;25897:3;25874:26;25870:336;;25930:8;:16;;-1:-1:-1;;25930:16:0;;;26022:22;;25999:19;;-1:-1:-1;;;;;26022:22:0;;;;25973:25;;:46;;;;;;;:::i;:::-;;:71;;-1:-1:-1;;;;;;25973:71:0;-1:-1:-1;;;;;25973:71:0;;;;;;;;;;-1:-1:-1;26071:19:0;:23;26121:10;:8;:10::i;:::-;;26181:1;26158:19;;:24;;;;;;;:::i;25870:336::-;25622:1140;;;26280:3;26258:19;;:25;26254:489;;;26313:10;:8;:10::i;:::-;-1:-1:-1;26399:22:0;;26376:19;;-1:-1:-1;;;;;26399:22:0;;;;26350:25;;:46;;;;;;;:::i;26254:489::-;26506:19;;26529:3;26506:26;26502:241;;26561:10;:8;:10::i;:::-;-1:-1:-1;26647:22:0;;26624:19;;-1:-1:-1;;;;;26647:22:0;;;;26598:25;;:46;;;;;;;:::i;:::-;;:71;;-1:-1:-1;;;;;;26598:71:0;-1:-1:-1;;;;;26598:71:0;;;;;;;;;;-1:-1:-1;26696:19:0;:23;-1:-1:-1;26804:4:0;24885:1927;;;;;;:::o;16935:928::-;17044:14;;-1:-1:-1;;;;;17044:14:0;16973:4;17034:25;;;:9;:25;;;;;;17061:6;;16973:4;;17014:54;;:19;:54::i;:::-;17121:14;;-1:-1:-1;;;;;17121:14:0;17079:13;17111:25;;;:9;:25;;;;;;16990:78;;-1:-1:-1;17079:13:0;17111:42;-1:-1:-1;17107:304:0;;17188:14;;-1:-1:-1;;;;;17188:14:0;17178:25;;;;:9;:25;;;;;;:29;;17206:1;;17178:29;:::i;:::-;17170:37;;17107:304;;;17257:17;:13;17273:1;17257:17;:::i;:::-;17239:14;;-1:-1:-1;;;;;17239:14:0;17229:25;;;;:9;:25;;;;;;:45;17225:186;;;17309:14;;-1:-1:-1;;;;;17309:14:0;17299:25;;;;:9;:25;;;;;;:29;;17327:1;;17299:29;:::i;17225:186::-;17379:14;;-1:-1:-1;;;;;17379:14:0;17369:25;;;;:9;:25;;;;;;:29;;17397:1;;17369:29;:::i;:::-;17361:37;;17225:186;17437:14;;-1:-1:-1;;;;;17437:14:0;17463:1;17427:25;;;:9;:25;;;;;;:33;;17455:5;;17427:33;:::i;:::-;:37;17423:409;;;17491:14;;-1:-1:-1;;;;;17491:14:0;17481:25;;;;:9;:25;;;;;:34;;17510:5;;17481:25;:34;;17510:5;;17481:34;:::i;:::-;;;;;;;;17591:5;17530:9;:57;17540:25;17566:19;;17540:46;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17540:46:0;17530:57;;;;;;;;;;;17540:46;17530:57;;;:66;;:57;;17540:46;17530:66;;;;;:::i;:::-;;;;-1:-1:-1;;17622:14:0;;;-1:-1:-1;;;;;17622:14:0;;;17611:26;;;;:10;:26;;;;;;;;17640:15;17611:44;;;;17688:14;;;;;17670:33;;:17;:33;;;:51;17792:19;;17766:25;;:46;;;;;;;:::i;:::-;;;;17750:14;17741:79;;1613:25:1;;;-1:-1:-1;;;;;17766:46:0;;;;17750:14;;;;-1:-1:-1;;;;;;;;;;;17741:79:0;1601:2:1;1586:18;17741:79:0;;;;;;;17423:409;17851:4;17844:11;;;;16935:928;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2438:388::-;2506:6;2514;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2622:9;2609:23;2641:31;2666:5;2641:31;:::i;:::-;2691:5;-1:-1:-1;2748:2:1;2733:18;;2720:32;2761:33;2720:32;2761:33;:::i;:::-;2813:7;2803:17;;;2438:388;;;;;:::o;2831:658::-;3002:2;3054:21;;;3124:13;;3027:18;;;3146:22;;;2973:4;;3002:2;3225:15;;;;3199:2;3184:18;;;2973:4;3268:195;3282:6;3279:1;3276:13;3268:195;;;3347:13;;-1:-1:-1;;;;;3343:39:1;3331:52;;3438:15;;;;3403:12;;;;3379:1;3297:9;3268:195;;;-1:-1:-1;3480:3:1;;2831:658;-1:-1:-1;;;;;;2831:658:1:o;3494:180::-;3553:6;3606:2;3594:9;3585:7;3581:23;3577:32;3574:52;;;3622:1;3619;3612:12;3574:52;-1:-1:-1;3645:23:1;;3494:180;-1:-1:-1;3494:180:1:o;3679:526::-;3863:4;3848:20;;3852:9;3945:6;3821:4;3979:220;3993:4;3990:1;3987:11;3979:220;;;4056:13;;-1:-1:-1;;;;;4052:39:1;4040:52;;4115:4;4139:12;;;;4174:15;;;;4088:1;4006:9;3979:220;;;3983:3;;;3679:526;;;;:::o;4418:367::-;4481:8;4491:6;4545:3;4538:4;4530:6;4526:17;4522:27;4512:55;;4563:1;4560;4553:12;4512:55;-1:-1:-1;4586:20:1;;4629:18;4618:30;;4615:50;;;4661:1;4658;4651:12;4615:50;4698:4;4690:6;4686:17;4674:29;;4758:3;4751:4;4741:6;4738:1;4734:14;4726:6;4722:27;4718:38;4715:47;4712:67;;;4775:1;4772;4765:12;4712:67;4418:367;;;;;:::o;4790:773::-;4912:6;4920;4928;4936;4989:2;4977:9;4968:7;4964:23;4960:32;4957:52;;;5005:1;5002;4995:12;4957:52;5045:9;5032:23;5074:18;5115:2;5107:6;5104:14;5101:34;;;5131:1;5128;5121:12;5101:34;5170:70;5232:7;5223:6;5212:9;5208:22;5170:70;:::i;:::-;5259:8;;-1:-1:-1;5144:96:1;-1:-1:-1;5347:2:1;5332:18;;5319:32;;-1:-1:-1;5363:16:1;;;5360:36;;;5392:1;5389;5382:12;5360:36;;5431:72;5495:7;5484:8;5473:9;5469:24;5431:72;:::i;:::-;4790:773;;;;-1:-1:-1;5522:8:1;-1:-1:-1;;;;4790:773:1:o;5568:523::-;5672:6;5680;5688;5696;5704;5712;5765:3;5753:9;5744:7;5740:23;5736:33;5733:53;;;5782:1;5779;5772:12;5733:53;-1:-1:-1;;5805:23:1;;;5875:2;5860:18;;5847:32;;-1:-1:-1;5926:2:1;5911:18;;5898:32;;5977:2;5962:18;;5949:32;;-1:-1:-1;6028:3:1;6013:19;;6000:33;;-1:-1:-1;6080:3:1;6065:19;6052:33;;-1:-1:-1;5568:523:1;-1:-1:-1;5568:523:1:o;6096:118::-;6182:5;6175:13;6168:21;6161:5;6158:32;6148:60;;6204:1;6201;6194:12;6219:241;6275:6;6328:2;6316:9;6307:7;6303:23;6299:32;6296:52;;;6344:1;6341;6334:12;6296:52;6383:9;6370:23;6402:28;6424:5;6402:28;:::i;6465:437::-;6551:6;6559;6612:2;6600:9;6591:7;6587:23;6583:32;6580:52;;;6628:1;6625;6618:12;6580:52;6668:9;6655:23;6701:18;6693:6;6690:30;6687:50;;;6733:1;6730;6723:12;6687:50;6772:70;6834:7;6825:6;6814:9;6810:22;6772:70;:::i;:::-;6861:8;;6746:96;;-1:-1:-1;6465:437:1;-1:-1:-1;;;;6465:437:1:o;6907:345::-;6974:2;6968:9;7016:4;7004:17;;7051:18;7036:34;;7072:22;;;7033:62;7030:185;;;7137:10;7132:3;7128:20;7125:1;7118:31;7172:4;7169:1;7162:15;7200:4;7197:1;7190:15;7030:185;7231:2;7224:22;6907:345;:::o;7257:1189::-;7375:6;7383;7414:5;7460:2;7448:9;7439:7;7435:23;7431:32;7428:52;;;7476:1;7473;7466:12;7428:52;7525:7;7518:4;7507:9;7503:20;7499:34;7489:62;;7547:1;7544;7537:12;7489:62;7571:17;;:::i;:::-;7610:3;7651:4;7640:9;7636:20;7679:7;7671:6;7668:19;7665:39;;;7700:1;7697;7690:12;7665:39;7724:9;7742:221;7758:6;7753:3;7750:15;7742:221;;;7840:3;7827:17;7857:31;7882:5;7857:31;:::i;:::-;7901:18;;7948:4;7939:14;;;;7775;7742:221;;;7746:3;7982:5;7972:15;;8032:7;8025:4;8014:9;8010:20;8006:34;7996:62;;8054:1;8051;8044:12;7996:62;8080:17;;:::i;:::-;8149:18;;;;8067:30;-1:-1:-1;8067:30:1;;-1:-1:-1;8179:21:1;;;8176:41;;;8213:1;8210;8203:12;8176:41;8254:162;8272:8;8265:5;8262:19;8254:162;;;8348:19;;8334:34;;8401:4;8390:16;;;;8293;8254:162;;;8258:3;8435:5;8425:15;;;;;7257:1189;;;;;:::o;8451:380::-;8530:1;8526:12;;;;8573;;;8594:61;;8648:4;8640:6;8636:17;8626:27;;8594:61;8701:2;8693:6;8690:14;8670:18;8667:38;8664:161;;8747:10;8742:3;8738:20;8735:1;8728:31;8782:4;8779:1;8772:15;8810:4;8807:1;8800:15;8664:161;;8451:380;;;:::o;8836:339::-;9038:2;9020:21;;;9077:2;9057:18;;;9050:30;-1:-1:-1;;;9111:2:1;9096:18;;9089:45;9166:2;9151:18;;8836:339::o;9180:127::-;9241:10;9236:3;9232:20;9229:1;9222:31;9272:4;9269:1;9262:15;9296:4;9293:1;9286:15;9312:128;9379:9;;;9400:11;;;9397:37;;;9414:18;;:::i;9445:217::-;9485:1;9511;9501:132;;9555:10;9550:3;9546:20;9543:1;9536:31;9590:4;9587:1;9580:15;9618:4;9615:1;9608:15;9501:132;-1:-1:-1;9647:9:1;;9445:217::o;9667:168::-;9740:9;;;9771;;9788:15;;;9782:22;;9768:37;9758:71;;9809:18;;:::i;14144:125::-;14209:9;;;14230:10;;;14227:36;;;14243:18;;:::i;14624:184::-;14694:6;14747:2;14735:9;14726:7;14722:23;14718:32;14715:52;;;14763:1;14760;14753:12;14715:52;-1:-1:-1;14786:16:1;;14624:184;-1:-1:-1;14624:184:1:o;15442:245::-;15509:6;15562:2;15550:9;15541:7;15537:23;15533:32;15530:52;;;15578:1;15575;15568:12;15530:52;15610:9;15604:16;15629:28;15651:5;15629:28;:::i;16394:127::-;16455:10;16450:3;16446:20;16443:1;16436:31;16486:4;16483:1;16476:15;16510:4;16507:1;16500:15;16882:422;16971:1;17014:5;16971:1;17028:270;17049:7;17039:8;17036:21;17028:270;;;17108:4;17104:1;17100:6;17096:17;17090:4;17087:27;17084:53;;;17117:18;;:::i;:::-;17167:7;17157:8;17153:22;17150:55;;;17187:16;;;;17150:55;17266:22;;;;17226:15;;;;17028:270;;;17032:3;16882:422;;;;;:::o;17309:806::-;17358:5;17388:8;17378:80;;-1:-1:-1;17429:1:1;17443:5;;17378:80;17477:4;17467:76;;-1:-1:-1;17514:1:1;17528:5;;17467:76;17559:4;17577:1;17572:59;;;;17645:1;17640:130;;;;17552:218;;17572:59;17602:1;17593:10;;17616:5;;;17640:130;17677:3;17667:8;17664:17;17661:43;;;17684:18;;:::i;:::-;-1:-1:-1;;17740:1:1;17726:16;;17755:5;;17552:218;;17854:2;17844:8;17841:16;17835:3;17829:4;17826:13;17822:36;17816:2;17806:8;17803:16;17798:2;17792:4;17789:12;17785:35;17782:77;17779:159;;;-1:-1:-1;17891:19:1;;;17923:5;;17779:159;17970:34;17995:8;17989:4;17970:34;:::i;:::-;18040:6;18036:1;18032:6;18028:19;18019:7;18016:32;18013:58;;;18051:18;;:::i;:::-;18089:20;;17309:806;-1:-1:-1;;;17309:806:1:o;18120:131::-;18180:5;18209:36;18236:8;18230:4;18209:36;:::i;18659:135::-;18698:3;18719:17;;;18716:43;;18739:18;;:::i;:::-;-1:-1:-1;18786:1:1;18775:13;;18659:135::o;20197:403::-;20399:2;20381:21;;;20438:2;20418:18;;;20411:30;20477:34;20472:2;20457:18;;20450:62;-1:-1:-1;;;20543:2:1;20528:18;;20521:37;20590:3;20575:19;;20197:403::o
Swarm Source
ipfs://b0616cdb0b4bebf8b342b6803a939d154f6ca84a22b78755d6d8acb89a2e8ff1
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.