Overview
FTM Balance
FTM Value
$44.29 (@ $0.53/FTM)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy Contract ... | 103045263 | 28 days ago | IN | 3 FTM | 0.00419669 | ||||
Deploy Contract ... | 100464926 | 59 days ago | IN | 3 FTM | 0.00822454 | ||||
Deploy Contract ... | 100393412 | 60 days ago | IN | 3 FTM | 0.02257691 | ||||
Deploy Contract ... | 100048769 | 64 days ago | IN | 3 FTM | 0.00376359 | ||||
Deploy Contract ... | 99031212 | 75 days ago | IN | 3 FTM | 0.02045056 | ||||
Deploy Contract ... | 98948130 | 76 days ago | IN | 3 FTM | 0.00925583 | ||||
Deploy Contract ... | 98947287 | 76 days ago | IN | 3 FTM | 0.00875129 | ||||
Deploy Contract ... | 98393896 | 82 days ago | IN | 3 FTM | 0.02623013 | ||||
Deploy Contract ... | 98358073 | 82 days ago | IN | 3 FTM | 0.01652613 | ||||
Deploy Contract ... | 97182697 | 96 days ago | IN | 3 FTM | 0.14928067 | ||||
Deploy Contract ... | 96416227 | 105 days ago | IN | 3 FTM | 0.01321698 | ||||
Deploy Contract ... | 96416216 | 105 days ago | IN | 3 FTM | 0.01321698 | ||||
Deploy Contract ... | 96049820 | 109 days ago | IN | 3 FTM | 0.00681729 | ||||
Deploy Contract ... | 95981763 | 110 days ago | IN | 3 FTM | 0.02454294 | ||||
Deploy Contract ... | 95981747 | 110 days ago | IN | 3 FTM | 0.01599071 | ||||
Deploy Contract ... | 95873558 | 111 days ago | IN | 3 FTM | 0.00818068 | ||||
Deploy Contract ... | 94737010 | 124 days ago | IN | 3 FTM | 0.35858656 | ||||
Deploy Contract ... | 93754878 | 133 days ago | IN | 3 FTM | 0.06712214 | ||||
Deploy Contract ... | 93752281 | 133 days ago | IN | 3 FTM | 0.06019032 | ||||
Deploy Contract ... | 93230829 | 138 days ago | IN | 3 FTM | 0.02917561 | ||||
Deploy Contract ... | 92375207 | 147 days ago | IN | 3 FTM | 0.1366607 | ||||
Deploy Contract ... | 91133254 | 160 days ago | IN | 3 FTM | 0.00681824 | ||||
Deploy Contract ... | 90287483 | 170 days ago | IN | 3 FTM | 0.01473413 | ||||
Deploy Contract ... | 89942166 | 174 days ago | IN | 3 FTM | 0.00700641 | ||||
Deploy Contract ... | 88647360 | 188 days ago | IN | 3 FTM | 0.02111801 |
Latest 25 internal transactions (View All)
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT /** * DAppCrypto * GitHub Website: https://dappcrypto.github.io/ * GitHub: https://github.com/dappcrypto */ /** * MultiTokens allows you to create simple tokens v2 */ pragma solidity >=0.8.0; import "./Ownable.sol"; import "./SimpleToken.sol"; import "./Wallet.sol"; import "./TaxCreationBlock.sol"; interface iSimpleToken { function initToken(string memory t_name, string memory t_symbol, uint8 t_decimals, uint256 t_totalSupply, address addressOwner) external returns (bool); } contract MultiTokens is Wallet, TaxCreationBlock { event NewContractTokenDeployed(address indexed newContractTokenAddress, uint256 indexed numberToken); uint256 public amountTokens = 0; uint256 public version=2; // mappingTokensContracts[addressContractToken] = numberToken. mapping(address => uint256) public mappingTokensContracts; struct TokenData { uint256 numberToken; uint256 timeToken; address addressContractToken; string sTextData; } // mappingTokensData[numberToken] = TokenData mapping(uint256 => TokenData) public mappingTokensData; function getVersion() public view returns (uint256) { return version; } function getNumberToken(address _aToken) public view returns (uint256) { return mappingTokensContracts[_aToken]; } function getTokenAllData(uint256 _numberToken, address _addressAccount, address _addressSpender) public view returns (uint256[] memory, address[] memory, bool[] memory, string[] memory) { uint256[] memory uintArr = new uint256[](40); address[] memory addressArr = new address[](40); bool[] memory boolArr = new bool[](40); string[] memory stringArr = new string[](40); if(mappingTokensData[_numberToken].numberToken==0){ return (uintArr, addressArr, boolArr, stringArr); } (uintArr, addressArr, stringArr) = getTokenInfo(mappingTokensData[_numberToken].addressContractToken, _addressAccount, _addressSpender); // uintArr uintArr[10] = mappingTokensData[_numberToken].numberToken; uintArr[11] = mappingTokensData[_numberToken].timeToken; uintArr[12] = version; // addressArr addressArr[10] = mappingTokensData[_numberToken].addressContractToken; stringArr[10] = mappingTokensData[_numberToken].sTextData; return (uintArr, addressArr, boolArr, stringArr); } function getTokenInfo(address _addressToken, address _addressAccount, address addressSpender) public view returns (uint256[] memory, address[] memory, string[] memory) { uint256[] memory uintArr = new uint256[](40); address[] memory addressArr = new address[](40); string[] memory stringArr = new string[](40); // uintArr uintArr[0] = IERC20(_addressToken).decimals(); uintArr[1] = IERC20(_addressToken).totalSupply(); uintArr[2] = IERC20(_addressToken).balanceOf(_addressAccount); uintArr[3] = IERC20(_addressToken).allowance(_addressAccount, addressSpender); // addressArr addressArr[0] = IERC20(_addressToken).owner(); // stringArr stringArr[0] = IERC20(_addressToken).name(); stringArr[1] = IERC20(_addressToken).symbol(); return (uintArr, addressArr, stringArr); } function getTokenAllDataByContract(address _addressContractToken, address _addressOwner, address _addressSpender) public view returns (uint256[] memory, address[] memory, bool[] memory, string[] memory) { uint256 _numberToken = mappingTokensContracts[_addressContractToken]; return getTokenAllData(_numberToken, _addressOwner, _addressSpender); } function editTextData(uint256 _numberToken, string memory _sTextData) payable public { sendTaxCreation(); require(IERC20(mappingTokensData[_numberToken].addressContractToken).owner() == msg.sender, "only owner"); mappingTokensData[_numberToken].sTextData = _sTextData; } function deployContractToken(string memory t_name, string memory t_symbol, uint8 t_decimals, uint256 t_totalSupply, address addressOwner, string memory _sTextData) payable public { sendTaxCreation(); amountTokens++; SimpleToken SimpleToken1 = new SimpleToken(); address addressContractToken = address(SimpleToken1); iSimpleToken(addressContractToken).initToken(t_name, t_symbol, t_decimals, t_totalSupply, addressOwner); mappingTokensContracts[addressContractToken] = amountTokens; mappingTokensData[amountTokens].timeToken = block.timestamp; mappingTokensData[amountTokens].numberToken = amountTokens; mappingTokensData[amountTokens].addressContractToken = addressContractToken; mappingTokensData[amountTokens].sTextData = _sTextData; emit NewContractTokenDeployed(addressContractToken, amountTokens); } }
// SPDX-License-Identifier: MIT /** * DAppCrypto * GitHub Website: https://dappcrypto.github.io/ * GitHub: https://github.com/dappcrypto */ pragma solidity >=0.8.0; import "./Ownable.sol"; contract TaxCreationBlock is Ownable { uint256 public taxCreation = 10000000000000000; // 0.01 address public taxCreationAddress = address(this); // 0.01 function setTaxCreation(uint256 _amountTax) public onlyOwner { taxCreation = _amountTax; return; } function setTaxCreationAddress(address _addressTax) public onlyOwner { taxCreationAddress = _addressTax; return; } function sendTaxCreation() payable public { require(msg.value >= taxCreation, "taxCreation error"); if(taxCreationAddress!=address(this)){ payable(taxCreationAddress).transfer(taxCreation); } return; } }
// SPDX-License-Identifier: MIT /** * DAppCrypto * GitHub Website: https://dappcrypto.github.io/ * GitHub: https://github.com/dappcrypto */ pragma solidity >=0.8.0; import "./Ownable.sol"; import "./IERC20.sol"; contract Wallet is Ownable { receive() external payable {} fallback() external payable {} // Transfer Eth function transferEth(address _to, uint256 _amount) public onlyOwner { (bool sent, ) = _to.call{value: _amount}(""); require(sent, "Failed to send Ether"); } // Transfer Tokens function transferTokens(address addressToken, address _to, uint256 _amount) public onlyOwner { IERC20 contractToken = IERC20(addressToken); contractToken.transfer(_to, _amount); } }
// SPDX-License-Identifier: MIT /** * SimpleToken is a simple token contract without cheating * This contract contains the minimum functions required for the token to operate. * Read Contract: _decimals, decimals, _name, name, _symbol, symbol, allowance, balanceOf, getOwner, totalSupply, owner. * Write Contract: transfer, transferFrom, approve, decreaseAllowance, increaseAllowance. * Write Contract, only for owner: renounceOwnership, transferOwnership. * Token created using DAppCrypto https://dappcrypto.github.io/ */ /** * Important! Always check liquidity lock before investing * Important! Always check if the token address is available in DAppCrypto https://dappcrypto.github.io/ */ pragma solidity >=0.8.0; import "./IERC20.sol"; import "./SafeMath.sol"; import "./Ownable.sol"; contract SimpleToken is Ownable, IERC20 { using SafeMath for uint256; bool private initializeToken = false; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint8 public _decimals; string public _symbol; string public _name; constructor() {} // Token initialization is only available once function initToken(string memory t_name, string memory t_symbol, uint8 t_decimals, uint256 t_totalSupply, address addressOwner) public onlyOwner returns (bool) { require(initializeToken == false, "The token is already initialized"); initializeToken = true; _name = t_name; _symbol = t_symbol; _decimals = t_decimals; _totalSupply = t_totalSupply; _balances[addressOwner] = _totalSupply; transferOwnership(addressOwner); emit Transfer(address(0), addressOwner, _totalSupply); return true; } function owner() external view returns (address) { return getOwner(); } function decimals() external view returns (uint8) { return _decimals; } function symbol() external view returns (string memory) { return _symbol; } function name() external view returns (string memory) { return _name; } function totalSupply() external view returns (uint256) { return _totalSupply; } function balanceOf(address account) external view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address addressOwner, address spender) external view returns (uint256) { return _allowances[addressOwner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "Transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "Decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "Transfer from the zero address"); require(recipient != address(0), "Transfer to the zero address"); require(amount <= _balances[sender], "Transfer amount exceeds balance"); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _approve(address addressOwner, address spender, uint256 amount) internal { require(addressOwner != address(0), "Approve from the zero address"); require(spender != address(0), "Approve to the zero address"); _allowances[addressOwner][spender] = amount; emit Approval(addressOwner, spender, amount); } }
// SPDX-License-Identifier: MIT /** * contract Ownable */ pragma solidity >=0.8.0; import "./Context.sol"; contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function getOwner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "onlyOwner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT /** * interface IERC20 */ pragma solidity >=0.8.0; interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function owner() external view returns (address); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT /** * Library for mathematical operations */ pragma solidity >=0.8.0; // @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. library SafeMath { // Counterpart to Solidity's `+` operator. function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } // Counterpart to Solidity's `-` operator. function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } // Counterpart to Solidity's `-` operator. function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } // Counterpart to Solidity's `*` operator. function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } // Counterpart to Solidity's `/` operator. function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } // Counterpart to Solidity's `/` operator. function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } // Counterpart to Solidity's `%` operator. function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } // Counterpart to Solidity's `%` operator. function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT /** * abstract contract Context */ pragma solidity >=0.8.0; abstract contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. //constructor () { } function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "remappings": [] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContractTokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"numberToken","type":"uint256"}],"name":"NewContractTokenDeployed","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"amountTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"t_name","type":"string"},{"internalType":"string","name":"t_symbol","type":"string"},{"internalType":"uint8","name":"t_decimals","type":"uint8"},{"internalType":"uint256","name":"t_totalSupply","type":"uint256"},{"internalType":"address","name":"addressOwner","type":"address"},{"internalType":"string","name":"_sTextData","type":"string"}],"name":"deployContractToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numberToken","type":"uint256"},{"internalType":"string","name":"_sTextData","type":"string"}],"name":"editTextData","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_aToken","type":"address"}],"name":"getNumberToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numberToken","type":"uint256"},{"internalType":"address","name":"_addressAccount","type":"address"},{"internalType":"address","name":"_addressSpender","type":"address"}],"name":"getTokenAllData","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool[]","name":"","type":"bool[]"},{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressContractToken","type":"address"},{"internalType":"address","name":"_addressOwner","type":"address"},{"internalType":"address","name":"_addressSpender","type":"address"}],"name":"getTokenAllDataByContract","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool[]","name":"","type":"bool[]"},{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressToken","type":"address"},{"internalType":"address","name":"_addressAccount","type":"address"},{"internalType":"address","name":"addressSpender","type":"address"}],"name":"getTokenInfo","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mappingTokensContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mappingTokensData","outputs":[{"internalType":"uint256","name":"numberToken","type":"uint256"},{"internalType":"uint256","name":"timeToken","type":"uint256"},{"internalType":"address","name":"addressContractToken","type":"address"},{"internalType":"string","name":"sTextData","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendTaxCreation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountTax","type":"uint256"}],"name":"setTaxCreation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressTax","type":"address"}],"name":"setTaxCreationAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxCreation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxCreationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052662386f26fc10000600155600280546001600160a01b03191630178155600060035560045534801561003557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350612a82806100866000396000f3fe6080604052600436106101225760003560e01c8063893d20e8116100a5578063b30160c21161006c578063b30160c214610320578063d1b943441461034f578063d39e9af714610362578063e9bb84c214610382578063f2fde38b146103a2578063f820fec1146103c257005b8063893d20e8146102485780639dcb075e1461027a5780639ed3c3dc1461029a578063a51eb79b146102d0578063a64b6e5f1461030057005b806343472829116100e957806343472829146101c757806354fd4d50146101da57806362bb5c93146101f05780636de89acc1461021d578063715018a61461023357005b80630d8e6e2c1461012b578063118a854c1461014f57806313c887561461017f578063216e7529146101875780633ecaacc9146101a757005b3661012957005b005b34801561013757600080fd5b506004545b6040519081526020015b60405180910390f35b34801561015b57600080fd5b5061016f61016a366004611215565b6103d8565b604051610146949392919061136d565b610129610676565b34801561019357600080fd5b506101296101a23660046113eb565b610713565b3480156101b357600080fd5b506101296101c236600461140f565b61075d565b6101296101d53660046114fc565b61078c565b3480156101e657600080fd5b5061013c60045481565b3480156101fc57600080fd5b5061013c61020b3660046113eb565b60056020526000908152604090205481565b34801561022957600080fd5b5061013c60015481565b34801561023f57600080fd5b506101296108f6565b34801561025457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610146565b34801561028657600080fd5b50600254610262906001600160a01b031681565b3480156102a657600080fd5b5061013c6102b53660046113eb565b6001600160a01b031660009081526005602052604090205490565b3480156102dc57600080fd5b506102f06102eb36600461140f565b61096a565b60405161014694939291906115b6565b34801561030c57600080fd5b5061012961031b3660046115ed565b610a27565b34801561032c57600080fd5b5061034061033b36600461162e565b610ace565b6040516101469392919061165e565b61012961035d366004611697565b610f1b565b34801561036e57600080fd5b5061016f61037d36600461162e565b611002565b34801561038e57600080fd5b5061012961039d3660046116de565b611041565b3480156103ae57600080fd5b506101296103bd3660046113eb565b611105565b3480156103ce57600080fd5b5061013c60035481565b6040805160288082526105208201909252606091829182918291600091602082016105008036833750506040805160288082526105208201909252929350600092915060208201610500803683375050604080516028808252610520820190925292935060009291506020820161050080368337505060408051602880825261052082019092529293506000929150602082015b606081526020019060019003908161046c57505060008c815260066020526040812054919250036104a6579296509094509250905061066d565b60008b8152600660205260409020600201546104cc906001600160a01b03168b8b610ace565b60008e81526006602052604090205483519397509195509250908590600a9081106104f9576104f961170a565b602002602001018181525050600660008c81526020019081526020016000206001015484600b8151811061052f5761052f61170a565b60200260200101818152505060045484600c815181106105515761055161170a565b60209081029190910181019190915260008c81526006909152604090206002015483516001600160a01b03909116908490600a9081106105935761059361170a565b6001600160a01b0390921660209283029190910182015260008c815260069091526040902060030180546105c690611720565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290611720565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b505050505081600a815181106106575761065761170a565b6020908102919091010152929650909450925090505b93509350935093565b6001543410156106c15760405162461bcd60e51b81526020600482015260116024820152703a30bc21b932b0ba34b7b71032b93937b960791b60448201526064015b60405180910390fd5b6002546001600160a01b03163014610711576002546001546040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561070f573d6000803e3d6000fd5b505b565b6000546001600160a01b0316331461073d5760405162461bcd60e51b81526004016106b89061175a565b600280546001600160a01b0383166001600160a01b031990911617905550565b6000546001600160a01b031633146107875760405162461bcd60e51b81526004016106b89061175a565b600155565b610794610676565b600380549060006107a48361177d565b919050555060006040516107b7906111f3565b604051809103906000f0801580156107d3573d6000803e3d6000fd5b5060405163073b25f560e51b815290915081906001600160a01b0382169063e764bea09061080d908b908b908b908b908b906004016117a4565b6020604051808303816000875af115801561082c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085091906117f3565b50600380546001600160a01b03831660008181526005602090815260408083208590559382526006905282812042600190910155835480825283822090815560020180546001600160a01b0319169092179091558254815220016108b48482611863565b506003546040516001600160a01b038316907fff05b42175a726f8ea16bfc680c6b52e011fe2afb29b5153ffa5d576a3f303b290600090a35050505050505050565b6000546001600160a01b031633146109205760405162461bcd60e51b81526004016106b89061175a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006602052600090815260409020805460018201546002830154600384018054939492936001600160a01b0390921692916109a490611720565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090611720565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b5050505050905084565b6000546001600160a01b03163314610a515760405162461bcd60e51b81526004016106b89061175a565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284919082169063a9059cbb906044016020604051808303816000875af1158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac791906117f3565b5050505050565b6040805160288082526105208201909252606091829182916000919060208201610500803683375050604080516028808252610520820190925292935060009291506020820161050080368337505060408051602880825261052082019092529293506000929150602082015b6060815260200190600190039081610b3b579050509050886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190611923565b60ff1683600081518110610bca57610bca61170a565b602002602001018181525050886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c389190611940565b83600181518110610c4b57610c4b61170a565b60209081029190910101526040516370a0823160e01b81526001600160a01b0389811660048301528a16906370a0823190602401602060405180830381865afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc09190611940565b83600281518110610cd357610cd361170a565b6020908102919091010152604051636eb1769f60e11b81526001600160a01b03898116600483015288811660248301528a169063dd62ed3e90604401602060405180830381865afa158015610d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d509190611940565b83600381518110610d6357610d6361170a565b602002602001018181525050886001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190611959565b82600081518110610de457610de461170a565b60200260200101906001600160a01b031690816001600160a01b031681525050886001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6a9190810190611976565b81600081518110610e7d57610e7d61170a565b6020026020010181905250886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eee9190810190611976565b81600181518110610f0157610f0161170a565b602090810291909101015291989097509095509350505050565b610f23610676565b600082815260066020908152604091829020600201548251638da5cb5b60e01b8152925133936001600160a01b0390921692638da5cb5b92600480820193918290030181865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190611959565b6001600160a01b031614610fe25760405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b60448201526064016106b8565b6000828152600660205260409020600301610ffd8282611863565b505050565b6001600160a01b03831660009081526005602052604090205460609081908190819061102f8188886103d8565b94509450945094505093509350935093565b6000546001600160a01b0316331461106b5760405162461bcd60e51b81526004016106b89061175a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110b8576040519150601f19603f3d011682016040523d82523d6000602084013e6110bd565b606091505b5050905080610ffd5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b60448201526064016106b8565b6000546001600160a01b0316331461112f5760405162461bcd60e51b81526004016106b89061175a565b61070f816001600160a01b0381166111985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61105f806119ee83390190565b6001600160a01b038116811461070f57600080fd5b60008060006060848603121561122a57600080fd5b83359250602084013561123c81611200565b9150604084013561124c81611200565b809150509250925092565b600081518084526020808501945080840160005b838110156112875781518752958201959082019060010161126b565b509495945050505050565b600081518084526020808501945080840160005b838110156112875781516001600160a01b0316875295820195908201906001016112a6565b60005b838110156112e65781810151838201526020016112ce565b50506000910152565b600081518084526113078160208601602086016112cb565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b8581101561136057838303895261134e8383516112ef565b98850198925090840190600101611336565b5090979650505050505050565b6080815260006113806080830187611257565b6020838203818501526113938288611292565b8481036040860152865180825282880193509082019060005b818110156113ca5784511515835293830193918301916001016113ac565b505084810360608601526113de818761131b565b9998505050505050505050565b6000602082840312156113fd57600080fd5b813561140881611200565b9392505050565b60006020828403121561142157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561146757611467611428565b604052919050565b600067ffffffffffffffff82111561148957611489611428565b50601f01601f191660200190565b600082601f8301126114a857600080fd5b81356114bb6114b68261146f565b61143e565b8181528460208386010111156114d057600080fd5b816020850160208301376000918101602001919091529392505050565b60ff8116811461070f57600080fd5b60008060008060008060c0878903121561151557600080fd5b863567ffffffffffffffff8082111561152d57600080fd5b6115398a838b01611497565b9750602089013591508082111561154f57600080fd5b61155b8a838b01611497565b96506040890135915061156d826114ed565b9094506060880135935060808801359061158682611200565b90925060a0880135908082111561159c57600080fd5b506115a989828a01611497565b9150509295509295509295565b84815283602082015260018060a01b03831660408201526080606082015260006115e360808301846112ef565b9695505050505050565b60008060006060848603121561160257600080fd5b833561160d81611200565b9250602084013561161d81611200565b929592945050506040919091013590565b60008060006060848603121561164357600080fd5b833561164e81611200565b9250602084013561123c81611200565b6060815260006116716060830186611257565b82810360208401526116838186611292565b905082810360408401526115e3818561131b565b600080604083850312156116aa57600080fd5b82359150602083013567ffffffffffffffff8111156116c857600080fd5b6116d485828601611497565b9150509250929050565b600080604083850312156116f157600080fd5b82356116fc81611200565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061173457607f821691505b60208210810361175457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b60006001820161179d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60a0815260006117b760a08301886112ef565b82810360208401526117c981886112ef565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b60006020828403121561180557600080fd5b8151801515811461140857600080fd5b601f821115610ffd57600081815260208120601f850160051c8101602086101561183c5750805b601f850160051c820191505b8181101561185b57828155600101611848565b505050505050565b815167ffffffffffffffff81111561187d5761187d611428565b6118918161188b8454611720565b84611815565b602080601f8311600181146118c657600084156118ae5750858301515b600019600386901b1c1916600185901b17855561185b565b600085815260208120601f198616915b828110156118f5578886015182559484019460019091019084016118d6565b50858210156119135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561193557600080fd5b8151611408816114ed565b60006020828403121561195257600080fd5b5051919050565b60006020828403121561196b57600080fd5b815161140881611200565b60006020828403121561198857600080fd5b815167ffffffffffffffff81111561199f57600080fd5b8201601f810184136119b057600080fd5b80516119be6114b68261146f565b8181528560208385010111156119d357600080fd5b6119e48260208301602086016112cb565b9594505050505056fe60806040526000805460ff60a01b1916905534801561001d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610ff18061006e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063893d20e8116100ad578063b09f126611610071578063b09f12661461025c578063d28d885214610264578063dd62ed3e1461026c578063e764bea0146102a5578063f2fde38b146102b857600080fd5b8063893d20e8146101f85780638da5cb5b1461021d57806395d89b411461022e578063a457c2d714610236578063a9059cbb1461024957600080fd5b8063313ce567116100f4578063313ce5671461018c57806332424aa3146101a557806339509351146101b257806370a08231146101c5578063715018a6146101ee57600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102cb565b60405161013b9190610b9a565b60405180910390f35b610157610152366004610c04565b61035d565b604051901515815260200161013b565b6003545b60405190815260200161013b565b610157610187366004610c2e565b610374565b60045460ff165b60405160ff909116815260200161013b565b6004546101939060ff1681565b6101576101c0366004610c04565b6103dd565b61016b6101d3366004610c6a565b6001600160a01b031660009081526001602052604090205490565b6101f6610413565b005b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013b565b6000546001600160a01b0316610205565b61012e610490565b610157610244366004610c04565b61049f565b610157610257366004610c04565b61050c565b61012e610519565b61012e6105a7565b61016b61027a366004610c85565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101576102b3366004610d5b565b6105b4565b6101f66102c6366004610c6a565b6106fa565b6060600680546102da90610df2565b80601f016020809104026020016040519081016040528092919081815260200182805461030690610df2565b80156103535780601f1061032857610100808354040283529160200191610353565b820191906000526020600020905b81548152906001019060200180831161033657829003601f168201915b5050505050905090565b600061036a338484610730565b5060015b92915050565b600061038184848461083e565b6103d384336103ce85604051806060016040528060218152602001610f9b602191396001600160a01b038a16600090815260026020908152604080832033845290915290205491906109f8565b610730565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161036a9185906103ce9086610a32565b6000546001600160a01b031633146104465760405162461bcd60e51b815260040161043d90610e2c565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600580546102da90610df2565b604080518082018252601e81527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000602080830191909152336000818152600283528481206001600160a01b038816825290925292812054909261036a92909186916103ce919087906109f8565b600061036a33848461083e565b6005805461052690610df2565b80601f016020809104026020016040519081016040528092919081815260200182805461055290610df2565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b505050505081565b6006805461052690610df2565b600080546001600160a01b031633146105df5760405162461bcd60e51b815260040161043d90610e2c565b600054600160a01b900460ff16156106395760405162461bcd60e51b815260206004820181905260248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a6564604482015260640161043d565b6000805460ff60a01b1916600160a01b17905560066106588782610e9e565b5060056106658682610e9e565b506004805460ff191660ff861617905560038390556001600160a01b038216600090815260016020526040902083905561069e826106fa565b816001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516106e691815260200190565b60405180910390a350600195945050505050565b6000546001600160a01b031633146107245760405162461bcd60e51b815260040161043d90610e2c565b61072d81610a98565b50565b6001600160a01b0383166107865760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161043d565b6001600160a01b0382166107dc5760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161043d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166108945760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161043d565b6001600160a01b0382166108ea5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161043d565b6001600160a01b0383166000908152600160205260409020548111156109525760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161043d565b6001600160a01b0383166000908152600160205260409020546109759082610b58565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546109a49082610a32565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108319085815260200190565b60008184841115610a1c5760405162461bcd60e51b815260040161043d9190610b9a565b506000610a298486610f74565b95945050505050565b600080610a3f8385610f87565b905083811015610a915760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161043d565b9392505050565b6001600160a01b038116610afd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161043d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109f8565b600060208083528351808285015260005b81811015610bc757858101830151858201604001528201610bab565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610bff57600080fd5b919050565b60008060408385031215610c1757600080fd5b610c2083610be8565b946020939093013593505050565b600080600060608486031215610c4357600080fd5b610c4c84610be8565b9250610c5a60208501610be8565b9150604084013590509250925092565b600060208284031215610c7c57600080fd5b610a9182610be8565b60008060408385031215610c9857600080fd5b610ca183610be8565b9150610caf60208401610be8565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610cdf57600080fd5b813567ffffffffffffffff80821115610cfa57610cfa610cb8565b604051601f8301601f19908116603f01168101908282118183101715610d2257610d22610cb8565b81604052838152866020858801011115610d3b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215610d7357600080fd5b853567ffffffffffffffff80821115610d8b57600080fd5b610d9789838a01610cce565b96506020880135915080821115610dad57600080fd5b50610dba88828901610cce565b945050604086013560ff81168114610dd157600080fd5b925060608601359150610de660808701610be8565b90509295509295909350565b600181811c90821680610e0657607f821691505b602082108103610e2657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b601f821115610e9957600081815260208120601f850160051c81016020861015610e765750805b601f850160051c820191505b81811015610e9557828155600101610e82565b5050505b505050565b815167ffffffffffffffff811115610eb857610eb8610cb8565b610ecc81610ec68454610df2565b84610e4f565b602080601f831160018114610f015760008415610ee95750858301515b600019600386901b1c1916600185901b178555610e95565b600085815260208120601f198616915b82811015610f3057888601518255948401946001909101908401610f11565b5085821015610f4e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111561036e5761036e610f5e565b8082018082111561036e5761036e610f5e56fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208d216150fefb11301d2fa11e83ed48026dcd5a79b9ff821d8b1bc8a676ac9b3f64736f6c63430008120033a26469706673582212205ebcf521f84ebbbd5a8b55d16b0f0adba9c3be75f2bcd2bb1d0febf61383686a64736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101225760003560e01c8063893d20e8116100a5578063b30160c21161006c578063b30160c214610320578063d1b943441461034f578063d39e9af714610362578063e9bb84c214610382578063f2fde38b146103a2578063f820fec1146103c257005b8063893d20e8146102485780639dcb075e1461027a5780639ed3c3dc1461029a578063a51eb79b146102d0578063a64b6e5f1461030057005b806343472829116100e957806343472829146101c757806354fd4d50146101da57806362bb5c93146101f05780636de89acc1461021d578063715018a61461023357005b80630d8e6e2c1461012b578063118a854c1461014f57806313c887561461017f578063216e7529146101875780633ecaacc9146101a757005b3661012957005b005b34801561013757600080fd5b506004545b6040519081526020015b60405180910390f35b34801561015b57600080fd5b5061016f61016a366004611215565b6103d8565b604051610146949392919061136d565b610129610676565b34801561019357600080fd5b506101296101a23660046113eb565b610713565b3480156101b357600080fd5b506101296101c236600461140f565b61075d565b6101296101d53660046114fc565b61078c565b3480156101e657600080fd5b5061013c60045481565b3480156101fc57600080fd5b5061013c61020b3660046113eb565b60056020526000908152604090205481565b34801561022957600080fd5b5061013c60015481565b34801561023f57600080fd5b506101296108f6565b34801561025457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610146565b34801561028657600080fd5b50600254610262906001600160a01b031681565b3480156102a657600080fd5b5061013c6102b53660046113eb565b6001600160a01b031660009081526005602052604090205490565b3480156102dc57600080fd5b506102f06102eb36600461140f565b61096a565b60405161014694939291906115b6565b34801561030c57600080fd5b5061012961031b3660046115ed565b610a27565b34801561032c57600080fd5b5061034061033b36600461162e565b610ace565b6040516101469392919061165e565b61012961035d366004611697565b610f1b565b34801561036e57600080fd5b5061016f61037d36600461162e565b611002565b34801561038e57600080fd5b5061012961039d3660046116de565b611041565b3480156103ae57600080fd5b506101296103bd3660046113eb565b611105565b3480156103ce57600080fd5b5061013c60035481565b6040805160288082526105208201909252606091829182918291600091602082016105008036833750506040805160288082526105208201909252929350600092915060208201610500803683375050604080516028808252610520820190925292935060009291506020820161050080368337505060408051602880825261052082019092529293506000929150602082015b606081526020019060019003908161046c57505060008c815260066020526040812054919250036104a6579296509094509250905061066d565b60008b8152600660205260409020600201546104cc906001600160a01b03168b8b610ace565b60008e81526006602052604090205483519397509195509250908590600a9081106104f9576104f961170a565b602002602001018181525050600660008c81526020019081526020016000206001015484600b8151811061052f5761052f61170a565b60200260200101818152505060045484600c815181106105515761055161170a565b60209081029190910181019190915260008c81526006909152604090206002015483516001600160a01b03909116908490600a9081106105935761059361170a565b6001600160a01b0390921660209283029190910182015260008c815260069091526040902060030180546105c690611720565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290611720565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b505050505081600a815181106106575761065761170a565b6020908102919091010152929650909450925090505b93509350935093565b6001543410156106c15760405162461bcd60e51b81526020600482015260116024820152703a30bc21b932b0ba34b7b71032b93937b960791b60448201526064015b60405180910390fd5b6002546001600160a01b03163014610711576002546001546040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561070f573d6000803e3d6000fd5b505b565b6000546001600160a01b0316331461073d5760405162461bcd60e51b81526004016106b89061175a565b600280546001600160a01b0383166001600160a01b031990911617905550565b6000546001600160a01b031633146107875760405162461bcd60e51b81526004016106b89061175a565b600155565b610794610676565b600380549060006107a48361177d565b919050555060006040516107b7906111f3565b604051809103906000f0801580156107d3573d6000803e3d6000fd5b5060405163073b25f560e51b815290915081906001600160a01b0382169063e764bea09061080d908b908b908b908b908b906004016117a4565b6020604051808303816000875af115801561082c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085091906117f3565b50600380546001600160a01b03831660008181526005602090815260408083208590559382526006905282812042600190910155835480825283822090815560020180546001600160a01b0319169092179091558254815220016108b48482611863565b506003546040516001600160a01b038316907fff05b42175a726f8ea16bfc680c6b52e011fe2afb29b5153ffa5d576a3f303b290600090a35050505050505050565b6000546001600160a01b031633146109205760405162461bcd60e51b81526004016106b89061175a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006602052600090815260409020805460018201546002830154600384018054939492936001600160a01b0390921692916109a490611720565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090611720565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b5050505050905084565b6000546001600160a01b03163314610a515760405162461bcd60e51b81526004016106b89061175a565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284919082169063a9059cbb906044016020604051808303816000875af1158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac791906117f3565b5050505050565b6040805160288082526105208201909252606091829182916000919060208201610500803683375050604080516028808252610520820190925292935060009291506020820161050080368337505060408051602880825261052082019092529293506000929150602082015b6060815260200190600190039081610b3b579050509050886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190611923565b60ff1683600081518110610bca57610bca61170a565b602002602001018181525050886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c389190611940565b83600181518110610c4b57610c4b61170a565b60209081029190910101526040516370a0823160e01b81526001600160a01b0389811660048301528a16906370a0823190602401602060405180830381865afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc09190611940565b83600281518110610cd357610cd361170a565b6020908102919091010152604051636eb1769f60e11b81526001600160a01b03898116600483015288811660248301528a169063dd62ed3e90604401602060405180830381865afa158015610d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d509190611940565b83600381518110610d6357610d6361170a565b602002602001018181525050886001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190611959565b82600081518110610de457610de461170a565b60200260200101906001600160a01b031690816001600160a01b031681525050886001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6a9190810190611976565b81600081518110610e7d57610e7d61170a565b6020026020010181905250886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eee9190810190611976565b81600181518110610f0157610f0161170a565b602090810291909101015291989097509095509350505050565b610f23610676565b600082815260066020908152604091829020600201548251638da5cb5b60e01b8152925133936001600160a01b0390921692638da5cb5b92600480820193918290030181865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190611959565b6001600160a01b031614610fe25760405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b60448201526064016106b8565b6000828152600660205260409020600301610ffd8282611863565b505050565b6001600160a01b03831660009081526005602052604090205460609081908190819061102f8188886103d8565b94509450945094505093509350935093565b6000546001600160a01b0316331461106b5760405162461bcd60e51b81526004016106b89061175a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110b8576040519150601f19603f3d011682016040523d82523d6000602084013e6110bd565b606091505b5050905080610ffd5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b60448201526064016106b8565b6000546001600160a01b0316331461112f5760405162461bcd60e51b81526004016106b89061175a565b61070f816001600160a01b0381166111985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61105f806119ee83390190565b6001600160a01b038116811461070f57600080fd5b60008060006060848603121561122a57600080fd5b83359250602084013561123c81611200565b9150604084013561124c81611200565b809150509250925092565b600081518084526020808501945080840160005b838110156112875781518752958201959082019060010161126b565b509495945050505050565b600081518084526020808501945080840160005b838110156112875781516001600160a01b0316875295820195908201906001016112a6565b60005b838110156112e65781810151838201526020016112ce565b50506000910152565b600081518084526113078160208601602086016112cb565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b8581101561136057838303895261134e8383516112ef565b98850198925090840190600101611336565b5090979650505050505050565b6080815260006113806080830187611257565b6020838203818501526113938288611292565b8481036040860152865180825282880193509082019060005b818110156113ca5784511515835293830193918301916001016113ac565b505084810360608601526113de818761131b565b9998505050505050505050565b6000602082840312156113fd57600080fd5b813561140881611200565b9392505050565b60006020828403121561142157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561146757611467611428565b604052919050565b600067ffffffffffffffff82111561148957611489611428565b50601f01601f191660200190565b600082601f8301126114a857600080fd5b81356114bb6114b68261146f565b61143e565b8181528460208386010111156114d057600080fd5b816020850160208301376000918101602001919091529392505050565b60ff8116811461070f57600080fd5b60008060008060008060c0878903121561151557600080fd5b863567ffffffffffffffff8082111561152d57600080fd5b6115398a838b01611497565b9750602089013591508082111561154f57600080fd5b61155b8a838b01611497565b96506040890135915061156d826114ed565b9094506060880135935060808801359061158682611200565b90925060a0880135908082111561159c57600080fd5b506115a989828a01611497565b9150509295509295509295565b84815283602082015260018060a01b03831660408201526080606082015260006115e360808301846112ef565b9695505050505050565b60008060006060848603121561160257600080fd5b833561160d81611200565b9250602084013561161d81611200565b929592945050506040919091013590565b60008060006060848603121561164357600080fd5b833561164e81611200565b9250602084013561123c81611200565b6060815260006116716060830186611257565b82810360208401526116838186611292565b905082810360408401526115e3818561131b565b600080604083850312156116aa57600080fd5b82359150602083013567ffffffffffffffff8111156116c857600080fd5b6116d485828601611497565b9150509250929050565b600080604083850312156116f157600080fd5b82356116fc81611200565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061173457607f821691505b60208210810361175457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b60006001820161179d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60a0815260006117b760a08301886112ef565b82810360208401526117c981886112ef565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b60006020828403121561180557600080fd5b8151801515811461140857600080fd5b601f821115610ffd57600081815260208120601f850160051c8101602086101561183c5750805b601f850160051c820191505b8181101561185b57828155600101611848565b505050505050565b815167ffffffffffffffff81111561187d5761187d611428565b6118918161188b8454611720565b84611815565b602080601f8311600181146118c657600084156118ae5750858301515b600019600386901b1c1916600185901b17855561185b565b600085815260208120601f198616915b828110156118f5578886015182559484019460019091019084016118d6565b50858210156119135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561193557600080fd5b8151611408816114ed565b60006020828403121561195257600080fd5b5051919050565b60006020828403121561196b57600080fd5b815161140881611200565b60006020828403121561198857600080fd5b815167ffffffffffffffff81111561199f57600080fd5b8201601f810184136119b057600080fd5b80516119be6114b68261146f565b8181528560208385010111156119d357600080fd5b6119e48260208301602086016112cb565b9594505050505056fe60806040526000805460ff60a01b1916905534801561001d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610ff18061006e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063893d20e8116100ad578063b09f126611610071578063b09f12661461025c578063d28d885214610264578063dd62ed3e1461026c578063e764bea0146102a5578063f2fde38b146102b857600080fd5b8063893d20e8146101f85780638da5cb5b1461021d57806395d89b411461022e578063a457c2d714610236578063a9059cbb1461024957600080fd5b8063313ce567116100f4578063313ce5671461018c57806332424aa3146101a557806339509351146101b257806370a08231146101c5578063715018a6146101ee57600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102cb565b60405161013b9190610b9a565b60405180910390f35b610157610152366004610c04565b61035d565b604051901515815260200161013b565b6003545b60405190815260200161013b565b610157610187366004610c2e565b610374565b60045460ff165b60405160ff909116815260200161013b565b6004546101939060ff1681565b6101576101c0366004610c04565b6103dd565b61016b6101d3366004610c6a565b6001600160a01b031660009081526001602052604090205490565b6101f6610413565b005b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013b565b6000546001600160a01b0316610205565b61012e610490565b610157610244366004610c04565b61049f565b610157610257366004610c04565b61050c565b61012e610519565b61012e6105a7565b61016b61027a366004610c85565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101576102b3366004610d5b565b6105b4565b6101f66102c6366004610c6a565b6106fa565b6060600680546102da90610df2565b80601f016020809104026020016040519081016040528092919081815260200182805461030690610df2565b80156103535780601f1061032857610100808354040283529160200191610353565b820191906000526020600020905b81548152906001019060200180831161033657829003601f168201915b5050505050905090565b600061036a338484610730565b5060015b92915050565b600061038184848461083e565b6103d384336103ce85604051806060016040528060218152602001610f9b602191396001600160a01b038a16600090815260026020908152604080832033845290915290205491906109f8565b610730565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161036a9185906103ce9086610a32565b6000546001600160a01b031633146104465760405162461bcd60e51b815260040161043d90610e2c565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600580546102da90610df2565b604080518082018252601e81527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000602080830191909152336000818152600283528481206001600160a01b038816825290925292812054909261036a92909186916103ce919087906109f8565b600061036a33848461083e565b6005805461052690610df2565b80601f016020809104026020016040519081016040528092919081815260200182805461055290610df2565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b505050505081565b6006805461052690610df2565b600080546001600160a01b031633146105df5760405162461bcd60e51b815260040161043d90610e2c565b600054600160a01b900460ff16156106395760405162461bcd60e51b815260206004820181905260248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a6564604482015260640161043d565b6000805460ff60a01b1916600160a01b17905560066106588782610e9e565b5060056106658682610e9e565b506004805460ff191660ff861617905560038390556001600160a01b038216600090815260016020526040902083905561069e826106fa565b816001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516106e691815260200190565b60405180910390a350600195945050505050565b6000546001600160a01b031633146107245760405162461bcd60e51b815260040161043d90610e2c565b61072d81610a98565b50565b6001600160a01b0383166107865760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161043d565b6001600160a01b0382166107dc5760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161043d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166108945760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161043d565b6001600160a01b0382166108ea5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161043d565b6001600160a01b0383166000908152600160205260409020548111156109525760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161043d565b6001600160a01b0383166000908152600160205260409020546109759082610b58565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546109a49082610a32565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108319085815260200190565b60008184841115610a1c5760405162461bcd60e51b815260040161043d9190610b9a565b506000610a298486610f74565b95945050505050565b600080610a3f8385610f87565b905083811015610a915760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161043d565b9392505050565b6001600160a01b038116610afd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161043d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109f8565b600060208083528351808285015260005b81811015610bc757858101830151858201604001528201610bab565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610bff57600080fd5b919050565b60008060408385031215610c1757600080fd5b610c2083610be8565b946020939093013593505050565b600080600060608486031215610c4357600080fd5b610c4c84610be8565b9250610c5a60208501610be8565b9150604084013590509250925092565b600060208284031215610c7c57600080fd5b610a9182610be8565b60008060408385031215610c9857600080fd5b610ca183610be8565b9150610caf60208401610be8565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610cdf57600080fd5b813567ffffffffffffffff80821115610cfa57610cfa610cb8565b604051601f8301601f19908116603f01168101908282118183101715610d2257610d22610cb8565b81604052838152866020858801011115610d3b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215610d7357600080fd5b853567ffffffffffffffff80821115610d8b57600080fd5b610d9789838a01610cce565b96506020880135915080821115610dad57600080fd5b50610dba88828901610cce565b945050604086013560ff81168114610dd157600080fd5b925060608601359150610de660808701610be8565b90509295509295909350565b600181811c90821680610e0657607f821691505b602082108103610e2657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b601f821115610e9957600081815260208120601f850160051c81016020861015610e765750805b601f850160051c820191505b81811015610e9557828155600101610e82565b5050505b505050565b815167ffffffffffffffff811115610eb857610eb8610cb8565b610ecc81610ec68454610df2565b84610e4f565b602080601f831160018114610f015760008415610ee95750858301515b600019600386901b1c1916600185901b178555610e95565b600085815260208120601f198616915b82811015610f3057888601518255948401946001909101908401610f11565b5085821015610f4e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111561036e5761036e610f5e565b8082018082111561036e5761036e610f5e56fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208d216150fefb11301d2fa11e83ed48026dcd5a79b9ff821d8b1bc8a676ac9b3f64736f6c63430008120033a26469706673582212205ebcf521f84ebbbd5a8b55d16b0f0adba9c3be75f2bcd2bb1d0febf61383686a64736f6c63430008120033
Deployed Bytecode Sourcemap
551:4528:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1192:85;;;;;;;;;;-1:-1:-1;1262:7:2;;1192:85;;;160:25:8;;;148:2;133:18;1192:85:2;;;;;;;;1421:1120;;;;;;;;;;-1:-1:-1;1421:1120:2;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;654:255:6:-;;;:::i;509:137::-;;;;;;;;;;-1:-1:-1;509:137:6;;;;;:::i;:::-;;:::i;380:121::-;;;;;;;;;;-1:-1:-1;380:121:6;;;;;:::i;:::-;;:::i;4156:920:2:-;;;;;;:::i;:::-;;:::i;756:24::-;;;;;;;;;;;;;;;;857:57;;;;;;;;;;-1:-1:-1;857:57:2;;;;;:::i;:::-;;;;;;;;;;;;;;253:46:6;;;;;;;;;;;;;;;;637:140:3;;;;;;;;;;;;;:::i;443:82::-;;;;;;;;;;-1:-1:-1;484:7:3;511:6;-1:-1:-1;;;;;511:6:3;443:82;;;-1:-1:-1;;;;;6902:32:8;;;6884:51;;6872:2;6857:18;443:82:3;6738:203:8;314:49:6;;;;;;;;;;-1:-1:-1;314:49:6;;;;-1:-1:-1;;;;;314:49:6;;;1285:128:2;;;;;;;;;;-1:-1:-1;1285:128:2;;;;;:::i;:::-;-1:-1:-1;;;;;1374:31:2;1347:7;1374:31;;;:22;:31;;;;;;;1285:128;1129:54;;;;;;;;;;-1:-1:-1;1129:54:2;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;572:202:7:-;;;;;;;;;;-1:-1:-1;572:202:7;;;;;:::i;:::-;;:::i;2549:912:2:-;;;;;;;;;;-1:-1:-1;2549:912:2;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;3846:302::-;;;;;;:::i;:::-;;:::i;3469:369::-;;;;;;;;;;-1:-1:-1;3469:369:2;;;;;:::i;:::-;;:::i;361:179:7:-;;;;;;;;;;-1:-1:-1;361:179:7;;;;;:::i;:::-;;:::i;785:109:3:-;;;;;;;;;;-1:-1:-1;785:109:3;;;;;:::i;:::-;;:::i;718:31:2:-;;;;;;;;;;;;;;;;1421:1120;1645:17;;;1659:2;1645:17;;;;;;;;;1539:16;;;;;;;;1618:24;;1645:17;;;;;;;;-1:-1:-1;;1703:17:2;;;1717:2;1703:17;;;;;;;;;1618:44;;-1:-1:-1;1673:27:2;;1703:17;-1:-1:-1;1703:17:2;;;;;;;;-1:-1:-1;;1755:14:2;;;1766:2;1755:14;;;;;;;;;1673:47;;-1:-1:-1;1731:21:2;;1755:14;-1:-1:-1;1755:14:2;;;;;;;;-1:-1:-1;;1808:16:2;;;1821:2;1808:16;;;;;;;;;1731:38;;-1:-1:-1;1780:25:2;;1808:16;-1:-1:-1;1808:16:2;;;;;;;;;;;;;;;;;-1:-1:-1;;1840:31:2;;;;:17;:31;;;;;:43;1780:44;;-1:-1:-1;1840:46:2;1837:125;;1910:7;;-1:-1:-1;1919:10:2;;-1:-1:-1;1931:7:2;-1:-1:-1;1940:9:2;-1:-1:-1;1902:48:2;;1837:125;2022:31;;;;:17;:31;;;;;:52;;;2009:100;;-1:-1:-1;;;;;2022:52:2;2076:15;2093;2009:12;:100::i;:::-;2156:31;;;;:17;:31;;;;;:43;2142:11;;1974:135;;-1:-1:-1;1974:135:2;;-1:-1:-1;1974:135:2;-1:-1:-1;2156:43:2;1974:135;;2150:2;;2142:11;;;;;;:::i;:::-;;;;;;:57;;;;;2224:17;:31;2242:12;2224:31;;;;;;;;;;;:41;;;2210:7;2218:2;2210:11;;;;;;;;:::i;:::-;;;;;;:55;;;;;2290:7;;2276;2284:2;2276:11;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;;2350:31;;;;:17;:31;;;;;;:52;;;2333:14;;-1:-1:-1;;;;;2350:52:2;;;;2333:10;;2344:2;;2333:14;;;;;;:::i;:::-;-1:-1:-1;;;;;2333:69:2;;;:14;;;;;;;;;;:69;2431:31;;;;:17;:31;;;;;;:41;;2415:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;2425:2;2415:13;;;;;;;;:::i;:::-;;;;;;;;;;:57;2493:7;;-1:-1:-1;2502:10:2;;-1:-1:-1;2514:7:2;-1:-1:-1;2523:9:2;-1:-1:-1;1421:1120:2;;;;;;;;:::o;654:255:6:-;728:11;;715:9;:24;;707:54;;;;-1:-1:-1;;;707:54:6;;10534:2:8;707:54:6;;;10516:21:8;10573:2;10553:18;;;10546:30;-1:-1:-1;;;10592:18:8;;;10585:47;10649:18;;707:54:6;;;;;;;;;775:18;;-1:-1:-1;;;;;775:18:6;803:4;775:33;772:113;;832:18;;;861:11;824:49;;-1:-1:-1;;;;;832:18:6;;;;824:49;;;;;861:11;832:18;824:49;832:18;824:49;861:11;832:18;824:49;;;;;;;;;;;;;;;;;;;;;772:113;654:255::o;509:137::-;573:6:3;;-1:-1:-1;;;;;573:6:3;410:10:0;573:22:3;565:44;;;;-1:-1:-1;;;565:44:3;;;;;;;:::i;:::-;589:18:6::1;:32:::0;;-1:-1:-1;;;;;589:32:6;::::1;-1:-1:-1::0;;;;;;589:32:6;;::::1;;::::0;;509:137;:::o;380:121::-;573:6:3;;-1:-1:-1;;;;;573:6:3;410:10:0;573:22:3;565:44;;;;-1:-1:-1;;;565:44:3;;;;;;;:::i;:::-;452:11:6::1;:24:::0;380:121::o;4156:920:2:-;4346:17;:15;:17::i;:::-;4376:12;:14;;;:12;:14;;;:::i;:::-;;;;;;4403:24;4430:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4523:103:2;;-1:-1:-1;;;4523:103:2;;4403:44;;-1:-1:-1;4403:44:2;;-1:-1:-1;;;;;4523:44:2;;;;;:103;;4568:6;;4576:8;;4586:10;;4598:13;;4613:12;;4523:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4686:12:2;;;-1:-1:-1;;;;;4639:44:2;;;;;;:22;:44;;;;;;;;:59;;;4711:31;;;:17;:31;;;;;4755:15;4711:41;;;;:59;4827:12;;4781:31;;;;;;:58;;;4850:52;;:75;;-1:-1:-1;;;;;;4850:75:2;;;;;;;4954:12;;4936:31;;;:41;:54;4980:10;4936:41;:54;:::i;:::-;-1:-1:-1;5055:12:2;;5008:60;;-1:-1:-1;;;;;5008:60:2;;;;;;;;4335:741;;4156:920;;;;;;:::o;637:140:3:-;573:6;;-1:-1:-1;;;;;573:6:3;410:10:0;573:22:3;565:44;;;;-1:-1:-1;;;565:44:3;;;;;;;:::i;:::-;736:1:::1;720:6:::0;;699:40:::1;::::0;-1:-1:-1;;;;;720:6:3;;::::1;::::0;699:40:::1;::::0;736:1;;699:40:::1;767:1;750:19:::0;;-1:-1:-1;;;;;;750:19:3::1;::::0;;637:140::o;1129:54:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1129:54:2;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;572:202:7:-;573:6:3;;-1:-1:-1;;;;;573:6:3;410:10:0;573:22:3;565:44;;;;-1:-1:-1;;;565:44:3;;;;;;;:::i;:::-;730:36:7::1;::::0;-1:-1:-1;;;730:36:7;;-1:-1:-1;;;;;14567:32:8;;;730:36:7::1;::::0;::::1;14549:51:8::0;14616:18;;;14609:34;;;706:12:7;;730:22;;::::1;::::0;::::1;::::0;14522:18:8;;730:36:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;665:109;572:202:::0;;;:::o;2549:912:2:-;2755:17;;;2769:2;2755:17;;;;;;;;;2664:16;;;;;;2728:24;;2755:17;;;;;;;;;-1:-1:-1;;2813:17:2;;;2827:2;2813:17;;;;;;;;;2728:44;;-1:-1:-1;2783:27:2;;2813:17;-1:-1:-1;2813:17:2;;;;;;;;-1:-1:-1;;2869:16:2;;;2882:2;2869:16;;;;;;;;;2783:47;;-1:-1:-1;2841:25:2;;2869:16;-1:-1:-1;2869:16:2;;;;;;;;;;;;;;;;;;;;2841:44;;2938:13;-1:-1:-1;;;;;2931:30:2;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2918:45;;:7;2926:1;2918:10;;;;;;;;:::i;:::-;;;;;;:45;;;;;2994:13;-1:-1:-1;;;;;2987:33:2;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2974:7;2982:1;2974:10;;;;;;;;:::i;:::-;;;;;;;;;;:48;3048;;-1:-1:-1;;;3048:48:2;;-1:-1:-1;;;;;6902:32:8;;;3048:48:2;;;6884:51:8;3048:31:2;;;;;6857:18:8;;3048:48:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3035:7;3043:1;3035:10;;;;;;;;:::i;:::-;;;;;;;;;;:61;3120:64;;-1:-1:-1;;;3120:64:2;;-1:-1:-1;;;;;15325:15:8;;;3120:64:2;;;15307:34:8;15377:15;;;15357:18;;;15350:43;3120:31:2;;;;;15242:18:8;;3120:64:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3107:7;3115:1;3107:10;;;;;;;;:::i;:::-;;;;;;:77;;;;;3243:13;-1:-1:-1;;;;;3236:27:2;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3220:10;3231:1;3220:13;;;;;;;;:::i;:::-;;;;;;:45;-1:-1:-1;;;;;3220:45:2;;;-1:-1:-1;;;;;3220:45:2;;;;;3322:13;-1:-1:-1;;;;;3315:26:2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3315:28:2;;;;;;;;;;;;:::i;:::-;3300:9;3310:1;3300:12;;;;;;;;:::i;:::-;;;;;;:43;;;;3376:13;-1:-1:-1;;;;;3369:28:2;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3369:30:2;;;;;;;;;;;;:::i;:::-;3354:9;3364:1;3354:12;;;;;;;;:::i;:::-;;;;;;;;;;:45;3422:7;;3431:10;;-1:-1:-1;3422:7:2;;-1:-1:-1;2549:912:2;-1:-1:-1;;;;2549:912:2:o;3846:302::-;3942:17;:15;:17::i;:::-;3985:31;;;;:17;:31;;;;;;;;;:52;;;3978:68;;-1:-1:-1;;;3978:68:2;;;;4050:10;;-1:-1:-1;;;;;3985:52:2;;;;3978:66;;:68;;;;;;;;;;;3985:52;3978:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3978:82:2;;3970:105;;;;-1:-1:-1;;;3970:105:2;;16516:2:8;3970:105:2;;;16498:21:8;16555:2;16535:18;;;16528:30;-1:-1:-1;;;16574:18:8;;;16567:40;16624:18;;3970:105:2;16314:334:8;3970:105:2;4086:31;;;;:17;:31;;;;;:41;;:54;4130:10;4086:41;:54;:::i;:::-;;3846:302;;:::o;3469:369::-;-1:-1:-1;;;;;3706:45:2;;3683:20;3706:45;;;:22;:45;;;;;;3604:16;;;;;;;;3769:61;3706:45;3799:13;3814:15;3769;:61::i;:::-;3762:68;;;;;;;;;3469:369;;;;;;;:::o;361:179:7:-;573:6:3;;-1:-1:-1;;;;;573:6:3;410:10:0;573:22:3;565:44;;;;-1:-1:-1;;;565:44:3;;;;;;;:::i;:::-;441:9:7::1;456:3;-1:-1:-1::0;;;;;456:8:7::1;472:7;456:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;440:44;;;503:4;495:37;;;::::0;-1:-1:-1;;;495:37:7;;17065:2:8;495:37:7::1;::::0;::::1;17047:21:8::0;17104:2;17084:18;;;17077:30;-1:-1:-1;;;17123:18:8;;;17116:50;17183:18;;495:37:7::1;16863:344:8::0;785:109:3;573:6;;-1:-1:-1;;;;;573:6:3;410:10:0;573:22:3;565:44;;;;-1:-1:-1;;;565:44:3;;;;;;;:::i;:::-;858:28:::1;877:8;-1:-1:-1::0;;;;;976:22:3;;968:73;;;;-1:-1:-1;;;968:73:3;;17414:2:8;968:73:3;;;17396:21:8;17453:2;17433:18;;;17426:30;17492:34;17472:18;;;17465:62;-1:-1:-1;;;17543:18:8;;;17536:36;17589:19;;968:73:3;17212:402:8;968:73:3;1078:6;;;1057:38;;-1:-1:-1;;;;;1057:38:3;;;;1078:6;;;1057:38;;;1106:6;:17;;-1:-1:-1;;;;;;1106:17:3;-1:-1:-1;;;;;1106:17:3;;;;;;;;;;902:229::o;-1:-1:-1:-;;;;;;;;:::o;196:131:8:-;-1:-1:-1;;;;;271:31:8;;261:42;;251:70;;317:1;314;307:12;332:456;409:6;417;425;478:2;466:9;457:7;453:23;449:32;446:52;;;494:1;491;484:12;446:52;530:9;517:23;507:33;;590:2;579:9;575:18;562:32;603:31;628:5;603:31;:::i;:::-;653:5;-1:-1:-1;710:2:8;695:18;;682:32;723:33;682:32;723:33;:::i;:::-;775:7;765:17;;;332:456;;;;;:::o;793:435::-;846:3;884:5;878:12;911:6;906:3;899:19;937:4;966:2;961:3;957:12;950:19;;1003:2;996:5;992:14;1024:1;1034:169;1048:6;1045:1;1042:13;1034:169;;;1109:13;;1097:26;;1143:12;;;;1178:15;;;;1070:1;1063:9;1034:169;;;-1:-1:-1;1219:3:8;;793:435;-1:-1:-1;;;;;793:435:8:o;1233:461::-;1286:3;1324:5;1318:12;1351:6;1346:3;1339:19;1377:4;1406:2;1401:3;1397:12;1390:19;;1443:2;1436:5;1432:14;1464:1;1474:195;1488:6;1485:1;1482:13;1474:195;;;1553:13;;-1:-1:-1;;;;;1549:39:8;1537:52;;1609:12;;;;1644:15;;;;1585:1;1503:9;1474:195;;1699:250;1784:1;1794:113;1808:6;1805:1;1802:13;1794:113;;;1884:11;;;1878:18;1865:11;;;1858:39;1830:2;1823:10;1794:113;;;-1:-1:-1;;1941:1:8;1923:16;;1916:27;1699:250::o;1954:271::-;1996:3;2034:5;2028:12;2061:6;2056:3;2049:19;2077:76;2146:6;2139:4;2134:3;2130:14;2123:4;2116:5;2112:16;2077:76;:::i;:::-;2207:2;2186:15;-1:-1:-1;;2182:29:8;2173:39;;;;2214:4;2169:50;;1954:271;-1:-1:-1;;1954:271:8:o;2230:567::-;2282:3;2320:5;2314:12;2347:6;2342:3;2335:19;2373:4;2402:2;2397:3;2393:12;2386:19;;2427:3;2467:6;2464:1;2460:14;2455:3;2451:24;2509:2;2502:5;2498:14;2530:1;2540:231;2554:6;2551:1;2548:13;2540:231;;;2625:5;2619:4;2615:16;2610:3;2603:29;2653:38;2686:4;2677:6;2671:13;2653:38;:::i;:::-;2749:12;;;;2645:46;-1:-1:-1;2714:15:8;;;;2576:1;2569:9;2540:231;;;-1:-1:-1;2787:4:8;;2230:567;-1:-1:-1;;;;;;;2230:567:8:o;2802:1211::-;3229:3;3218:9;3211:22;3192:4;3256:57;3308:3;3297:9;3293:19;3285:6;3256:57;:::i;:::-;3332:2;3382:9;3374:6;3370:22;3365:2;3354:9;3350:18;3343:50;3416:44;3453:6;3445;3416:44;:::i;:::-;3496:22;;;3491:2;3476:18;;3469:50;3568:13;;3590:22;;;3666:15;;;;-1:-1:-1;3628:15:8;;;;3699:1;3709:185;3723:6;3720:1;3717:13;3709:185;;;3798:13;;3791:21;3784:29;3772:42;;3869:15;;;;3834:12;;;;3745:1;3738:9;3709:185;;;3713:3;;3939:9;3934:3;3930:19;3925:2;3914:9;3910:18;3903:47;3967:40;4003:3;3995:6;3967:40;:::i;:::-;3959:48;2802:1211;-1:-1:-1;;;;;;;;;2802:1211:8:o;4018:247::-;4077:6;4130:2;4118:9;4109:7;4105:23;4101:32;4098:52;;;4146:1;4143;4136:12;4098:52;4185:9;4172:23;4204:31;4229:5;4204:31;:::i;:::-;4254:5;4018:247;-1:-1:-1;;;4018:247:8:o;4270:180::-;4329:6;4382:2;4370:9;4361:7;4357:23;4353:32;4350:52;;;4398:1;4395;4388:12;4350:52;-1:-1:-1;4421:23:8;;4270:180;-1:-1:-1;4270:180:8:o;4455:127::-;4516:10;4511:3;4507:20;4504:1;4497:31;4547:4;4544:1;4537:15;4571:4;4568:1;4561:15;4587:275;4658:2;4652:9;4723:2;4704:13;;-1:-1:-1;;4700:27:8;4688:40;;4758:18;4743:34;;4779:22;;;4740:62;4737:88;;;4805:18;;:::i;:::-;4841:2;4834:22;4587:275;;-1:-1:-1;4587:275:8:o;4867:187::-;4916:4;4949:18;4941:6;4938:30;4935:56;;;4971:18;;:::i;:::-;-1:-1:-1;5037:2:8;5016:15;-1:-1:-1;;5012:29:8;5043:4;5008:40;;4867:187::o;5059:464::-;5102:5;5155:3;5148:4;5140:6;5136:17;5132:27;5122:55;;5173:1;5170;5163:12;5122:55;5209:6;5196:20;5240:49;5256:32;5285:2;5256:32;:::i;:::-;5240:49;:::i;:::-;5314:2;5305:7;5298:19;5360:3;5353:4;5348:2;5340:6;5336:15;5332:26;5329:35;5326:55;;;5377:1;5374;5367:12;5326:55;5442:2;5435:4;5427:6;5423:17;5416:4;5407:7;5403:18;5390:55;5490:1;5465:16;;;5483:4;5461:27;5454:38;;;;5469:7;5059:464;-1:-1:-1;;;5059:464:8:o;5528:114::-;5612:4;5605:5;5601:16;5594:5;5591:27;5581:55;;5632:1;5629;5622:12;5647:1086;5779:6;5787;5795;5803;5811;5819;5872:3;5860:9;5851:7;5847:23;5843:33;5840:53;;;5889:1;5886;5879:12;5840:53;5929:9;5916:23;5958:18;5999:2;5991:6;5988:14;5985:34;;;6015:1;6012;6005:12;5985:34;6038:50;6080:7;6071:6;6060:9;6056:22;6038:50;:::i;:::-;6028:60;;6141:2;6130:9;6126:18;6113:32;6097:48;;6170:2;6160:8;6157:16;6154:36;;;6186:1;6183;6176:12;6154:36;6209:52;6253:7;6242:8;6231:9;6227:24;6209:52;:::i;:::-;6199:62;;6311:2;6300:9;6296:18;6283:32;6270:45;;6324:29;6347:5;6324:29;:::i;:::-;6372:5;;-1:-1:-1;6424:2:8;6409:18;;6396:32;;-1:-1:-1;6480:3:8;6465:19;;6452:33;;6494;6452;6494;:::i;:::-;6546:7;;-1:-1:-1;6606:3:8;6591:19;;6578:33;;6623:16;;;6620:36;;;6652:1;6649;6642:12;6620:36;;6675:52;6719:7;6708:8;6697:9;6693:24;6675:52;:::i;:::-;6665:62;;;5647:1086;;;;;;;;:::o;6946:461::-;7179:6;7168:9;7161:25;7222:6;7217:2;7206:9;7202:18;7195:34;7294:1;7290;7285:3;7281:11;7277:19;7269:6;7265:32;7260:2;7249:9;7245:18;7238:60;7334:3;7329:2;7318:9;7314:18;7307:31;7142:4;7355:46;7396:3;7385:9;7381:19;7373:6;7355:46;:::i;:::-;7347:54;6946:461;-1:-1:-1;;;;;;6946:461:8:o;7412:456::-;7489:6;7497;7505;7558:2;7546:9;7537:7;7533:23;7529:32;7526:52;;;7574:1;7571;7564:12;7526:52;7613:9;7600:23;7632:31;7657:5;7632:31;:::i;:::-;7682:5;-1:-1:-1;7739:2:8;7724:18;;7711:32;7752:33;7711:32;7752:33;:::i;:::-;7412:456;;7804:7;;-1:-1:-1;;;7858:2:8;7843:18;;;;7830:32;;7412:456::o;7873:529::-;7950:6;7958;7966;8019:2;8007:9;7998:7;7994:23;7990:32;7987:52;;;8035:1;8032;8025:12;7987:52;8074:9;8061:23;8093:31;8118:5;8093:31;:::i;:::-;8143:5;-1:-1:-1;8200:2:8;8185:18;;8172:32;8213:33;8172:32;8213:33;:::i;8407:688::-;8762:2;8751:9;8744:21;8725:4;8788:56;8840:2;8829:9;8825:18;8817:6;8788:56;:::i;:::-;8892:9;8884:6;8880:22;8875:2;8864:9;8860:18;8853:50;8926:44;8963:6;8955;8926:44;:::i;:::-;8912:58;;9018:9;9010:6;9006:22;9001:2;8990:9;8986:18;8979:50;9046:43;9082:6;9074;9046:43;:::i;9100:390::-;9178:6;9186;9239:2;9227:9;9218:7;9214:23;9210:32;9207:52;;;9255:1;9252;9245:12;9207:52;9291:9;9278:23;9268:33;;9352:2;9341:9;9337:18;9324:32;9379:18;9371:6;9368:30;9365:50;;;9411:1;9408;9401:12;9365:50;9434;9476:7;9467:6;9456:9;9452:22;9434:50;:::i;:::-;9424:60;;;9100:390;;;;;:::o;9495:315::-;9563:6;9571;9624:2;9612:9;9603:7;9599:23;9595:32;9592:52;;;9640:1;9637;9630:12;9592:52;9679:9;9666:23;9698:31;9723:5;9698:31;:::i;:::-;9748:5;9800:2;9785:18;;;;9772:32;;-1:-1:-1;;;9495:315:8:o;9815:127::-;9876:10;9871:3;9867:20;9864:1;9857:31;9907:4;9904:1;9897:15;9931:4;9928:1;9921:15;9947:380;10026:1;10022:12;;;;10069;;;10090:61;;10144:4;10136:6;10132:17;10122:27;;10090:61;10197:2;10189:6;10186:14;10166:18;10163:38;10160:161;;10243:10;10238:3;10234:20;10231:1;10224:31;10278:4;10275:1;10268:15;10306:4;10303:1;10296:15;10160:161;;9947:380;;;:::o;10678:332::-;10880:2;10862:21;;;10919:1;10899:18;;;10892:29;-1:-1:-1;;;10952:2:8;10937:18;;10930:39;11001:2;10986:18;;10678:332::o;11015:232::-;11054:3;11075:17;;;11072:140;;11134:10;11129:3;11125:20;11122:1;11115:31;11169:4;11166:1;11159:15;11197:4;11194:1;11187:15;11072:140;-1:-1:-1;11239:1:8;11228:13;;11015:232::o;11252:632::-;11529:3;11518:9;11511:22;11492:4;11556:46;11597:3;11586:9;11582:19;11574:6;11556:46;:::i;:::-;11650:9;11642:6;11638:22;11633:2;11622:9;11618:18;11611:50;11678:33;11704:6;11696;11678:33;:::i;:::-;11759:4;11747:17;;;;11742:2;11727:18;;11720:45;-1:-1:-1;;11796:2:8;11781:18;;11774:34;;;;-1:-1:-1;;;;;11845:32:8;11839:3;11824:19;;;11817:61;11670:41;11252:632;-1:-1:-1;;11252:632:8:o;11889:277::-;11956:6;12009:2;11997:9;11988:7;11984:23;11980:32;11977:52;;;12025:1;12022;12015:12;11977:52;12057:9;12051:16;12110:5;12103:13;12096:21;12089:5;12086:32;12076:60;;12132:1;12129;12122:12;12297:545;12399:2;12394:3;12391:11;12388:448;;;12435:1;12460:5;12456:2;12449:17;12505:4;12501:2;12491:19;12575:2;12563:10;12559:19;12556:1;12552:27;12546:4;12542:38;12611:4;12599:10;12596:20;12593:47;;;-1:-1:-1;12634:4:8;12593:47;12689:2;12684:3;12680:12;12677:1;12673:20;12667:4;12663:31;12653:41;;12744:82;12762:2;12755:5;12752:13;12744:82;;;12807:17;;;12788:1;12777:13;12744:82;;;12748:3;;;12297:545;;;:::o;13018:1352::-;13144:3;13138:10;13171:18;13163:6;13160:30;13157:56;;;13193:18;;:::i;:::-;13222:97;13312:6;13272:38;13304:4;13298:11;13272:38;:::i;:::-;13266:4;13222:97;:::i;:::-;13374:4;;13438:2;13427:14;;13455:1;13450:663;;;;14157:1;14174:6;14171:89;;;-1:-1:-1;14226:19:8;;;14220:26;14171:89;-1:-1:-1;;12975:1:8;12971:11;;;12967:24;12963:29;12953:40;12999:1;12995:11;;;12950:57;14273:81;;13420:944;;13450:663;12244:1;12237:14;;;12281:4;12268:18;;-1:-1:-1;;13486:20:8;;;13604:236;13618:7;13615:1;13612:14;13604:236;;;13707:19;;;13701:26;13686:42;;13799:27;;;;13767:1;13755:14;;;;13634:19;;13604:236;;;13608:3;13868:6;13859:7;13856:19;13853:201;;;13929:19;;;13923:26;-1:-1:-1;;14012:1:8;14008:14;;;14024:3;14004:24;14000:37;13996:42;13981:58;13966:74;;13853:201;-1:-1:-1;;;;;14100:1:8;14084:14;;;14080:22;14067:36;;-1:-1:-1;13018:1352:8:o;14654:247::-;14722:6;14775:2;14763:9;14754:7;14750:23;14746:32;14743:52;;;14791:1;14788;14781:12;14743:52;14823:9;14817:16;14842:29;14865:5;14842:29;:::i;14906:184::-;14976:6;15029:2;15017:9;15008:7;15004:23;15000:32;14997:52;;;15045:1;15042;15035:12;14997:52;-1:-1:-1;15068:16:8;;14906:184;-1:-1:-1;14906:184:8:o;15404:251::-;15474:6;15527:2;15515:9;15506:7;15502:23;15498:32;15495:52;;;15543:1;15540;15533:12;15495:52;15575:9;15569:16;15594:31;15619:5;15594:31;:::i;15660:649::-;15740:6;15793:2;15781:9;15772:7;15768:23;15764:32;15761:52;;;15809:1;15806;15799:12;15761:52;15842:9;15836:16;15875:18;15867:6;15864:30;15861:50;;;15907:1;15904;15897:12;15861:50;15930:22;;15983:4;15975:13;;15971:27;-1:-1:-1;15961:55:8;;16012:1;16009;16002:12;15961:55;16041:2;16035:9;16066:49;16082:32;16111:2;16082:32;:::i;16066:49::-;16138:2;16131:5;16124:17;16178:7;16173:2;16168;16164;16160:11;16156:20;16153:33;16150:53;;;16199:1;16196;16189:12;16150:53;16212:67;16276:2;16271;16264:5;16260:14;16255:2;16251;16247:11;16212:67;:::i;:::-;16298:5;15660:649;-1:-1:-1;;;;;15660:649:8:o
Swarm Source
ipfs://5ebcf521f84ebbbd5a8b55d16b0f0adba9c3be75f2bcd2bb1d0febf61383686a
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
FTM | 100.00% | $0.5272 | 84.01 | $44.29 |
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.