Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
9,497.2390999999709 ERC20 ***
Holders
7
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.0001 ERC20 ***Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xd8C89b89...13b37A0F3 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
GOFVault
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-27 */ pragma solidity ^0.5.16; library Math { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return 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; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() internal { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return _msgSender() == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } function toPayable(address account) internal pure returns (address payable){ return address(uint160(account)); } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add( value ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor(string memory name, string memory symbol, uint8 decimals ) public { _name = name; _symbol = symbol; _decimals = decimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } /** * @dev Vaults Token StrategyController Interface */ interface IGOFStrategyController { function withdraw(address, uint256) external; function balanceOf(address) external view returns (uint256); function earn(address, uint256) external; function rewards() external view returns (address); } /** * @dev Vault Contract */ contract GOFVault is ERC20, ERC20Detailed{ using SafeERC20 for IERC20; using Address for address; using SafeMath for uint256; //staking token IERC20 public token; IERC20 public GOF = IERC20(0x488E0369f9BC5C40C002eA7c1fe4fd01A198801c); uint256 public min = 9500; uint256 public constant max = 10000; uint256 public earnLowerlimit; //池内空余资金到这个值就自动earn address public governance; address public controller; //UserAssets struct UserAssets { uint256 stakeAmount; // 总质押总数 uint256 payout; // uint256 totalRewardPaid; // 已经领取的分红 } mapping(address => UserAssets) public userAssetsMapping; //Global struct Global { uint256 totalStakeAmount; // 总质押总数 uint256 totalSharedAmount; // 总分红金额 uint256 earningsPerShare; // 每股分红 } Global public global; mapping(address => uint256) public lastDepositTime; uint256 internal constant magnitude = 10**40; constructor( address _token, address _controller, uint256 _earnLowerlimit ) public ERC20Detailed( string(abi.encodePacked("golff ", ERC20Detailed(_token).name())), string(abi.encodePacked("g", ERC20Detailed(_token).symbol())), ERC20Detailed(_token).decimals() ) { token = IERC20(_token); earnLowerlimit = _earnLowerlimit * 1e18; governance = tx.origin; controller = _controller; } function stakeToken() external view returns (address) { return address(token); } function balance() public view returns (uint256) { return token.balanceOf(address(this)).add( IGOFStrategyController(controller).balanceOf(address(token)) ); } function setMin(uint256 _min) external { require(msg.sender == governance, "Golff:!governance"); min = _min; } function setGovernance(address _governance) public { require(msg.sender == governance, "Golff:!governance"); governance = _governance; } function setController(address _controller) public { require(msg.sender == governance, "Golff:!governance"); controller = _controller; } function setEarnLowerlimit(uint256 _earnLowerlimit) public { require(msg.sender == governance, "Golff:!governance"); earnLowerlimit = _earnLowerlimit; } // Custom logic in here for how much the vault allows to be borrowed // Sets minimum required on-hand to keep small withdrawals cheap function available() public view returns (uint256) { return token.balanceOf(address(this)).mul(min).div(max); } /** * 通过控制调用策略,赚取收益 */ function earn() public { //获取余额,并将余额转到策略控制器 uint256 _bal = available(); token.safeTransfer(controller, _bal); //让策略控制进行进行收益投放 IGOFStrategyController(controller).earn(address(token), _bal); } /** * 存入所有 */ function depositAll() external { deposit(token.balanceOf(msg.sender)); } /** * 存款 */ function deposit(uint256 _amount) public { //用户授权,将资金存入Vault uint256 _before = token.balanceOf(address(this)); token.safeTransferFrom(msg.sender, address(this), _amount); uint256 _after = token.balanceOf(address(this)); _amount = _after.sub(_before); _mint(msg.sender, _amount); UserAssets storage _userAssets = userAssetsMapping[msg.sender]; //用户质押金额增加 _userAssets.stakeAmount = _userAssets.stakeAmount.add(_amount); if (global.earningsPerShare != 0) { //计算用户的存入数量产生的收益 _userAssets.payout = _userAssets.payout.add( global.earningsPerShare.mul(_amount).sub(1).div(magnitude).add( 1 ) ); } //增加总质押金额 global.totalStakeAmount = global.totalStakeAmount.add(_amount); //如果当前月余额高于阀值,投放资金获取收益 if (token.balanceOf(address(this)) > earnLowerlimit) { earn(); } //记录用户的质押时间 lastDepositTime[msg.sender] = now; } /** * No rebalance implementation for lower fees and faster swaps * 用户提现 */ function withdraw(uint256 amount) external { //燃烧掉 _burn(msg.sender, amount); //先领取收益 getReward(); require( amount <= userAssetsMapping[msg.sender].stakeAmount, "Golff:!balance" ); uint256 _amount = amount; uint256 _before = token.balanceOf(address(this)); //如果当前余额不够,从控制器中提现缺少资金过来 if (_before < _amount) { uint256 _withdraw = _amount.sub(_before); IGOFStrategyController(controller).withdraw(address(token), _withdraw); uint256 _after = token.balanceOf(address(this)); uint256 _diff = _after.sub(_before); if (_diff < _withdraw) { _amount = _before.add(_diff); } } //减少用户待付收益 userAssetsMapping[msg.sender].payout = userAssetsMapping[msg.sender] .payout .sub(global.earningsPerShare.mul(amount).div(magnitude)); //减少用户的质押额度 userAssetsMapping[msg.sender].stakeAmount = userAssetsMapping[msg .sender] .stakeAmount .sub(amount); //减少总的质押额度 global.totalStakeAmount = global.totalStakeAmount.sub(amount); //提现到用户的钱包 token.safeTransfer(msg.sender, _amount); } /** * 分发收益,重新计算每股的分控收益 */ function distributeReward(uint256 amount) public { require(amount > 0, "Golff:not 0"); require(global.totalStakeAmount > 0, "Golff: Total stake amount larger than 0"); GOF.safeTransferFrom(msg.sender, address(this), amount); global.earningsPerShare = global.earningsPerShare.add( amount.mul(magnitude).div(global.totalStakeAmount) ); global.totalSharedAmount = global.totalSharedAmount.add(amount); } /** * 计算用户当前收益 */ function earned(address user) public view returns (uint256) { uint256 _reward = global .earningsPerShare .mul(userAssetsMapping[user].stakeAmount) .div(magnitude); if (_reward <= userAssetsMapping[user].payout) { return 0; } else { return _reward.sub(userAssetsMapping[user].payout); } } function earnedPending(uint256 _pendingBalance, address user) public view returns (uint256) { uint256 _earningsPerShare = global.earningsPerShare.add( _pendingBalance.mul(magnitude).div(global.totalStakeAmount) ); uint256 _reward = _earningsPerShare .mul(userAssetsMapping[user].stakeAmount) .div(magnitude); _reward = _reward.sub(earned(user)); if (_reward <= userAssetsMapping[user].payout) { return 0; } else { return _reward.sub(userAssetsMapping[user].payout); } } /** * 领取收益 */ function getReward() public { uint256 _reward = earned(msg.sender); userAssetsMapping[msg.sender].payout = global .earningsPerShare .mul(userAssetsMapping[msg.sender].stakeAmount) .div(magnitude); userAssetsMapping[msg.sender].totalRewardPaid = userAssetsMapping[msg .sender] .totalRewardPaid .add(_reward); if (_reward > 0) { uint256 _depositTime = now - lastDepositTime[msg.sender]; if (_depositTime < 1 days) { //deposit in 24h uint256 _actualReward = _depositTime .mul(_reward) .mul(1e18) .div(1 days) .div(1e18); uint256 _teamAomunt = _reward.sub(_actualReward); GOF.safeTransfer(IGOFStrategyController(controller).rewards(), _teamAomunt); _reward = _actualReward; } GOF.safeTransfer(msg.sender, _reward); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_controller","type":"address"},{"internalType":"uint256","name":"_earnLowerlimit","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"GOF","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"available","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributeReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"earn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"earnLowerlimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_pendingBalance","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"earnedPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"global","outputs":[{"internalType":"uint256","name":"totalStakeAmount","type":"uint256"},{"internalType":"uint256","name":"totalSharedAmount","type":"uint256"},{"internalType":"uint256","name":"earningsPerShare","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDepositTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_earnLowerlimit","type":"uint256"}],"name":"setEarnLowerlimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"}],"name":"setMin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userAssetsMapping","outputs":[{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"totalRewardPaid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405273488e0369f9bc5c40c002ea7c1fe4fd01a198801c600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061251c6007553480156200006c57600080fd5b506040516200450538038062004505833981810160405260608110156200009257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620000fe57600080fd5b505afa15801562000113573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156200013e57600080fd5b81019080805160405193929190846401000000008211156200015f57600080fd5b838201915060208201858111156200017657600080fd5b82518660018202830111640100000000821117156200019457600080fd5b8083526020830192505050908051906020019080838360005b83811015620001ca578082015181840152602081019050620001ad565b50505050905090810190601f168015620001f85780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f676f6c666620000000000000000000000000000000000000000000000000000081525060060182805190602001908083835b602083106200025f57805182526020820191506020810190506020830392506200023a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528373ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620002da57600080fd5b505afa158015620002ef573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156200031a57600080fd5b81019080805160405193929190846401000000008211156200033b57600080fd5b838201915060208201858111156200035257600080fd5b82518660018202830111640100000000821117156200037057600080fd5b8083526020830192505050908051906020019080838360005b83811015620003a657808201518184015260208101905062000389565b50505050905090810190601f168015620003d45780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f670000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106200043b578051825260208201915060208101905060208303925062000416565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b657600080fd5b505afa158015620004cb573d6000803e3d6000fd5b505050506040513d6020811015620004e257600080fd5b810190808051906020019092919050505082600390805190602001906200050b92919062000620565b5081600490805190602001906200052492919062000620565b5080600560006101000a81548160ff021916908360ff16021790555050505082600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000810260088190555032600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620006cf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200066357805160ff191683800117855562000694565b8280016001018555821562000694579182015b828111156200069357825182559160200191906001019062000676565b5b509050620006a39190620006a7565b5090565b620006cc91905b80821115620006c8576000816000905550600101620006ae565b5090565b90565b613e2680620006df6000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80638e087c7811610125578063b69ef8a8116100ad578063de5f62681161007c578063de5f626814610a6c578063e17ece1114610a76578063f77c479114610adc578063f889794514610b26578063fc0c546a14610b445761021b565b8063b69ef8a81461099e578063b6b55f25146109bc578063d389800f146109ea578063dd62ed3e146109f45761021b565b806395d89b41116100f457806395d89b41146107df578063a05f990614610862578063a457c2d71461088e578063a9059cbb146108f4578063ab033ea91461095a5761021b565b80638e087c7814610721578063909d3f4c1461073f57806392eefe9b1461076d578063940a4e45146107b15761021b565b806339509351116101a857806351ed6a301161017757806351ed6a30146105b55780635aa6e675146105ff5780636ac5db191461064957806370a0823114610667578063875c1705146106bf5761021b565b806339509351146104f95780633d18b9121461055f57806345dc3dd81461056957806348a0d754146105975761021b565b806317edfe32116101ef57806317edfe32146103b957806318160ddd1461040357806323b872dd146104215780632e1a7d4d146104a7578063313ce567146104d55761021b565b80628cc26214610220578063025277531461027857806306fdde03146102d0578063095ea7b314610353575b600080fd5b6102626004803603602081101561023657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b8e565b6040518082815260200191505060405180910390f35b6102ba6004803603602081101561028e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cc1565b6040518082815260200191505060405180910390f35b6102d8610cd9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103185780820151818401526020810190506102fd565b50505050905090810190601f1680156103455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61039f6004803603604081101561036957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7b565b604051808215151515815260200191505060405180910390f35b6103c1610d99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040b610dbf565b6040518082815260200191505060405180910390f35b61048d6004803603606081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc9565b604051808215151515815260200191505060405180910390f35b6104d3600480360360208110156104bd57600080fd5b8101908080359060200190929190505050610ea2565b005b6104dd61144b565b604051808260ff1660ff16815260200191505060405180910390f35b6105456004803603604081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611462565b604051808215151515815260200191505060405180910390f35b610567611515565b005b6105956004803603602081101561057f57600080fd5b8101908080359060200190929190505050611898565b005b61059f611965565b6040518082815260200191505060405180910390f35b6105bd611a6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610607611a98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610651611abe565b6040518082815260200191505060405180910390f35b6106a96004803603602081101561067d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac4565b6040518082815260200191505060405180910390f35b61070b600480360360408110156106d557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0c565b6040518082815260200191505060405180910390f35b610729611cb0565b6040518082815260200191505060405180910390f35b61076b6004803603602081101561075557600080fd5b8101908080359060200190929190505050611cb6565b005b6107af6004803603602081101561078357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d83565b005b6107dd600480360360208110156107c757600080fd5b8101908080359060200190929190505050611e8a565b005b6107e761202c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082757808201518184015260208101905061080c565b50505050905090810190601f1680156108545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61086a6120ce565b60405180848152602001838152602001828152602001935050505060405180910390f35b6108da600480360360408110156108a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120e6565b604051808215151515815260200191505060405180910390f35b6109406004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b3565b604051808215151515815260200191505060405180910390f35b61099c6004803603602081101561097057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121d1565b005b6109a66122d8565b6040518082815260200191505060405180910390f35b6109e8600480360360208110156109d257600080fd5b81019080803590602001909291905050506124c6565b005b6109f2612936565b005b610a5660048036036040811015610a0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a97565b6040518082815260200191505060405180910390f35b610a74612b1e565b005b610ab860048036036020811015610a8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c02565b60405180848152602001838152602001828152602001935050505060405180910390f35b610ae4612c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b2e612c52565b6040518082815260200191505060405180910390f35b610b4c612c58565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080610c0e701d6329f1c35ca4bfabb9f5610000000000610c00600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c60020154612c7e90919063ffffffff16565b612d0490919063ffffffff16565b9050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111610c63576000915050610cbc565b610cb8600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612d4e90919063ffffffff16565b9150505b919050565b600f6020528060005260406000206000915090505481565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b5050505050905090565b6000610d8f610d88612d98565b8484612da0565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610dd6848484612f97565b610e9784610de2612d98565b610e9285604051806060016040528060288152602001613d1160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e48612d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b612da0565b600190509392505050565b610eac338261330d565b610eb4611515565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154811115610f6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f476f6c66663a2162616c616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b60008190506000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d602081101561103c57600080fd5b810190808051906020019092919050505090508181101561126857600061106c8284612d4e90919063ffffffff16565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a3600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561113957600080fd5b505af115801561114d573d6000803e3d6000fd5b505050506000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111f257600080fd5b505afa158015611206573d6000803e3d6000fd5b505050506040513d602081101561121c57600080fd5b8101908080519060200190929190505050905060006112448483612d4e90919063ffffffff16565b9050828110156112645761126181856134c590919063ffffffff16565b94505b5050505b6112f76112a6701d6329f1c35ca4bfabb9f561000000000061129886600c60020154612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612d4e90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061139283600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612d4e90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506113f083600c60000154612d4e90919063ffffffff16565b600c600001819055506114463383600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b505050565b6000600560009054906101000a900460ff16905090565b600061150b61146f612d98565b846115068560016000611480612d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c590919063ffffffff16565b612da0565b6001905092915050565b600061152033610b8e565b905061159f701d6329f1c35ca4bfabb9f5610000000000611591600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c60020154612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061163a81600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546134c590919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000811115611895576000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203905062015180811015611846576000611738670de0b6b3a764000061172a6201518061171c670de0b6b3a764000061170e8989612c7e90919063ffffffff16565b612c7e90919063ffffffff16565b612d0490919063ffffffff16565b612d0490919063ffffffff16565b9050600061174f8285612d4e90919063ffffffff16565b9050611840600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b1580156117bc57600080fd5b505afa1580156117d0573d6000803e3d6000fd5b505050506040513d60208110156117e657600080fd5b810190808051906020019092919050505082600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b81935050505b6118933383600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b505b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6000611a69612710611a5b600754600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a1257600080fd5b505afa158015611a26573d6000803e3d6000fd5b505050506040513d6020811015611a3c57600080fd5b8101908080519060200190929190505050612c7e90919063ffffffff16565b612d0490919063ffffffff16565b905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080611b61611b4d600c60000154611b3f701d6329f1c35ca4bfabb9f561000000000088612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600c600201546134c590919063ffffffff16565b90506000611bdd701d6329f1c35ca4bfabb9f5610000000000611bcf600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015485612c7e90919063ffffffff16565b612d0490919063ffffffff16565b9050611bfa611beb85610b8e565b82612d4e90919063ffffffff16565b9050600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111611c5057600092505050611caa565b611ca5600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612d4e90919063ffffffff16565b925050505b92915050565b60085481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008111611f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f476f6c66663a6e6f74203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c6000015411611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613cc96027913960400191505060405180910390fd5b611fad333083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661361e909392919063ffffffff16565b611fff611feb600c60000154611fdd701d6329f1c35ca4bfabb9f561000000000085612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600c600201546134c590919063ffffffff16565b600c6002018190555061202081600c600101546134c590919063ffffffff16565b600c6001018190555050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120c45780601f10612099576101008083540402835291602001916120c4565b820191906000526020600020905b8154815290600101906020018083116120a757829003601f168201915b5050505050905090565b600c8060000154908060010154908060020154905083565b60006121a96120f3612d98565b846121a485604051806060016040528060258152602001613dcd602591396001600061211d612d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b612da0565b6001905092915050565b60006121c76121c0612d98565b8484612f97565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006124c1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561239e57600080fd5b505afa1580156123b2573d6000803e3d6000fd5b505050506040513d60208110156123c857600080fd5b8101908080519060200190929190505050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561247857600080fd5b505afa15801561248c573d6000803e3d6000fd5b505050506040513d60208110156124a257600080fd5b81019080805190602001909291905050506134c590919063ffffffff16565b905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561256757600080fd5b505afa15801561257b573d6000803e3d6000fd5b505050506040513d602081101561259157600080fd5b810190808051906020019092919050505090506125f3333084600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661361e909392919063ffffffff16565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561269457600080fd5b505afa1580156126a8573d6000803e3d6000fd5b505050506040513d60208110156126be57600080fd5b810190808051906020019092919050505090506126e48282612d4e90919063ffffffff16565b92506126f03384613724565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061274a8482600001546134c590919063ffffffff16565b81600001819055506000600c60020154146127df576127d66127c360016127b5701d6329f1c35ca4bfabb9f56100000000006127a760016127998b600c60020154612c7e90919063ffffffff16565b612d4e90919063ffffffff16565b612d0490919063ffffffff16565b6134c590919063ffffffff16565b82600101546134c590919063ffffffff16565b81600101819055505b6127f784600c600001546134c590919063ffffffff16565b600c60000181905550600854600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128a257600080fd5b505afa1580156128b6573d6000803e3d6000fd5b505050506040513d60208110156128cc57600080fd5b810190808051906020019092919050505011156128ec576128eb612936565b5b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6000612940611965565b90506129b1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02bf4b9600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612a7c57600080fd5b505af1158015612a90573d6000803e3d6000fd5b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612c00600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612bc057600080fd5b505afa158015612bd4573d6000803e3d6000fd5b505050506040513d6020811015612bea57600080fd5b81019080805190602001909291905050506124c6565b565b600b6020528060005260406000206000915090508060000154908060010154908060020154905083565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612c915760009050612cfe565b6000828402905082848281612ca257fe5b0414612cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613cf06021913960400191505060405180910390fd5b809150505b92915050565b6000612d4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138df565b905092915050565b6000612d9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061324d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613d7f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613c816022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561301d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613d5a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613c3c6023913960400191505060405180910390fd5b61310e81604051806060016040528060268152602001613ca3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906132fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132bf5780820151818401526020810190506132a4565b50505050905090810190601f1680156132ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613393576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613d396021913960400191505060405180910390fd5b6133fe81604051806060016040528060228152602001613c5f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345581600254612d4e90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015613543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b613619838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506139a5565b505050565b61371e848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506139a5565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6137dc816002546134c590919063ffffffff16565b600281905550613833816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808311829061398b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613950578082015181840152602081019050613935565b50505050905090810190601f16801561397d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161399757fe5b049050809150509392505050565b6139c48273ffffffffffffffffffffffffffffffffffffffff16613bf0565b613a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613a855780518252602082019150602081019050602083039250613a62565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ae7576040519150601f19603f3d011682016040523d82523d6000602084013e613aec565b606091505b509150915081613b64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115613bea57808060200190516020811015613b8357600080fd5b8101908080519060200190929190505050613be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613da3602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015613c325750808214155b9250505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365476f6c66663a20546f74616c207374616b6520616d6f756e74206c6172676572207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582086b29e7665c56f4977c14dabf1d72b14e292dd260a0c1aca475fe5b74aba415264736f6c634300051000320000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c209784b2e88d678041830a934c5a0cb25a14c0d0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021b5760003560e01c80638e087c7811610125578063b69ef8a8116100ad578063de5f62681161007c578063de5f626814610a6c578063e17ece1114610a76578063f77c479114610adc578063f889794514610b26578063fc0c546a14610b445761021b565b8063b69ef8a81461099e578063b6b55f25146109bc578063d389800f146109ea578063dd62ed3e146109f45761021b565b806395d89b41116100f457806395d89b41146107df578063a05f990614610862578063a457c2d71461088e578063a9059cbb146108f4578063ab033ea91461095a5761021b565b80638e087c7814610721578063909d3f4c1461073f57806392eefe9b1461076d578063940a4e45146107b15761021b565b806339509351116101a857806351ed6a301161017757806351ed6a30146105b55780635aa6e675146105ff5780636ac5db191461064957806370a0823114610667578063875c1705146106bf5761021b565b806339509351146104f95780633d18b9121461055f57806345dc3dd81461056957806348a0d754146105975761021b565b806317edfe32116101ef57806317edfe32146103b957806318160ddd1461040357806323b872dd146104215780632e1a7d4d146104a7578063313ce567146104d55761021b565b80628cc26214610220578063025277531461027857806306fdde03146102d0578063095ea7b314610353575b600080fd5b6102626004803603602081101561023657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b8e565b6040518082815260200191505060405180910390f35b6102ba6004803603602081101561028e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cc1565b6040518082815260200191505060405180910390f35b6102d8610cd9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103185780820151818401526020810190506102fd565b50505050905090810190601f1680156103455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61039f6004803603604081101561036957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7b565b604051808215151515815260200191505060405180910390f35b6103c1610d99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040b610dbf565b6040518082815260200191505060405180910390f35b61048d6004803603606081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc9565b604051808215151515815260200191505060405180910390f35b6104d3600480360360208110156104bd57600080fd5b8101908080359060200190929190505050610ea2565b005b6104dd61144b565b604051808260ff1660ff16815260200191505060405180910390f35b6105456004803603604081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611462565b604051808215151515815260200191505060405180910390f35b610567611515565b005b6105956004803603602081101561057f57600080fd5b8101908080359060200190929190505050611898565b005b61059f611965565b6040518082815260200191505060405180910390f35b6105bd611a6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610607611a98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610651611abe565b6040518082815260200191505060405180910390f35b6106a96004803603602081101561067d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac4565b6040518082815260200191505060405180910390f35b61070b600480360360408110156106d557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0c565b6040518082815260200191505060405180910390f35b610729611cb0565b6040518082815260200191505060405180910390f35b61076b6004803603602081101561075557600080fd5b8101908080359060200190929190505050611cb6565b005b6107af6004803603602081101561078357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d83565b005b6107dd600480360360208110156107c757600080fd5b8101908080359060200190929190505050611e8a565b005b6107e761202c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082757808201518184015260208101905061080c565b50505050905090810190601f1680156108545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61086a6120ce565b60405180848152602001838152602001828152602001935050505060405180910390f35b6108da600480360360408110156108a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120e6565b604051808215151515815260200191505060405180910390f35b6109406004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b3565b604051808215151515815260200191505060405180910390f35b61099c6004803603602081101561097057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121d1565b005b6109a66122d8565b6040518082815260200191505060405180910390f35b6109e8600480360360208110156109d257600080fd5b81019080803590602001909291905050506124c6565b005b6109f2612936565b005b610a5660048036036040811015610a0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a97565b6040518082815260200191505060405180910390f35b610a74612b1e565b005b610ab860048036036020811015610a8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c02565b60405180848152602001838152602001828152602001935050505060405180910390f35b610ae4612c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b2e612c52565b6040518082815260200191505060405180910390f35b610b4c612c58565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080610c0e701d6329f1c35ca4bfabb9f5610000000000610c00600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c60020154612c7e90919063ffffffff16565b612d0490919063ffffffff16565b9050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111610c63576000915050610cbc565b610cb8600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612d4e90919063ffffffff16565b9150505b919050565b600f6020528060005260406000206000915090505481565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b5050505050905090565b6000610d8f610d88612d98565b8484612da0565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610dd6848484612f97565b610e9784610de2612d98565b610e9285604051806060016040528060288152602001613d1160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e48612d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b612da0565b600190509392505050565b610eac338261330d565b610eb4611515565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154811115610f6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f476f6c66663a2162616c616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b60008190506000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d602081101561103c57600080fd5b810190808051906020019092919050505090508181101561126857600061106c8284612d4e90919063ffffffff16565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a3600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561113957600080fd5b505af115801561114d573d6000803e3d6000fd5b505050506000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111f257600080fd5b505afa158015611206573d6000803e3d6000fd5b505050506040513d602081101561121c57600080fd5b8101908080519060200190929190505050905060006112448483612d4e90919063ffffffff16565b9050828110156112645761126181856134c590919063ffffffff16565b94505b5050505b6112f76112a6701d6329f1c35ca4bfabb9f561000000000061129886600c60020154612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612d4e90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061139283600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612d4e90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506113f083600c60000154612d4e90919063ffffffff16565b600c600001819055506114463383600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b505050565b6000600560009054906101000a900460ff16905090565b600061150b61146f612d98565b846115068560016000611480612d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c590919063ffffffff16565b612da0565b6001905092915050565b600061152033610b8e565b905061159f701d6329f1c35ca4bfabb9f5610000000000611591600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c60020154612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061163a81600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546134c590919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000811115611895576000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203905062015180811015611846576000611738670de0b6b3a764000061172a6201518061171c670de0b6b3a764000061170e8989612c7e90919063ffffffff16565b612c7e90919063ffffffff16565b612d0490919063ffffffff16565b612d0490919063ffffffff16565b9050600061174f8285612d4e90919063ffffffff16565b9050611840600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b1580156117bc57600080fd5b505afa1580156117d0573d6000803e3d6000fd5b505050506040513d60208110156117e657600080fd5b810190808051906020019092919050505082600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b81935050505b6118933383600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b505b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6000611a69612710611a5b600754600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a1257600080fd5b505afa158015611a26573d6000803e3d6000fd5b505050506040513d6020811015611a3c57600080fd5b8101908080519060200190929190505050612c7e90919063ffffffff16565b612d0490919063ffffffff16565b905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080611b61611b4d600c60000154611b3f701d6329f1c35ca4bfabb9f561000000000088612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600c600201546134c590919063ffffffff16565b90506000611bdd701d6329f1c35ca4bfabb9f5610000000000611bcf600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015485612c7e90919063ffffffff16565b612d0490919063ffffffff16565b9050611bfa611beb85610b8e565b82612d4e90919063ffffffff16565b9050600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111611c5057600092505050611caa565b611ca5600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612d4e90919063ffffffff16565b925050505b92915050565b60085481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008111611f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f476f6c66663a6e6f74203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c6000015411611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613cc96027913960400191505060405180910390fd5b611fad333083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661361e909392919063ffffffff16565b611fff611feb600c60000154611fdd701d6329f1c35ca4bfabb9f561000000000085612c7e90919063ffffffff16565b612d0490919063ffffffff16565b600c600201546134c590919063ffffffff16565b600c6002018190555061202081600c600101546134c590919063ffffffff16565b600c6001018190555050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120c45780601f10612099576101008083540402835291602001916120c4565b820191906000526020600020905b8154815290600101906020018083116120a757829003601f168201915b5050505050905090565b600c8060000154908060010154908060020154905083565b60006121a96120f3612d98565b846121a485604051806060016040528060258152602001613dcd602591396001600061211d612d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b612da0565b6001905092915050565b60006121c76121c0612d98565b8484612f97565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f476f6c66663a21676f7665726e616e636500000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006124c1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561239e57600080fd5b505afa1580156123b2573d6000803e3d6000fd5b505050506040513d60208110156123c857600080fd5b8101908080519060200190929190505050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561247857600080fd5b505afa15801561248c573d6000803e3d6000fd5b505050506040513d60208110156124a257600080fd5b81019080805190602001909291905050506134c590919063ffffffff16565b905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561256757600080fd5b505afa15801561257b573d6000803e3d6000fd5b505050506040513d602081101561259157600080fd5b810190808051906020019092919050505090506125f3333084600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661361e909392919063ffffffff16565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561269457600080fd5b505afa1580156126a8573d6000803e3d6000fd5b505050506040513d60208110156126be57600080fd5b810190808051906020019092919050505090506126e48282612d4e90919063ffffffff16565b92506126f03384613724565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061274a8482600001546134c590919063ffffffff16565b81600001819055506000600c60020154146127df576127d66127c360016127b5701d6329f1c35ca4bfabb9f56100000000006127a760016127998b600c60020154612c7e90919063ffffffff16565b612d4e90919063ffffffff16565b612d0490919063ffffffff16565b6134c590919063ffffffff16565b82600101546134c590919063ffffffff16565b81600101819055505b6127f784600c600001546134c590919063ffffffff16565b600c60000181905550600854600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128a257600080fd5b505afa1580156128b6573d6000803e3d6000fd5b505050506040513d60208110156128cc57600080fd5b810190808051906020019092919050505011156128ec576128eb612936565b5b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6000612940611965565b90506129b1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661354d9092919063ffffffff16565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02bf4b9600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612a7c57600080fd5b505af1158015612a90573d6000803e3d6000fd5b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612c00600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612bc057600080fd5b505afa158015612bd4573d6000803e3d6000fd5b505050506040513d6020811015612bea57600080fd5b81019080805190602001909291905050506124c6565b565b600b6020528060005260406000206000915090508060000154908060010154908060020154905083565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612c915760009050612cfe565b6000828402905082848281612ca257fe5b0414612cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613cf06021913960400191505060405180910390fd5b809150505b92915050565b6000612d4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138df565b905092915050565b6000612d9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061324d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613d7f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613c816022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561301d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613d5a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613c3c6023913960400191505060405180910390fd5b61310e81604051806060016040528060268152602001613ca3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906132fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132bf5780820151818401526020810190506132a4565b50505050905090810190601f1680156132ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613393576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613d396021913960400191505060405180910390fd5b6133fe81604051806060016040528060228152602001613c5f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324d9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345581600254612d4e90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015613543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b613619838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506139a5565b505050565b61371e848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506139a5565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6137dc816002546134c590919063ffffffff16565b600281905550613833816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808311829061398b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613950578082015181840152602081019050613935565b50505050905090810190601f16801561397d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161399757fe5b049050809150509392505050565b6139c48273ffffffffffffffffffffffffffffffffffffffff16613bf0565b613a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613a855780518252602082019150602081019050602083039250613a62565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ae7576040519150601f19603f3d011682016040523d82523d6000602084013e613aec565b606091505b509150915081613b64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115613bea57808060200190516020811015613b8357600080fd5b8101908080519060200190929190505050613be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613da3602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015613c325750808214155b9250505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365476f6c66663a20546f74616c207374616b6520616d6f756e74206c6172676572207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582086b29e7665c56f4977c14dabf1d72b14e292dd260a0c1aca475fe5b74aba415264736f6c63430005100032
Deployed Bytecode Sourcemap
12349:8426:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12349:8426:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18906:354;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18906:354:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13331:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13331:50:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11716:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11716:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8728:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8728:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12546:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8211:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8886:304;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8886:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16943:1345;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16943:1345:0;;;;;;;;;;;;;;;;;:::i;:::-;;11902:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9196:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9196:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19869:903;;;:::i;:::-;;14198:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14198:133:0;;;;;;;;;;;;;;;;;:::i;:::-;;15000:125;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13915:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12783:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12657:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8308:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8308:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19268:554;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19268:554:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12699:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14673:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14673:175:0;;;;;;;;;;;;;;;;;:::i;:::-;;14506:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14506:159:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18375:472;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18375:472:0;;;;;;;;;;;;;;;;;:::i;:::-;;11807:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11807:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13302:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9412:261;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9412:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8424:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8424:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14339:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14339:159:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14017:173;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15669:1159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15669:1159:0;;;;;;;;;;;;;;;;;:::i;:::-;;15199:296;;;:::i;:::-;;8588:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8588:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15542:86;;;:::i;:::-;;13035:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13035:55:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12815:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12625;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12518:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18906:354;18957:7;18977:15;18995:82;13428:6;18995:66;19025:17;:23;19043:4;19025:23;;;;;;;;;;;;;;;:35;;;18995:6;:24;;;:29;;:66;;;;:::i;:::-;:71;;:82;;;;:::i;:::-;18977:100;;19103:17;:23;19121:4;19103:23;;;;;;;;;;;;;;;:30;;;19092:7;:41;19088:165;;19157:1;19150:8;;;;;19088:165;19198:43;19210:17;:23;19228:4;19210:23;;;;;;;;;;;;;;;:30;;;19198:7;:11;;:43;;;;:::i;:::-;19191:50;;;18906:354;;;;:::o;13331:50::-;;;;;;;;;;;;;;;;;:::o;11716:83::-;11753:13;11786:5;11779:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11716:83;:::o;8728:152::-;8794:4;8811:39;8820:12;:10;:12::i;:::-;8834:7;8843:6;8811:8;:39::i;:::-;8868:4;8861:11;;8728:152;;;;:::o;12546:70::-;;;;;;;;;;;;;:::o;8211:91::-;8255:7;8282:12;;8275:19;;8211:91;:::o;8886:304::-;8975:4;8992:36;9002:6;9010:9;9021:6;8992:9;:36::i;:::-;9039:121;9048:6;9056:12;:10;:12::i;:::-;9070:89;9108:6;9070:89;;;;;;;;;;;;;;;;;:11;:19;9082:6;9070:19;;;;;;;;;;;;;;;:33;9090:12;:10;:12::i;:::-;9070:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9039:8;:121::i;:::-;9178:4;9171:11;;8886:304;;;;;:::o;16943:1345::-;17018:25;17024:10;17036:6;17018:5;:25::i;:::-;17081:11;:9;:11::i;:::-;17122:17;:29;17140:10;17122:29;;;;;;;;;;;;;;;:41;;;17112:6;:51;;17103:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17194:15;17212:6;17194:24;;17231:15;17249:5;;;;;;;;;;;:15;;;17273:4;17249:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17249:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17249:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17249:30:0;;;;;;;;;;;;;;;;17231:48;;17382:7;17372;:17;17368:387;;;17406:17;17426:20;17438:7;17426;:11;;:20;;;;:::i;:::-;17406:40;;17484:10;;;;;;;;;;;17461:43;;;17513:5;;;;;;;;;;;17521:9;17461:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17461:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17461:70:0;;;;17546:14;17563:5;;;;;;;;;;;:15;;;17587:4;17563:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17563:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17563:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17563:30:0;;;;;;;;;;;;;;;;17546:47;;17608:13;17624:19;17635:7;17624:6;:10;;:19;;;;:::i;:::-;17608:35;;17670:9;17662:5;:17;17658:86;;;17710:18;17722:5;17710:7;:11;;:18;;;;:::i;:::-;17700:28;;17658:86;17368:387;;;;17842:94;17885:50;13428:6;17885:35;17913:6;17885;:23;;;:27;;:35;;;;:::i;:::-;:39;;:50;;;;:::i;:::-;17842:17;:29;17860:10;17842:29;;;;;;;;;;;;;;;:37;;;:42;;:94;;;;:::i;:::-;17803:17;:29;17821:10;17803:29;;;;;;;;;;;;;;;:36;;:133;;;;18030:56;18079:6;18030:17;:30;18048:11;18030:30;;;;;;;;;;;;;;;:43;;;:48;;:56;;;;:::i;:::-;17986:17;:29;18004:10;17986:29;;;;;;;;;;;;;;;:41;;:100;;;;18159:35;18187:6;18159;:23;;;:27;;:35;;;;:::i;:::-;18133:6;:23;;:61;;;;18241:39;18260:10;18272:7;18241:5;;;;;;;;;;;:18;;;;:39;;;;;:::i;:::-;16943:1345;;;:::o;11902:83::-;11943:5;11968:9;;;;;;;;;;;11961:16;;11902:83;:::o;9196:210::-;9276:4;9293:83;9302:12;:10;:12::i;:::-;9316:7;9325:50;9364:10;9325:11;:25;9337:12;:10;:12::i;:::-;9325:25;;;;;;;;;;;;;;;:34;9351:7;9325:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9293:8;:83::i;:::-;9394:4;9387:11;;9196:210;;;;:::o;19869:903::-;19908:15;19926:18;19933:10;19926:6;:18::i;:::-;19908:36;;19994:88;13428:6;19994:72;20024:17;:29;20042:10;20024:29;;;;;;;;;;;;;;;:41;;;19994:6;:24;;;:29;;:72;;;;:::i;:::-;:77;;:88;;;;:::i;:::-;19955:17;:29;19973:10;19955:29;;;;;;;;;;;;;;;:36;;:127;;;;20141:61;20194:7;20141:17;:30;20159:11;20141:30;;;;;;;;;;;;;;;:47;;;:52;;:61;;;;:::i;:::-;20093:17;:29;20111:10;20093:29;;;;;;;;;;;;;;;:45;;:109;;;;20229:1;20219:7;:11;20215:550;;;20247:20;20276:15;:27;20292:10;20276:27;;;;;;;;;;;;;;;;20270:3;:33;20247:56;;20337:6;20322:12;:21;20318:384;;;20398:21;20422:61;20478:4;20422:50;20465:6;20422:37;20454:4;20422:26;20440:7;20422:12;:17;;:26;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;:42;;:50;;;;:::i;:::-;:55;;:61;;;;:::i;:::-;20398:85;;20502:19;20524:26;20536:13;20524:7;:11;;:26;;;;:::i;:::-;20502:48;;20569:75;20609:10;;;;;;;;;;;20586:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20586:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20586:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20586:44:0;;;;;;;;;;;;;;;;20632:11;20569:3;;;;;;;;;;;:16;;;;:75;;;;;:::i;:::-;20673:13;20663:23;;20318:384;;;20716:37;20733:10;20745:7;20716:3;;;;;;;;;;;:16;;;;:37;;;;;:::i;:::-;20215:550;;19869:903;:::o;14198:133::-;14270:10;;;;;;;;;;;14256:24;;:10;:24;;;14248:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14319:4;14313:3;:10;;;;14198:133;:::o;15000:125::-;15042:7;15069:48;12687:5;15069:39;15104:3;;15069:5;;;;;;;;;;;:15;;;15093:4;15069:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15069:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15069:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15069:30:0;;;;;;;;;;;;;;;;:34;;:39;;;;:::i;:::-;:43;;:48;;;;:::i;:::-;15062:55;;15000:125;:::o;13915:94::-;13960:7;13995:5;;;;;;;;;;;13980:21;;13915:94;:::o;12783:25::-;;;;;;;;;;;;;:::o;12657:35::-;12687:5;12657:35;:::o;8308:110::-;8365:7;8392:9;:18;8402:7;8392:18;;;;;;;;;;;;;;;;8385:25;;8308:110;;;:::o;19268:554::-;19351:7;19371:25;19399:90;19428:59;19463:6;:23;;;19428:30;13428:6;19428:15;:19;;:30;;;;:::i;:::-;:34;;:59;;;;:::i;:::-;19399:6;:23;;;:27;;:90;;;;:::i;:::-;19371:118;;19500:15;19518:75;13428:6;19518:59;19541:17;:23;19559:4;19541:23;;;;;;;;;;;;;;;:35;;;19518:17;:22;;:59;;;;:::i;:::-;:64;;:75;;;;:::i;:::-;19500:93;;19614:25;19626:12;19633:4;19626:6;:12::i;:::-;19614:7;:11;;:25;;;;:::i;:::-;19604:35;;19665:17;:23;19683:4;19665:23;;;;;;;;;;;;;;;:30;;;19654:7;:41;19650:165;;19719:1;19712:8;;;;;;19650:165;19760:43;19772:17;:23;19790:4;19772:23;;;;;;;;;;;;;;;:30;;;19760:7;:11;;:43;;;;:::i;:::-;19753:50;;;;19268:554;;;;;:::o;12699:29::-;;;;:::o;14673:175::-;14765:10;;;;;;;;;;;14751:24;;:10;:24;;;14743:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14825:15;14808:14;:32;;;;14673:175;:::o;14506:159::-;14590:10;;;;;;;;;;;14576:24;;:10;:24;;;14568:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14646:11;14633:10;;:24;;;;;;;;;;;;;;;;;;14506:159;:::o;18375:472::-;18452:1;18443:6;:10;18435:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18514:1;18488:6;:23;;;:27;18480:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18570:55;18591:10;18611:4;18618:6;18570:3;;;;;;;;;;;:20;;;;:55;;;;;;:::i;:::-;18662:103;18704:50;18730:6;:23;;;18704:21;13428:6;18704;:10;;:21;;;;:::i;:::-;:25;;:50;;;;:::i;:::-;18662:6;:23;;;:27;;:103;;;;:::i;:::-;18636:6;:23;;:129;;;;18803:36;18832:6;18803;:24;;;:28;;:36;;;;:::i;:::-;18776:6;:24;;:63;;;;18375:472;:::o;11807:87::-;11846:13;11879:7;11872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:87;:::o;13302:20::-;;;;;;;;;;;;;;;;;;;:::o;9412:261::-;9497:4;9514:129;9523:12;:10;:12::i;:::-;9537:7;9546:96;9585:15;9546:96;;;;;;;;;;;;;;;;;:11;:25;9558:12;:10;:12::i;:::-;9546:25;;;;;;;;;;;;;;;:34;9572:7;9546:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9514:8;:129::i;:::-;9661:4;9654:11;;9412:261;;;;:::o;8424:158::-;8493:4;8510:42;8520:12;:10;:12::i;:::-;8534:9;8545:6;8510:9;:42::i;:::-;8570:4;8563:11;;8424:158;;;;:::o;14339:159::-;14423:10;;;;;;;;;;;14409:24;;:10;:24;;;14401:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14479:11;14466:10;;:24;;;;;;;;;;;;;;;;;;14339:159;:::o;14017:173::-;14057:7;14084:98;14143:10;;;;;;;;;;;14120:44;;;14173:5;;;;;;;;;;;14120:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14120:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14120:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14120:60:0;;;;;;;;;;;;;;;;14084:5;;;;;;;;;;;:15;;;14108:4;14084:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14084:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14084:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14084:30:0;;;;;;;;;;;;;;;;:34;;:98;;;;:::i;:::-;14077:105;;14017:173;:::o;15669:1159::-;15768:15;15786:5;;;;;;;;;;;:15;;;15810:4;15786:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15786:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15786:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15786:30:0;;;;;;;;;;;;;;;;15768:48;;15827:58;15850:10;15870:4;15877:7;15827:5;;;;;;;;;;;:22;;;;:58;;;;;;:::i;:::-;15896:14;15913:5;;;;;;;;;;;:15;;;15937:4;15913:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15913:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15913:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15913:30:0;;;;;;;;;;;;;;;;15896:47;;15964:19;15975:7;15964:6;:10;;:19;;;;:::i;:::-;15954:29;;16004:26;16010:10;16022:7;16004:5;:26::i;:::-;16043:30;16076:17;:29;16094:10;16076:29;;;;;;;;;;;;;;;16043:62;;16180:36;16208:7;16180:11;:23;;;:27;;:36;;;;:::i;:::-;16154:11;:23;;:62;;;;16260:1;16233:6;:23;;;:28;16229:233;;16357:93;16381:67;16445:1;16381:58;13428:6;16381:43;16422:1;16381:36;16409:7;16381:6;:23;;;:27;;:36;;;;:::i;:::-;:40;;:43;;;;:::i;:::-;:47;;:58;;;;:::i;:::-;:62;;:67;;;;:::i;:::-;16357:11;:18;;;:22;;:93;;;;:::i;:::-;16336:11;:18;;:114;;;;16229:233;16531:36;16559:7;16531:6;:23;;;:27;;:36;;;;:::i;:::-;16505:6;:23;;:62;;;;16689:14;;16656:5;;;;;;;;;;;:15;;;16680:4;16656:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16656:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16656:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16656:30:0;;;;;;;;;;;;;;;;:47;16652:86;;;16720:6;:4;:6::i;:::-;16652:86;16817:3;16787:15;:27;16803:10;16787:27;;;;;;;;;;;;;;;:33;;;;15669:1159;;;;:::o;15199:296::-;15291:12;15306:11;:9;:11::i;:::-;15291:26;;15328:36;15347:10;;;;;;;;;;;15359:4;15328:5;;;;;;;;;;;:18;;;;:36;;;;;:::i;:::-;15449:10;;;;;;;;;;;15426:39;;;15474:5;;;;;;;;;;;15482:4;15426:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15426:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15426:61:0;;;;15199:296;:::o;8588:134::-;8660:7;8687:11;:18;8699:5;8687:18;;;;;;;;;;;;;;;:27;8706:7;8687:27;;;;;;;;;;;;;;;;8680:34;;8588:134;;;;:::o;15542:86::-;15584:36;15592:5;;;;;;;;;;;:15;;;15608:10;15592:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15592:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15592:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15592:27:0;;;;;;;;;;;;;;;;15584:7;:36::i;:::-;15542:86::o;13035:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12815:25::-;;;;;;;;;;;;;:::o;12625:::-;;;;:::o;12518:19::-;;;;;;;;;;;;;:::o;1062:471::-;1120:7;1370:1;1365;:6;1361:47;;;1395:1;1388:8;;;;1361:47;1420:9;1436:1;1432;:5;1420:17;;1465:1;1460;1456;:5;;;;;;:10;1448:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:1;1517:8;;;1062:471;;;;;:::o;1541:132::-;1599:7;1626:39;1630:1;1633;1626:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1619:46;;1541:132;;;;:::o;710:136::-;768:7;795:43;799:1;802;795:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;788:50;;710:136;;;;:::o;2616:98::-;2661:15;2696:10;2689:17;;2616:98;:::o;10824:338::-;10935:1;10918:19;;:5;:19;;;;10910:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11016:1;10997:21;;:7;:21;;;;10989:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11100:6;11070:11;:18;11082:5;11070:18;;;;;;;;;;;;;;;:27;11089:7;11070:27;;;;;;;;;;;;;;;:36;;;;11138:7;11122:32;;11131:5;11122:32;;;11147:6;11122:32;;;;;;;;;;;;;;;;;;10824:338;;;:::o;9679:471::-;9795:1;9777:20;;:6;:20;;;;9769:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9879:1;9858:23;;:9;:23;;;;9850:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9954;9976:6;9954:71;;;;;;;;;;;;;;;;;:9;:17;9964:6;9954:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9934:9;:17;9944:6;9934:17;;;;;;;;;;;;;;;:91;;;;10059:32;10084:6;10059:9;:20;10069:9;10059:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10036:9;:20;10046:9;10036:20;;;;;;;;;;;;;;;:55;;;;10124:9;10107:35;;10116:6;10107:35;;;10135:6;10107:35;;;;;;;;;;;;;;;;;;9679:471;;;:::o;860:194::-;948:7;981:1;976;:6;;984:12;968:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;968:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1008:9;1024:1;1020;:5;1008:17;;1045:1;1038:8;;;860:194;;;;;:::o;10470:348::-;10565:1;10546:21;;:7;:21;;;;10538:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10639:68;10662:6;10639:68;;;;;;;;;;;;;;;;;:9;:18;10649:7;10639:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;10618:9;:18;10628:7;10618:18;;;;;;;;;;;;;;;:89;;;;10733:24;10750:6;10733:12;;:16;;:24;;;;:::i;:::-;10718:12;:39;;;;10799:1;10773:37;;10782:7;10773:37;;;10803:6;10773:37;;;;;;;;;;;;;;;;;;10470:348;;:::o;521:181::-;579:7;599:9;615:1;611;:5;599:17;;640:1;635;:6;;627:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:1;686:8;;;521:181;;;;:::o;5939:166::-;6015:87;6035:5;6065;:14;;;:23;;;;6090:2;6094:5;6042:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6042:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;6042:58:0;6015:18;:87::i;:::-;5939:166;;;:::o;6111:194::-;6205:97;6225:5;6255;:18;;;:27;;;;6284:4;6290:2;6294:5;6232:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6232:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;6232:68:0;6205:18;:97::i;:::-;6111:194;;;;:::o;10156:308::-;10251:1;10232:21;;:7;:21;;;;10224:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10317:24;10334:6;10317:12;;:16;;:24;;;;:::i;:::-;10302:12;:39;;;;10373:30;10396:6;10373:9;:18;10383:7;10373:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10352:9;:18;10362:7;10352:18;;;;;;;;;;;;;;;:51;;;;10440:7;10419:37;;10436:1;10419:37;;;10449:6;10419:37;;;;;;;;;;;;;;;;;;10156:308;;:::o;1681:347::-;1769:7;1868:1;1864;:5;1871:12;1856:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1856:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1895:9;1911:1;1907;:5;;;;;;1895:17;;2019:1;2012:8;;;1681:347;;;;;:::o;7298:662::-;7388:27;7396:5;7388:25;;;:27::i;:::-;7380:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7525:12;7539:23;7574:5;7566:19;;7586:4;7566:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7566:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7524:67:0;;;;7610:7;7602:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7691:1;7671:10;:17;:21;7667:286;;;7844:10;7833:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7833:30:0;;;;;;;;;;;;;;;;7807:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7667:286;7298:662;;;;:::o;4228:412::-;4288:4;4305:16;4338:19;4370:66;4338:98;;;;4552:7;4540:20;4528:32;;4601:3;4589:15;;:8;:15;;:42;;;;;4620:11;4608:8;:23;;4589:42;4581:51;;;;4228:412;;;:::o
Swarm Source
bzzr://86b29e7665c56f4977c14dabf1d72b14e292dd260a0c1aca475fe5b74aba4152
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.